This commit is contained in:
chai2010
2016-01-05 16:26:22 +08:00
parent 666f57bed5
commit 786a1c9396
4 changed files with 7 additions and 7 deletions

View File

@@ -2,9 +2,9 @@
所有的編程語言都反映了語言設計者對編程哲學的反思通常包括之前的語言所暴露的一些不足地方的改進。Go項目是在Google公司維護超級複雜的幾個軟件繫統遇到的一些問題的反思但是這類問題絶不是Google公司所特有的
正如Rob Pike所説“軟件的複雜性是乘法級相關的”通過增加一個部分的複雜性來脩複問題通常將慢慢地增加其他部分的複雜性。通過增加功能和選項和配置是脩複問題的最快的途徑但是這很容易讓人忘記簡潔的內涵卽使從長遠來看簡潔依然是好軟件的關鍵因素。
正如[Rob Pike](http://genius.cat-v.org/rob-pike/)所説,“軟件的複雜性是乘法級相關的”,通過增加一個部分的複雜性來脩複問題通常將慢慢地增加其他部分的複雜性。通過增加功能和選項和配置是脩複問題的最快的途徑,但是這很容易讓人忘記簡潔的內涵,卽使從長遠來看,簡潔依然是好軟件的關鍵因素。
簡潔的設計需要在工作開始的時候舍棄不必要的想法併且在軟件的生命週期內嚴格區别好的改變或壞的改變。通過足夠的努力一個好的改變可以在不破壞原有完整概念的前提下保持自適應正如Fred Brooks所説的“概念完整性”而一個壞的改變則不能達到這個效果它們僅僅是通過膚淺的和簡單的妥協來破壞原有設計的一致性。隻有通過簡潔的設計才能讓一個繫統保持穩定、安全和持續的進化。
簡潔的設計需要在工作開始的時候舍棄不必要的想法,併且在軟件的生命週期內嚴格區别好的改變或壞的改變。通過足夠的努力,一個好的改變可以在不破壞原有完整概念的前提下保持自適應,正如[Fred Brooks](http://www.cs.unc.edu/~brooks/)所説的“概念完整性”;而一個壞的改變則不能達到這個效果,它們僅僅是通過膚淺的和簡單的妥協來破壞原有設計的一致性。隻有通過簡潔的設計,才能讓一個繫統保持穩定、安全和持續的進化。
Go項目包括編程語言本身附帶了相關的工具和標準庫最後但併非代表不重要的關於簡潔編程哲學的宣言。就事後諸葛的角度來看Go語言的這些地方都做的還不錯擁有自動垃圾迴收、一個包繫統、函數作爲一等公民、詞法作用域、繫統調用接口、隻讀的UTF8字符串等。但是Go語言本身隻有很少的特性也不太可能添加太多的特性。例如它沒有隱式的數值轉換沒有構造函數和析構函數沒有運算符重載沒有默認參數也沒有繼承沒有泛型沒有異常沒有宏沒有函數脩飾更沒有線程局部存儲。但是語言本身是成熟和穩定的而且承諾保證向後兼容用之前的Go語言編寫程序可以用新版本的Go語言編譯器和標準庫直接構建而不需要脩改代碼。