Skip to content

Commit

Permalink
perface.md
Browse files Browse the repository at this point in the history
  • Loading branch information
unknwon committed Apr 7, 2013
1 parent 0002527 commit 3fa6230
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
1 change: 1 addition & 0 deletions eBook/directory.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

## 第一部分:学习Go语言
- 第1章:Go语言的起源,发展与普及
- 1.1 [起源与发展](01.1.md)
- 第2章:安装与运行环境
- 第3章:编辑器、集成开发环境与其它工具

Expand Down
31 changes: 31 additions & 0 deletions eBook/preface.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,34 @@ Go语言出现的目的是希望在编程领域创造最实用的方式来进行

Go语言有一个被称之为“没有废物”的宗旨,就是将一切没有必要的东西都去掉,不能去掉的就无底线地简化,同时追求最大程度的自动化。他完美地诠释了敏捷编程的KISS秘诀:短小精悍!

Go语言通过改善或去除在C,C++或Java中的一些所谓“开放”特性来让开发者们的工作更加便利。这里只举例其中的几个,比如对于变量的默认初始化,内存分配与自动回收,以及更简洁却不失健壮的控制结构。同时我们也会发现Go语言旨在减少不必要的编码工作,这使得Go语言的代码更加简洁,从而比传统的面向对象语言更容易阅读和理解。

与C++或Java这些有着庞大体系的语言相比,Go语言简洁到可以将它整个的装入你的大脑中,而且比学习Scala(Java的并发语言)有更低的门槛,真可谓是21世纪的C语言!

作为一门系统编程语言,你不应该为Go语言的大多数代码示例和练习都和控制台有着密不可分的关系而感到惊奇,因为提供平台依赖性的GUI(用户界面)框架并不是一个简单的任务。有许多由第三方发起的GUI框架项目正在如火如荼地进行中,或许我们会在不久的将来看到一些可用的Go语言GUI框架。不过现阶段的Go语言已经提供了大量有关Web方面的功能,我们可以通过它强大的http和template包来达到Web应用的GUI实现。

我们会经常涉及到一些关于Go语言的编码规范,了解和使用这些已经被广泛认同的规范应该是你学习阶段最重要的实践。我会在书中尽量使用已经讲解的概念或者技巧来解释相关的代码示例,以避免你在不了解某些高级概念的情况下而感到迷茫。

我们通过227个完整的代码示例和书中的解释说明来对所有涉及到的概念和技巧进行彻底的讲解,你可以下载这些代码到你的电脑上运行,从而加深对概念的理解。

本书会尽可能地将前后章节的内容联系起来,当然这也同时要求你通过学习不同的知识来对一个问题提出尽可能多的解决方案。记住,学习一门新语言的最佳方式就是实践,运行它的代码,修改并尝试更多的方案。因此,你绝对不可以忽略书中的130个代码练习,这将对你学习好Go语言有很大的帮助。比如,我们就为斐波那契算法提供了13个不同的版本,而这些版本都使用了不同的概念和技巧。

你可以通过访问本书的[官方网站](https://sites.google.com/site/thewaytogo2012/)下载书中的代码,并获得有关本书的勘误情况和内容更新。

为了让你在成为Go语言大师的道路上更加顺利,我们会专注于一些特别的章节以提供Go语言开发模式的最佳实践,同时也会帮助初学者逃离一些语言的陷阱。第18章可以作为你在开发时的一个参考手册,因为当中包含了众多的有价值的代码片段以及相关的解释说明。

最后要说明的是,你可以通过完整的索引来快速定位你需要阅读的章节。书中所有的代码都在Go1版本下测试通过。( ***译者注:所有代码经作者同意将会根据需要进行相关修改以在Go1.1版本下运行***

这里有一段来自在C++,Java和Python领域众所周知的专家 Bruce Eckel 的评论:

“作为一个有着C/C++背景的开发者,我在使用Go语言时仿佛呼吸到了新鲜空气一样,令人心旷神怡。我认为使用Go语言进行系统编程开发比使用C++有着更显著的优势,因为它在解决一些很难用C++解决的问题的同时,让我的工作变得更加高效。我并不是说C++的存在是一个错误,相反的,我认为这是历史发展的必然结果。当我深陷在C语言这门略微比汇编语言好一点的泥潭时,我坚信任何语言的构造都不可能支持大型项目的开发。像垃圾回收或并发语言支持这类东西,在当时都是极其荒谬的主意,根本没有人在乎。C++向大型项目开发迈出了重要的第一步,带领我们走进这个广袤无垠的世界。很庆幸 Stroustrup 做了让C++兼容C语言以能够让其编译C程序这个正确的决定。我们当时需要C++的出现。

“之后我们学到了更多。我们毫无疑问地接受了垃圾回收,异常处理和虚拟机这些当年人们认为只有疯子才会想的东西。C++的复杂程度(新版的C++甚至更加复杂)极大了影响了软件开发的高效性,这使得它再也不再适合这个时代。人们不再像过往那样认同在C++中兼容使用C语言的方法,认为这些工作只是在浪费时间,牺牲人们的努力。就在此时,Go语言已经成功地解决了C++中那些本打算解决却未能解决的关键问题。”

我非常想要向发明这门精湛的语言的Go开发团队表示真挚的感谢,尤其是团队的领导者 Rob Pike,Russ Cox 和 Andrew Gerrand,他们阐述的例子和说明都非常的完美。同时,我还要感谢 Miek Gieben,Frank Muller,Ryanne Dolan 和 Satish V.J. 给予我巨大的帮助,还有那些 Golang-nuts 邮件列表里的所有的成员。

欢迎来到Go语言开发的奇妙世界!

##链接
- [目录](directory.md)
- 下一章: [Go语言的起源,发展与普及](01.1.md)

0 comments on commit 3fa6230

Please sign in to comment.