Merge pull request #2 from mikespook/master

some tweakings
This commit is contained in:
Joe Chen
2013-04-09 20:58:55 -07:00
7 changed files with 119 additions and 118 deletions

View File

@@ -5,7 +5,7 @@
尽管该书对目前 Go 语言版本来说有小部分内容相对过时,但是为当下不可多得的好书,部分内容已获得作者同意根据当前 Go 语言版本进行修改。 尽管该书对目前 Go 语言版本来说有小部分内容相对过时,但是为当下不可多得的好书,部分内容已获得作者同意根据当前 Go 语言版本进行修改。
该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的发展! 该翻译版本已获得原作者Ivo Balbaert本人授权,并表示支持开源事业的发展!
##翻译进度 ##翻译进度
[语言的主要特性与发展的环境和影响因素](eBook/01.2.md) [语言的主要特性与发展的环境和影响因素](eBook/01.2.md)
@@ -33,7 +33,7 @@ Golang中国[golang.tc](http://www.golang.tc/)
- 本书原作者Ivo Balbaert - 本书原作者Ivo Balbaert
##授权许可 ##授权许可
除特别声明外,本书中的内容使用[CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)(创作共用 署名-相同方式共享3.0许可协议授权代码遵循[BSD 3-Clause License](https://github.com/astaxie/build-web-application-with-golang/blob/master/LICENSE.md)3项条款的BSD许可协议 除特别声明外,本书中的内容使用[CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)(创作共用 署名-相同方式共享0 许可协议)授权,代码遵循[BSD 3-Clause License](https://github.com/astaxie/build-web-application-with-golang/blob/master/LICENSE.md)3 项条款的 BSD 许可协议)。
##开始阅读 ##开始阅读
[前言](./eBook/preface.md) [前言](./eBook/preface.md)

View File

@@ -5,7 +5,7 @@ Go语言起源2007年并于2009年正式对外发布。它从2009年9月21日
![](images/1.1.designers_of_Go.jpg?raw=true) ![](images/1.1.designers_of_Go.jpg?raw=true)
图1.1 Go语言设计者GriesemerThompson 和 Pike 图1.1 Go语言设计者GriesemerThompson 和 Pike
在 2008 年年中Go 语言的设计工作接近尾声一些员工开始以全职工作状态投入到这个项目的编译器和运行实现上。Ian Lance Taylor 也加入到了开发团队中,并于 2008 年 5 月创建了一个 gcc 前端。 在 2008 年年中Go 语言的设计工作接近尾声一些员工开始以全职工作状态投入到这个项目的编译器和运行实现上。Ian Lance Taylor 也加入到了开发团队中,并于 2008 年 5 月创建了一个 gcc 前端。
@@ -49,7 +49,7 @@ Go编程语言的维基百科[http://en.wikipedia.org/wiki/Go_(programming_la
Go 语言相关资源的搜索引擎页面:[http://go-lang.cat-v.org/go-search](http://go-lang.cat-v.org/go-search) Go 语言相关资源的搜索引擎页面:[http://go-lang.cat-v.org/go-search](http://go-lang.cat-v.org/go-search)
Go语言还有一个运行在 Google App Engine 上的 [Go Tour](http://go-tour.appspot.com/),你也可以通过执行命令 `go install go-tour.googlecode.com/hg/gotour` 安装到你的本地机器上。 Go 语言还有一个运行在 Google App Engine 上的 [Go Tour](http://go-tour.appspot.com/),你也可以通过执行命令 `go install go-tour.googlecode.com/hg/gotour` 安装到你的本地机器上。对于中文读者,可以访问该指南的[中文版本](http://go-tour-zh.appsp0t.com/),或通过命令 `go install https://bitbucket.org/mikespook/go-tour-zh/gotour` 进行安装。
##链接 ##链接
- [目录](directory.md) - [目录](directory.md)

View File

@@ -1,8 +1,8 @@
#1.2 语言的主要特性与发展的环境和影响因素 #1.2 语言的主要特性与发展的环境和影响因素
##1.2.1 影响 Go 语言发展的早期编程语言 ##1.2.1 影响 Go 语言发展的早期编程语言
正如“21世界的C语言”这句话所说Go语言并不是凭空而造的而是和C++Java和C#一样属于C系。不仅如此设计者们还汲取了其它编程语言的精粹部分融入到Go语言当中。 正如“21 世界的 C 语言”这句话所说Go 语言并不是凭空而造的,而是和 C++Java 和 C# 一样属于 C 系。不仅如此,设计者们还汲取了其它编程语言的精粹部分融入到 Go 语言当中。
在声明和包的设计方面Go语言受到PascalModulaOberon系语言的影响在并发原理的设计上Go语言从同样受到 Tony Hoare 的CSP通信序列进程 *Communicating Squential Processes*理论影响的LimboNewsqueak的实践中借鉴了一些经验并使用了和Erlang相同的机制。 在声明和包的设计方面Go 语言受到 PascalModulaOberon 系语言的影响在并发原理的设计上Go 语言从同样受到 Tony Hoare 的 CSP通信序列进程 *Communicating Squential Processes*)理论影响的 LimboNewsqueak 的实践中借鉴了一些经验,并使用了和 Erlang 类似的机制。
这是一门完全开源的编程语言,因为它使用 BSD 授权许可,所以任何人都可以进行商业软件的开发而不需要支付任何费用。 这是一门完全开源的编程语言,因为它使用 BSD 授权许可,所以任何人都可以进行商业软件的开发而不需要支付任何费用。
@@ -17,7 +17,7 @@
##1.2.2 为什么要创造一门编程语言 ##1.2.2 为什么要创造一门编程语言
- C/C++的发展速度无法跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言,因此人们需要一门新的系统编程语言来弥补这个空缺,尤其是在计算机信息时代。 - C/C++的发展速度无法跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言,因此人们需要一门新的系统编程语言来弥补这个空缺,尤其是在计算机信息时代。
- 对比计算机性能的提升,软件开发领域不被认为发展地足够快或者比硬件发展更加成功(有许多项目均以失败告终),同时应用程序的体积始终在不断地扩大,这就迫切地需要一门具备更高层次概念的低级语言来突破现状。 - 对比计算机性能的提升,软件开发领域不被认为发展地足够快或者比硬件发展更加成功(有许多项目均以失败告终),同时应用程序的体积始终在不断地扩大,这就迫切地需要一门具备更高层次概念的低级语言来突破现状。
- 在Go语言出现之前开发者们总是面临非常艰难的抉择究竟是使用执行速度快但是编译速度并不理想的语言C++),还是使用编译速度较快但执行效率不佳的语言(如:.NETJava或者说开发难度较低但执行速度一般的动态语言呢显然Go语言在这3个条件之间做到了最佳的平衡:快速编译,高效执行,易于开发。 - Go 语言出现之前开发者们总是面临非常艰难的抉择究竟是使用执行速度快但是编译速度并不理想的语言C++),还是使用编译速度较快但执行效率不佳的语言(如:.NETJava或者说开发难度较低但执行速度一般的动态语言呢显然Go 语言在这 3 个条件之间做到了最佳的平衡:快速编译,高效执行,易于开发。
##1.2.3 Go 语言的发展目标 ##1.2.3 Go 语言的发展目标
Go 语言的主要目标是将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡,从而使编程变得更加有乐趣,而不是在艰难抉择中痛苦前行。 Go 语言的主要目标是将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡,从而使编程变得更加有乐趣,而不是在艰难抉择中痛苦前行。
@@ -74,7 +74,7 @@ Go语言使用静态类型所以它是类型安全的一门语言加上通
作为强类型语言,隐式的类型转换是不被允许的,记住一条原则:让所有的东西都是显式的。 作为强类型语言,隐式的类型转换是不被允许的,记住一条原则:让所有的东西都是显式的。
Go语言其实也有一些动态语言的特性通过关键字 `var`所以它对那些逃离Java.Net世界而使用PythonRubyPhp和JavaScript的开发者们也具有很大的吸引力。 Go 语言其实也有一些动态语言的特性(通过关键字 `var`),所以它对那些逃离 Java.Net 世界而使用 PythonRuby、PHP 和 JavaScript 的开发者们也具有很大的吸引力。
Go 语言支持交叉编译,比如说你可以在运行 Linux 系统的计算机上开发运行下 Windows 下运行的应用程序。这是第一门完全支持 UTF-8 的编程语言( ***译者注:.NET好像也支持吧*** ),这不仅体现在它可以处理使用 UTF-8 编码的字符串,就连它的源码文件格式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化! Go 语言支持交叉编译,比如说你可以在运行 Linux 系统的计算机上开发运行下 Windows 下运行的应用程序。这是第一门完全支持 UTF-8 的编程语言( ***译者注:.NET好像也支持吧*** ),这不仅体现在它可以处理使用 UTF-8 编码的字符串,就连它的源码文件格式都是使用的 UTF-8 编码。Go 语言做到了真正的国际化!
@@ -114,7 +114,7 @@ Go语言可以在Inter或ARM处理器上运行因此它也可以在安卓系
关于 Go 语言开发团队对于这些方面的讨论,你可以通过这个页面查看:[http://golang.org/doc/go_faq.html](http://golang.org/doc/go_faq.html) 关于 Go 语言开发团队对于这些方面的讨论,你可以通过这个页面查看:[http://golang.org/doc/go_faq.html](http://golang.org/doc/go_faq.html)
##1.2.8 使用 Go 语言编程 ##1.2.8 使用 Go 语言编程
如果你有其它语言的编程经历面向对象编程语言JavaC#Object-CPythonRuby在你进入到Go语言的世界之后你将会像迷恋你的X语言一样无法自拔。Go语言使用了与其它语言不同的设计模式所以当你尝试将你的X语言的代码迁移到Go语言时你将会非常失望所以你需要从头开始用Go的理念来思考。 如果你有其它语言的编程经历面向对象编程语言JavaC#Object-CPythonRuby在你进入到 Go 语言的世界之后,你将会像迷恋你的 X 语言一样无法自拔。Go 语言使用了与其它语言不同的设计模式所以当你尝试将你的X语言的代码迁移到 Go 语言时,你将会非常失望,所以你需要从头开始,用 Go 的理念来思考。
如果你在至高点使用 Go 的理念来重新审视和分析一个问题,你通常会找到一个适用于 Go 语言的优雅的解决方案。 如果你在至高点使用 Go 的理念来重新审视和分析一个问题,你通常会找到一个适用于 Go 语言的优雅的解决方案。

View File

@@ -22,7 +22,7 @@
##第三部分Go 高级编程 ##第三部分Go 高级编程
- 第12章读写数据 - 第12章读写数据
- 第13章错误处理与测试 - 第13章错误处理与测试
- 第14章GoroutinesChannels - 第14章goroutine 与 channel
- 第15章网络、模版与网页应用 - 第15章网络、模版与网页应用
##第四部分:实际应用 ##第四部分:实际应用

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@@ -13,25 +13,25 @@
Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。
Go语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦涩难懂的概念来从根本上推翻已有的编程语言而是建立并改善了CJavaC#中的许多语法风格。它提倡通过接口来针对面向对象编程,通过 goroutines 和 channels 来支持并发和并行编程。 Go 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提倡通过接口来针对面向对象编程,通过 goroutine 和 channel 来支持并发和并行编程。
这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你在学习 Go 语言之前需要具备一些关于编程的基础知识和经验,并且拥有合适的学习环境,但你并不需要对 C 或者 Java 或其它类似的语言有非常深入的了解。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你在学习 Go 语言之前需要具备一些关于编程的基础知识和经验,并且拥有合适的学习环境,但你并不需要对 C 或者 Java 或其它类似的语言有非常深入的了解。
对于那些熟悉 C 或者面向对象编程语言的开发者,我们将会在本书中用 Go 和一些编程语言的相关概念进行比较书中会使用大家所熟知的缩写“OO”来表示面向对象 对于那些熟悉 C 或者面向对象编程语言的开发者,我们将会在本书中用 Go 和一些编程语言的相关概念进行比较书中会使用大家所熟知的缩写“OO”来表示面向对象
本书将会从最基础的概念讲起,同时也会讨论一些类似在应用 goroutines 和 channels 时有多少种不同的模式如何在Go语言中使用谷歌API如何操作内存如何在Go语言中进行程序测试和如何使用模板来开发Web应用这些高级概念和技巧。 本书将会从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模式,如何在 Go 语言中使用谷歌 API如何操作内存如何在 Go 语言中进行程序测试和如何使用模板来开发Web应用这些高级概念和技巧。
在本书的第一部分,我们将会讨论 Go 语言的起源第1章以及如何安装 Go 语言第2章和开发环境第3章 在本书的第一部分,我们将会讨论 Go 语言的起源第1章以及如何安装 Go 语言第2章和开发环境第3章
在本书的第二部分,我们将会带领你贯穿 Go 语言的核心思想譬如简单与复杂类型第478章控制结构第5章函数第6章结构与方法第10章和接口第11章。我们会对 Go 语言的函数式和面向对象编程进行透彻的讲解,包括如何使用 Go 语言来构造大型项目第9章 在本书的第二部分,我们将会带领你贯穿 Go 语言的核心思想譬如简单与复杂类型第478章控制结构第5章函数第6章结构与方法第10章和接口第11章。我们会对 Go 语言的函数式和面向对象编程进行透彻的讲解,包括如何使用 Go 语言来构造大型项目第9章
在本书的第三部分你将会学习到如何处理不同格式的文件第12章和如何在Go语言中巧妙地使用错误处理机制第13章。然后我们会对Go语言中最值得称赞的设计 goroutines 和 channels 进行并发和多核应用的基本技巧的讲解第14章。最后我们会讨论如何将Go语言应用到分布式和Web应用中的相关网络技巧第15章 在本书的第三部分你将会学习到如何处理不同格式的文件第12章和如何在 Go 语言中巧妙地使用错误处理机制第13章。然后我们会对 Go 语言中最值得称赞的设计 goroutine 和 channel 进行并发和多核应用的基本技巧的讲解第14章。最后我们会讨论如何将 Go 语言应用到分布式和Web应用中的相关网络技巧第15章
我们会在本书的第四部分向你展示许多 Go 语言的开发模式和一些编码规范以及一些非常有用的代码片段第18章。在前面章节完成对所有的 Go 语言技巧的学习之后,你将会学习如何构造一个完整 Go 语言项目第19章然后我们会介绍一些关于 Go 语言在云Google App Engine方面的应用第20章。在本书的最后一章第21章我们会讨论一些在全世界范围内已经将 Go 语言投入实际开发的公司和组织。本书将会在最后给出一些对 Go 语言爱好者的引用Go 相关包和工具的参考,以及章节练习的答案和所有参考资源和文献的清单。 我们会在本书的第四部分向你展示许多 Go 语言的开发模式和一些编码规范以及一些非常有用的代码片段第18章。在前面章节完成对所有的 Go 语言技巧的学习之后,你将会学习如何构造一个完整 Go 语言项目第19章然后我们会介绍一些关于 Go 语言在云Google App Engine方面的应用第20章。在本书的最后一章第21章我们会讨论一些在全世界范围内已经将 Go 语言投入实际开发的公司和组织。本书将会在最后给出一些对 Go 语言爱好者的引用Go 相关包和工具的参考,以及章节练习的答案和所有参考资源和文献的清单。
Go 语言有一个被称之为“没有废物”的宗旨就是将一切没有必要的东西都去掉不能去掉的就无底线地简化同时追求最大程度的自动化。他完美地诠释了敏捷编程的KISS秘诀短小精悍 Go 语言有一个被称之为“没有废物”的宗旨就是将一切没有必要的东西都去掉不能去掉的就无底线地简化同时追求最大程度的自动化。他完美地诠释了敏捷编程的KISS秘诀短小精悍
Go语言通过改善或去除在CC++或Java中的一些所谓“开放”特性来让开发者们的工作更加便利。这里只举例其中的几个比如对于变量的默认初始化内存分配与自动回收以及更简洁却不失健壮的控制结构。同时我们也会发现Go语言旨在减少不必要的编码工作这使得Go语言的代码更加简洁从而比传统的面向对象语言更容易阅读和理解。 Go 语言通过改善或去除在 C、C++ 或 Java 中的一些所谓“开放”特性来让开发者们的工作更加便利。这里只举例其中的几个,比如对于变量的默认初始化,内存分配与自动回收,以及更简洁却不失健壮的控制结构。同时我们也会发现 Go 语言旨在减少不必要的编码工作,这使得 Go 语言的代码更加简洁,从而比传统的面向对象语言更容易阅读和理解。
与 C++ 或 Java 这些有着庞大体系的语言相比Go 语言简洁到可以将它整个的装入你的大脑中,而且比学习 ScalaJava 的并发语言)有更低的门槛,真可谓是 21 世纪的 C 语言! 与 C++ 或 Java 这些有着庞大体系的语言相比Go 语言简洁到可以将它整个的装入你的大脑中,而且比学习 ScalaJava 的并发语言)有更低的门槛,真可谓是 21 世纪的 C 语言!
@@ -49,13 +49,14 @@ Go语言通过改善或去除在CC++或Java中的一些所谓“开放”特
最后要说明的是,你可以通过完整的索引来快速定位你需要阅读的章节。书中所有的代码都在 Go1 版本下测试通过。( ***译者注:所有代码经作者同意将会根据需要进行相关修改以在 Go1.1 版本下运行*** 最后要说明的是,你可以通过完整的索引来快速定位你需要阅读的章节。书中所有的代码都在 Go1 版本下测试通过。( ***译者注:所有代码经作者同意将会根据需要进行相关修改以在 Go1.1 版本下运行***
这里有一段来自在C++JavaPython领域众所周知的专家 Bruce Eckel 的评论: 这里有一段来自在 C++JavaPython 领域众所周知的专家 ruce Eckel 的评论:
“作为一个有着C/C++背景的开发者我在使用Go语言时仿佛呼吸到了新鲜空气一般令人心旷神怡。我认为使用Go语言进行系统编程开发比使用C++有着更显著的优势因为它在解决一些很难用C++解决的问题的同时让我的工作变得更加高效。我并不是说C++的存在是一个错误相反地我认为这是历史发展的必然结果。当我深陷在C语言这门略微比汇编语言好一点的泥潭时我坚信任何语言的构造都不可能支持大型项目的开发。像垃圾回收或并发语言支持这类东西在当时都是极其荒谬的主意根本没有人在乎。C++向大型项目开发迈出了重要的第一步,带领我们走进这个广袤无垠的世界。很庆幸 Stroustrup 做了让C++兼容C语言以能够让其编译C程序这个正确的决定。我们当时需要C++的出现。 “作为一个有着 C/C++ 背景的开发者,我在使用 Go 语言时仿佛呼吸到了新鲜空气一般,令人心旷神怡。我认为使用 Go 语言进行系统编程开发比使用 C++ 有着更显著的优势,因为它在解决一些很难用 C++ 解决的问题的同时,让我的工作变得更加高效。我并不是说 C++ 的存在是一个错误,相反地,我认为这是历史发展的必然结果。当我深陷在 C
语言这门略微比汇编语言好一点的泥潭时我坚信任何语言的构造都不可能支持大型项目的开发。像垃圾回收或并发语言支持这类东西在当时都是极其荒谬的主意根本没有人在乎。C++ 向大型项目开发迈出了重要的第一步,带领我们走进这个广袤无垠的世界。很庆幸 Stroustrup 做了让 C++ 兼容 C 语言以能够让其编译 C 程序这个正确的决定。我们当时需要 C++ 的出现。”
“之后我们学到了更多。我们毫无疑问地接受了垃圾回收异常处理和虚拟机这些当年人们认为只有疯子才会想的东西。C++ 的复杂程度(新版的 C++ 甚至更加复杂)极大了影响了软件开发的高效性,这使得它再也不再适合这个时代。人们不再像过往那样认同在 C++ 中兼容使用 C 语言的方法认为这些工作只是在浪费时间牺牲人们的努力。就在此时Go 语言已经成功地解决了 C++ 中那些本打算解决却未能解决的关键问题。” “之后我们学到了更多。我们毫无疑问地接受了垃圾回收异常处理和虚拟机这些当年人们认为只有疯子才会想的东西。C++ 的复杂程度(新版的 C++ 甚至更加复杂)极大了影响了软件开发的高效性,这使得它再也不再适合这个时代。人们不再像过往那样认同在 C++ 中兼容使用 C 语言的方法认为这些工作只是在浪费时间牺牲人们的努力。就在此时Go 语言已经成功地解决了 C++ 中那些本打算解决却未能解决的关键问题。”
我非常想要向发明这门精湛的语言的Go开发团队表示真挚的感谢尤其是团队的领导者 Rob PikeRuss Cox 和 Andrew Gerrand他们阐述的例子和说明都非常的完美。同时我还要感谢 Miek GiebenFrank MullerRyanne Dolan 和 Satish V.J. 给予我巨大的帮助,还有那些 Golang-nuts 邮件列表里的所有的成员。 我非常想要向发明这门精湛的语言的 Go 开发团队表示真挚的感谢,尤其是团队的领导者 Rob PikeRuss Cox 和 Andrew Gerrand他们阐述的例子和说明都非常的完美。同时我还要感谢 Miek GiebenFrank MullerRyanne Dolan 和 Satish V.J. 给予我巨大的帮助,还有那些 Golang-nuts 邮件列表里的所有的成员。
欢迎来到 Go 语言开发的奇妙世界! 欢迎来到 Go 语言开发的奇妙世界!