From 4dd801ed17376d1a613585215f799d4b9df8db34 Mon Sep 17 00:00:00 2001 From: chai2010 Date: Tue, 5 Jan 2016 13:30:57 +0800 Subject: [PATCH] zz --- CONTRIBUTORS.md | 28 ++++++---------------------- SUMMARY-github.md | 2 +- SUMMARY.md | 2 +- appendix/appendix.md | 26 ++++++++++++++++++++++++++ ch0/ch0-01.md | 10 +++++----- ch0/ch0-05.md | 2 +- ch1/ch1-01.md | 2 +- images/favicon.ico | Bin 0 -> 1150 bytes preface.md | 4 ++-- 9 files changed, 43 insertions(+), 33 deletions(-) create mode 100644 appendix/appendix.md create mode 100644 images/favicon.ico diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 59dfe78..a52adfc 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -1,27 +1,11 @@ -# 原文作者 +# 貢獻者 -## Alan A. A. Donovan - -![Alan.Donovan](./images/Alan.Donovan.png) - -**Alan A. A. Donovan** is a member of Google’s Go team in New York. He holds computer science degrees from Cambridge and MIT and has been programming in industry since 1996. Since 2005, he has worked at Google on infrastructure projects and was the co-designer of its proprietary build system, Blaze. He has built many libraries and tools for static analysis of Go programs, including oracle, godoc -analysis, eg, and gorename. - -## Brian W. Kernighan - -![Brian W. Kernighan](./images/Brian.W.Kernighan.png) - -**Brian W. Kernighan** is a professor in the Computer Science Department at Princeton University. He was a member of technical staff in the Computing Science Research Center at Bell Labs from 1969 until 2000, where he worked on languages and tools for Unix. He is the co-author of several books, including The C Programming Language, Second Edition (Prentice Hall, 1988), and The Practice of Programming (Addison-Wesley, 1999). - -------- - -# 中文譯者 - -中文譯者 | 章節 +譯者 | 章節 -------------------------------------- | ------------------------- -`chai2010 ` | 前言/第二章/第三章/第四章/第十章/第十一章/第十二章/第十三章 -`CrazySssst` | 第三章(0節)/第五章 -`foreversmart ` | 第七章(0節/1節/2節) -`Xargin ` | 第一章/第六章/第八章/第九章 +`chai2010 ` | 前言/第2~4章/第10~13章 +`CrazySssst` | 第5章 +`foreversmart ` | 第7章 +`Xargin ` | 第1章/第6章/第8~9章 # 譯文授權 diff --git a/SUMMARY-github.md b/SUMMARY-github.md index 3f47933..515d37e 100644 --- a/SUMMARY-github.md +++ b/SUMMARY-github.md @@ -167,4 +167,4 @@ * [13.3. 示例: 深度相等判斷](ch13/ch13-03.md) * [13.4. 通過cgo調用C代碼](ch13/ch13-04.md) * [13.5. 幾點忠告](ch13/ch13-05.md) -* [附録](CONTRIBUTORS.md) +* [附録](appendix/appendix.md) diff --git a/SUMMARY.md b/SUMMARY.md index 2380612..da71f78 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -122,4 +122,4 @@ * [示例: 深度相等判斷](ch13/ch13-03.md) * [通過cgo調用C代碼](ch13/ch13-04.md) * [幾點忠告](ch13/ch13-05.md) -* [附録](CONTRIBUTORS.md) +* [附録](appendix/appendix.md) diff --git a/appendix/appendix.md b/appendix/appendix.md new file mode 100644 index 0000000..2b02c93 --- /dev/null +++ b/appendix/appendix.md @@ -0,0 +1,26 @@ +## 附録:作者/譯者 + +### 英文作者 + +- [**Alan A. A. Donovan**](https://github.com/adonovan) is a member of [Google’s Go](https://golang.org/) team in New York. He holds computer science degrees from Cambridge and MIT and has been programming in industry since 1996. Since 2005, he has worked at Google on infrastructure projects and was the co-designer of its proprietary build system, [Blaze](http://bazel.io/). He has built many libraries and tools for static analysis of Go programs, including [oracle](https://godoc.org/golang.org/x/tools/oracle), [`godoc -analysis`](https://godoc.org/golang.org/x/tools/cmd/godoc), eg, and [gorename](https://godoc.org/golang.org/x/tools/cmd/gorename). +- [**Brian W. Kernighan**](http://www.cs.princeton.edu/~bwk/) is a professor in the Computer Science Department at Princeton University. He was a member of technical staff in the Computing Science Research Center at [Bell Labs](http://www.cs.bell-labs.com/) from 1969 until 2000, where he worked on languages and tools for [Unix](http://doc.cat-v.org/unix/). He is the co-author of several books, including [The C Programming Language, Second Edition (Prentice Hall, 1988)](http://s3-us-west-2.amazonaws.com/belllabs-microsite-dritchie/cbook/index.html), and [The Practice of Programming (Addison-Wesley, 1999)](https://en.wikipedia.org/wiki/The_Practice_of_Programming). + +------- + +### 中文譯者 + +中文譯者 | 章節 +-------------------------------------- | ------------------------- +`chai2010 ` | 前言/第2~4章/第10~13章 +`CrazySssst` | 第5章 +`foreversmart ` | 第7章 +`Xargin ` | 第1章/第6章/第8~9章 + +------- + +## 譯文授權 + +除特别註明外, 本站內容均采用[知識共享-署名(CC-BY) 3.0協議](http://creativecommons.org/licenses/by/3.0/)授權, 代碼遵循[Go項目的BSD協議](http://golang.org/LICENSE)授權. + +Creative Commons License + diff --git a/ch0/ch0-01.md b/ch0/ch0-01.md index eb11c36..2daf9a9 100644 --- a/ch0/ch0-01.md +++ b/ch0/ch0-01.md @@ -8,12 +8,12 @@ Go語言有時候被描述爲“C類似語言”,或者是“21世紀的C語言”。Go從C語言繼承了相似的表達式語法、控製流結構、基礎數據類型、調用參數傳值、指針等很多思想,還有C語言一直所看中的編譯後機器碼的運行效率以及和現有操作繫統的無縫適配。 -但是在Go語言的家族樹中還有其它的祖先。其中一個有影響力的分支來自Niklaus Wirth所設計的Pascal語言。然後Modula-2語言激發了包的概念。然後Oberon語言 摒棄了模塊接口文件和模塊實現文件之間的區别。第二代的Oberon-2語言直接影響了包的導入和聲明的語法,還有Oberon語言的面向對象特性所提供的方法的聲明語法等。 +但是在Go語言的家族樹中還有其它的祖先。其中一個有影響力的分支來自[Niklaus Wirth](https://en.wikipedia.org/wiki/Niklaus_Wirth)所設計的[Pascal](https://en.wikipedia.org/wiki/Pascal_(programming_language))語言。然後[Modula-2](https://en.wikipedia.org/wiki/Modula-2)語言激發了包的概念。然後[Oberon](https://en.wikipedia.org/wiki/Oberon_(programming_language))語言摒棄了模塊接口文件和模塊實現文件之間的區别。第二代的[Oberon-2](https://en.wikipedia.org/wiki/Oberon-2_(programming_language))語言直接影響了包的導入和聲明的語法,還有[Oberon](https://en.wikipedia.org/wiki/Oberon_(programming_language))語言的面向對象特性所提供的方法的聲明語法等。 -Go語言的另一支祖先,帶來了Go語言區别其他語言的重要特性,靈感來自於貝爾實驗室的Tony Hoare於1978年發表的鮮爲外界所知的關於併發研究的基礎文獻 *順序通信進程* ( *communicating sequential processes* ,縮寫爲CSP)。在CSP中,程序是一組中間沒有共享狀態的平行運行的處理過程,它們之間使用管道進行通信和控製同步。不過Tony Hoare的CSP隻是一個用於描述併發性基本概念的描述語言,併不是一個可以編寫可執行程序的通用編程語言。 +Go語言的另一支祖先,帶來了Go語言區别其他語言的重要特性,靈感來自於貝爾實驗室的[Tony Hoare](https://en.wikipedia.org/wiki/Tony_Hoare)於1978年發表的鮮爲外界所知的關於併發研究的基礎文獻 *順序通信進程* ( [*communicating sequential processes*](https://en.wikipedia.org/wiki/Communicating_sequential_processes) ,縮寫爲CSP)。在CSP中,程序是一組中間沒有共享狀態的平行運行的處理過程,它們之間使用管道進行通信和控製同步。不過[Tony Hoare](https://en.wikipedia.org/wiki/Tony_Hoare)的CSP隻是一個用於描述併發性基本概念的描述語言,併不是一個可以編寫可執行程序的通用編程語言。 -接下來,Rob Pike和其他人開始不斷嚐試將CSP引入實際的編程語言中。他們第一次嚐試引入CSP特性的編程語言叫Squeak(老鼠間交流的語言),是一個提供鼠標和鍵盤事件處理的編程語言,它的管道是靜態創建的。然後是改進版的Newsqueak語言,提供了類似C語言語句和表達式的語法和類似Pascal語言的推導語法。Newsqueak是一個帶垃圾迴收的純函數式語言,它再次針對鍵盤、鼠標和窗口事件管理。但是在Newsqueak語言中管道是動態創建的,屬於第一類值, 可以保存到變量中。 +接下來,Rob Pike和其他人開始不斷嚐試將CSP引入實際的編程語言中。他們第一次嚐試引入CSP特性的編程語言叫[Squeak](http://doc.cat-v.org/bell_labs/squeak/)(老鼠間交流的語言),是一個提供鼠標和鍵盤事件處理的編程語言,它的管道是靜態創建的。然後是改進版的[Newsqueak](http://doc.cat-v.org/bell_labs/squeak/)語言,提供了類似C語言語句和表達式的語法和類似Pascal語言的推導語法。Newsqueak是一個帶垃圾迴收的純函數式語言,它再次針對鍵盤、鼠標和窗口事件管理。但是在Newsqueak語言中管道是動態創建的,屬於第一類值, 可以保存到變量中。 -在Plan9操作繫統中,這些優秀的想法被吸收到了一個叫Alef的編程語言中。Alef試圖將Newsqueak語言改造爲繫統編程語言,但是因爲缺少垃圾迴收機製而導致併發編程很痛苦。(譯註:在Aelf之後還有一個叫Limbo的編程語言,Go語言從其中借鑒了很多特性。 具體請參考Pike的講稿:http://talks.golang.org/2012/concurrency.slide#9 ) +在Plan9操作繫統中,這些優秀的想法被吸收到了一個叫[Alef](http://doc.cat-v.org/plan_9/2nd_edition/papers/alef/)的編程語言中。Alef試圖將Newsqueak語言改造爲繫統編程語言,但是因爲缺少垃圾迴收機製而導致併發編程很痛苦。(譯註:在Aelf之後還有一個叫[Limbo](http://doc.cat-v.org/inferno/4th_edition/limbo_language/)的編程語言,Go語言從其中借鑒了很多特性。 具體請參考Pike的講稿:http://talks.golang.org/2012/concurrency.slide#9 ) -Go語言的其他的一些特性零散地來自於其他一些編程語言;比如iota語法是從APL語言借鑒,詞法作用域與嵌套函數來自於Scheme語言(和其他很多語言)。當然,我們也可以從Go中發現很多創新的設計。比如Go語言的切片爲動態數組提供了有效的隨機存取的性能,這可能會讓人聯想到鏈表的底層的共享機製。還有Go語言新發明的defer語句。 +Go語言的其他的一些特性零散地來自於其他一些編程語言;比如iota語法是從[APL](https://en.wikipedia.org/wiki/APL_(programming_language))語言借鑒,詞法作用域與嵌套函數來自於[Scheme](https://en.wikipedia.org/wiki/Scheme_(programming_language))語言(和其他很多語言)。當然,我們也可以從Go中發現很多創新的設計。比如Go語言的切片爲動態數組提供了有效的隨機存取的性能,這可能會讓人聯想到鏈表的底層的共享機製。還有Go語言新發明的defer語句。 diff --git a/ch0/ch0-05.md b/ch0/ch0-05.md index 9fc7329..2cb7f75 100644 --- a/ch0/ch0-05.md +++ b/ch0/ch0-05.md @@ -1,6 +1,6 @@ ## 致謝 -Rob Pike和Russ Cox,以及很多其他Go糰隊的覈心成員多次仔細閲讀了本書的手稿,他們對本書的組織結構和表述用詞等給出了很多寶貴的建議。在準備日文版翻譯的時候,Yoshiki Shibata更是仔細地審閲了本書的每個部分,及時發現了諸多英文和代碼的錯誤。我們非常感謝本書的每一位審閲者,併感謝對本書給出了重要的建議的Brian Goetz、Corey Kosak、Arnold Robbins、Josh Bleecher Snyder和Peter Weinberger等人。 +[Rob Pike](http://genius.cat-v.org/rob-pike/)和[Russ Cox](http://research.swtch.com/),以及很多其他Go糰隊的覈心成員多次仔細閲讀了本書的手稿,他們對本書的組織結構和表述用詞等給出了很多寶貴的建議。在準備日文版翻譯的時候,Yoshiki Shibata更是仔細地審閲了本書的每個部分,及時發現了諸多英文和代碼的錯誤。我們非常感謝本書的每一位審閲者,併感謝對本書給出了重要的建議的Brian Goetz、Corey Kosak、Arnold Robbins、Josh Bleecher Snyder和Peter Weinberger等人。 我們還感謝Sameer Ajmani、Ittai Balaban、David Crawshaw、Billy Donohue、Jonathan Feinberg、Andrew Gerrand、Robert Griesemer、John Linderman、Minux Ma(譯註:中国人,Go糰隊成員。)、Bryan Mills、Bala Natarajan、Cosmos Nicolaou、Paul Staniforth、Nigel Tao(譯註:好像是陶哲軒的兄弟)以及Howard Trickey給出的許多有價值的建議。我們還要感謝David Brailsford和Raph Levien關於類型設置的建議。 diff --git a/ch1/ch1-01.md b/ch1/ch1-01.md index 9118ae5..739f5f8 100644 --- a/ch1/ch1-01.md +++ b/ch1/ch1-01.md @@ -1,6 +1,6 @@ ## 1.1. Hello, World -我們以1978年出版的C語言聖經《The C Programming Language》中經典的“hello world”案例來開始吧(譯註:本書作者之一Brian W. Kernighan也是C語言聖經一書的作者)。C語言對Go語言的設計産生了很多影響。用這個例子,我們來講解一些Go語言的覈心特性: +我們以1978年出版的C語言聖經[《The C Programming Language》](http://s3-us-west-2.amazonaws.com/belllabs-microsite-dritchie/cbook/index.html)中經典的“hello world”案例來開始吧(譯註:本書作者之一Brian W. Kernighan也是C語言聖經一書的作者)。C語言對Go語言的設計産生了很多影響。用這個例子,我們來講解一些Go語言的覈心特性: ```go gopl.io/ch1/helloworld diff --git a/images/favicon.ico b/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d287722d806eed6369720b3cb073ce678e9390bc GIT binary patch literal 1150 zcmZQzU<5(|0R|wcz>vYhz#zuJz@P!dKp~(AL>x$A1^@s5X9)4L`2X)=8A%wV2c&mY zKkdTr{O-#Chc;D#`g_y6y|{)5@Dut0V{hz(W?)PwAX>SCxFKyi?HFugGP%)x2@ zPwnsjzjRW_e~?<3UZA_cdFbJzr~ens=>f}u