回到简体

This commit is contained in:
chai2010
2016-02-15 11:06:34 +08:00
parent 9e878f9944
commit 2b37b23285
177 changed files with 2354 additions and 2354 deletions

View File

@@ -1,16 +1,16 @@
## Go語言項
## Go语言项
所有的編程語言都反映了語言設計者對編程哲的反思,通常包括之前的言所暴露的一些不足地方的改。Go目是在Google公司維護超級複雜的幾個軟件繫統遇到的一些問題的反思(但是這類問題絶不是Google公司所特有的
所有的编程语言都反映了语言设计者对编程哲的反思,通常包括之前的言所暴露的一些不足地方的改。Go目是在Google公司维护超级复杂的几个软件系统遇到的一些问题的反思(但是这类问题绝不是Google公司所特有的
正如[Rob Pike](http://genius.cat-v.org/rob-pike/)所,“件的複雜性是乘法級相關的”,通增加一部分的複雜性來脩複問題通常慢慢地增加其他部分的複雜性。通增加功能和選項和配置是脩複問題的最快的途,但是很容易人忘記簡潔的內涵,卽使從長遠來看,簡潔依然是好件的關鍵因素。
正如[Rob Pike](http://genius.cat-v.org/rob-pike/)所,“件的复杂性是乘法级相关的”,通增加一部分的复杂性来修复问题通常慢慢地增加其他部分的复杂性。通增加功能和选项和配置是修复问题的最快的途,但是很容易人忘记简洁的内涵,即使从长远来看,简洁依然是好件的关键因素。
簡潔的設計需要在工作始的候舍不必要的想法,且在件的生命週期內嚴格區别好的改變或壞的改。通過足夠的努力,一好的改可以在不破原有完整概念的前提下保持自適應,正如[Fred Brooks](http://www.cs.unc.edu/~brooks/)所的“概念完整性”;而一個壞的改變則不能達到這個效果,它們僅僅是通過膚淺的和簡單的妥協來破壞原有設計的一致性。有通過簡潔的設計,才能讓一個繫統保持定、安全和持續的進化。
简洁的设计需要在工作始的候舍不必要的想法,且在件的生命周期内严格区别好的改变或坏的改。通过足够的努力,一好的改可以在不破原有完整概念的前提下保持自适应,正如[Fred Brooks](http://www.cs.unc.edu/~brooks/)所的“概念完整性”;而一个坏的改变则不能达到这个效果,它们仅仅是通过肤浅的和简单的妥协来破坏原有设计的一致性。有通过简洁的设计,才能让一个系统保持定、安全和持续的进化。
Go目包括編程語言本身,附了相的工具和標準庫,最後但併非代表不重要的,關於簡潔編程哲的宣言。就事後諸葛的角度Go言的些地方都做的還不錯:擁有自垃圾收、一個包繫統、函數作爲一等公民、法作用域、繫統調用接口、隻讀的UTF8字符串等。但是Go言本身有很少的特性,也不太可能添加太多的特性。例如,它沒有隱式的數值轉換,沒有構造函和析構函數,沒有運算符重載,沒有默認參數,也沒有繼承,有泛型,沒有異常,有宏,有函數脩飾,更沒有線程局部存。但是言本身是成熟和定的,而且承諾保證向後兼容用之前的Go語言編寫程序可以用新版本的Go語言編譯器和標準庫直接建而不需要改代
Go目包括编程语言本身,附了相的工具和标准库,最后但并非代表不重要的,关于简洁编程哲的宣言。就事后诸葛的角度Go言的些地方都做的还不错:拥有自垃圾收、一个包系统、函数作为一等公民、法作用域、系统调用接口、只读的UTF8字符串等。但是Go言本身有很少的特性,也不太可能添加太多的特性。例如,它没有隐式的数值转换,没有构造函和析构函数,没有运算符重载,没有默认参数,也没有继承,有泛型,没有异常,有宏,有函数修饰,更没有线程局部存。但是言本身是成熟和定的,而且承诺保证向后兼容用之前的Go语言编写程序可以用新版本的Go语言编译器和标准库直接建而不需要改代
Go言有足夠的類型繫統以避免動態語言中那些粗心的類型錯誤但是Go言的類型繫統相比傳統的強類型語言又要簡潔很多。然有時候這會導致一個“無類型”的抽象型概念但是Go言程序員併不需要像C++或Haskell程序員那樣糾結於具體類型的安全性。在實踐中Go語言簡潔的類型繫統給了程序員帶來了更多的安全性和更好的運行時性能。
Go言有足够的类型系统以避免动态语言中那些粗心的类型错误但是Go言的类型系统相比传统的强类型语言又要简洁很多。然有时候这会导致一个“无类型”的抽象型概念但是Go言程序员并不需要像C++或Haskell程序员那样纠结于具体类型的安全性。在实践中Go语言简洁的类型系统给了程序员带来了更多的安全性和更好的运行时性能。
Go言鼓勵當代計算機繫統設計的原,特别是局部的重要性。它的內置數據類型和大多數的準庫數據結構都經過精心設計而避免式的初始化或式的造函,因很少的存分配和存初始化代碼被隱藏在庫代碼中了。Go言的聚合型(結構體和數組)可以直接操作它的元素,需要更少的存儲空間、更少的存分配,而且指操作比其他接操作的言也更有效率。由於現代計算機是一個併行的Go言提供了基CSP的併發特性支持。Go言的動態棧使得輕量級線程goroutine的初始可以很小,因此建一goroutine的代很小,建百萬級的goroutine完全是可行的。
Go言鼓励当代计算机系统设计的原,特别是局部的重要性。它的内置数据类型和大多数的准库数据结构都经过精心设计而避免式的初始化或式的造函,因很少的存分配和存初始化代码被隐藏在库代码中了。Go言的聚合型(结构体和数组)可以直接操作它的元素,需要更少的存储空间、更少的存分配,而且指操作比其他接操作的言也更有效率。由于现代计算机是一个并行的Go言提供了基CSP的并发特性支持。Go言的动态栈使得轻量级线程goroutine的初始可以很小,因此建一goroutine的代很小,建百万级的goroutine完全是可行的。
Go言的標準庫(通常被稱爲語言自帶的電池),提供了清晰的建模和公共接口包含I/O操作、文本理、像、密碼學、網絡和分布式用程序等,支持許多標準化的文件格式和編解碼協議。庫和工具使用了大量的約定來減少額外的配置和解釋,從而最終簡化程序的邏輯,而且每Go程序結構都是如此的相似因此Go程序也很容易學習。使用Go言自工具建Go語言項目隻需要使用文件名和標識符名, 一個偶爾的特殊註釋來確定所有的、可行文件、測試、基準測試、例子、以及特定平台的量、目的文Go言源代本身就包含了構建規范。
Go言的标准库(通常被称为语言自带的电池),提供了清晰的建模和公共接口包含I/O操作、文本理、像、密码学、网络和分布式用程序等,支持许多标准化的文件格式和编解码协议。库和工具使用了大量的约定来减少额外的配置和解释,从而最终简化程序的逻辑,而且每Go程序结构都是如此的相似因此Go程序也很容易学习。使用Go言自工具建Go语言项目只需要使用文件名和标识符名, 一个偶尔的特殊注释来确定所有的、可行文件、测试、基准测试、例子、以及特定平台的量、目的文Go言源代本身就包含了构建规范。