关于Golang

  • By v2ray节点

  • 2024-04-25 23:57:20

  • 评论

所有编程语言都反映了其创建者的编程哲学,其中通常包括对早期语言的缺点的反应的重要组成部分。 Go 项目因谷歌的几个软件系统因复杂性爆炸而遭受挫折。 (这个问题绝不是 Google 所独有的。)

正如罗布·派克(Rob Pike)所说,“复杂性是乘性的”:通过使系统的一部分慢慢变得复杂来解决问题,但肯定会增加其他部分的复杂性。 由于添加功能、选项和配置以及快速交付代码的压力不断,人们很容易忽视简单性,尽管从长远来看,简单性是优秀软件的关键。

简单性要求在项目开始时进行更多的工作,以将想法简化为本质,并在项目的整个生命周期中进行更多的纪律,以区分好的变化与坏的或有害的变化。 只要付出足够的努力,就可以在不损害 Fred Brooks 所说的设计“概念完整性”的情况下适应良好的变化,但巴德变化却不能,而完美的变化会牺牲简单性来换取其浅薄的表弟, 方便。 只有通过简单的设计,系统才能在发展过程中保持稳定、安全和连贯。

Go 项目包括语言本身、它的工具和标准库,最后但并非最不重要的是,一个极其简单的文化议程。 作为一种新近出现的高级语言,Go 有事后诸葛亮的好处,并且基础知识做得很好:它有垃圾收集、包系统、一流函数、词法作用域、系统调用接口和不可变字符串。 该文本通常采用 UTF-8 编码。 但它的功能相对较少,而且不太可能添加更多功能。 例如,它没有隐式数字转换,没有构造函数或析构函数,没有运算符重载,没有默认参数值,没有继承,没有泛型,没有异常,没有宏,没有函数注释,也没有线程本地存储。 该语言成熟稳定,并保证向后兼容性:较旧的 Go 程序可以使用较新版本的编译器和标准库进行编译和运行。

Go有足够的类型系统来避免动态语言中困扰程序开发人员的大多数粗心错误,但它的类型系统比类似的类型语言更简单。这种方法有时会在更广泛的类型框架内导致孤立的“非类型化”编程,Go程序员不会像C++或Haskell程序员那样将安全属性表示为基于类型的证明。但在实践中,Go为程序员提供了相对强大的类型系统的许多安全性和运行时性能优势,而没有复杂系统的负担。

Go 鼓励人们对当代计算机系统设计的认识,特别是局部性的重要性。 它的内置数据类型和大多数库数据结构都经过精心设计,无需显式初始化或隐式构造函数即可自然工作,因此代码中隐藏的内存分配和内存写入相对较少。 Go 的聚合类型(结构和数组)直接保存其元素,与使用间接字段的语言相比,需要更少的存储、分配和指针间接。 而且由于现代计算机是并行机器,因此如前所述,Go 具有基于 CSP 的并发特性。 Go 的轻量级线程或 goroutine 的可变大小堆栈最初足够小,因此创建一个 goroutine 很便宜,创建一百万个 goroutine 也很实用。

Go 的标准库通常被描述为“自带电池”,为 I/O、文本处理、图形、加密、网络和分布式应用程序提供了干净的构建块和 API,并支持许多标准文件格式和协议。 这些库和工具大量使用约定来减少配置和解释的需要,从而简化程序逻辑,使不同的Go程序彼此更加相似,从而更容易学习。 使用 go 工具构建的项目仅使用文件和标识符名称以及偶尔的特殊注释来确定项目的所有库、可执行文件、测试、基准测试、示例、特定于平台的变体和文档; Go 源代码本身包含构建规范。


v2ray节点购买