This commit is contained in:
Unknown
2013-04-09 16:02:45 -04:00
parent ee2bb1194b
commit 1cc6b57b26

View File

@@ -1,10 +1,3 @@
##啊哦,亲,你看得也太快了。。。还没翻译完呢 0 0
要不等到 ***2013年4月10日*** 再来看看吧~~
或者先去看看 [《Go编程基础》](https://github.com/Unknwon/go-fundamental-programming) 或者 [《Go Web编程》](https://github.com/astaxie/build-web-application-with-golang) 也可以喔~~
如果不想学习,去逛逛 [Golang中文社区](http://bbs.mygolang.com/forum.php) 或者 [Go语言学习园地](http://studygolang.com/) 也不错哒。
#1.2 语言的主要特性与发展的环境和影响因素
##1.2.1 影响Go语言发展的早期编程语言
正如“21世界的C语言”这句话所说Go语言并不是凭空而造的而是和C++Java和C#一样属于C系。不仅如此设计者们还汲取了其它编程语言的精粹部分融入到Go语言当中。
@@ -37,3 +30,42 @@ Go语言的另一个目标是对于网络通信并发和并行编程的极佳
Go语言中另一个非常重要的特性就是它的构建速度编译和链接到机器代码的速度一般情况下构建一个程序的时间只需要数百毫秒到几秒。作为大量使用C++来构建基础设施的谷歌来说这无疑从根本上摆脱了C++在构建速度上非常不理想的噩梦。这不仅极大地提升了开发者的工作效率,同时也使得软件开发过程中的代码测试环节更加紧凑,而不必浪费大量的时间在等待程序的构建上。
依赖管理是现今软件开发的一个重要组成部分但是C语言中“头文件”的概念却导致越来越多因为依赖关系而使得构建一个大型的项目需要长达几个小时的时间。人们越来越需要一门具有严格的、简洁的依赖关系分析系统从而能够快速编译的编程语言。这正是Go语言采用包模型的根本原因这个模型通过严格的依赖关系检查机制来加快程序构建的速度提供了非常好的可量测性。
整个Go语言标准库的编译时间一般都在20秒以内其它的常规项目也只需要半秒钟的时间来完成编译工作。这种闪电般的编译速度甚至比编译C语言或者Fortran更加快使得编译这一环节不再成为在软件开发中困扰开发人员的问题。在这之前动态语言将快速编译作为自身的一大亮点像C++那样的静态语言一般都有非常漫长的编译和链接工作。而同样作为静态语言的Go语言通过自身优良的构建机制成功地了去除了这个弊端使得程序的构建过程变得微不足道拥有了像脚本语言和动态语言那样的高效开发的能力。
另外Go语言在执行速度方面也可以与C/C++相提并论。
由于内存问题通常称为内存泄漏长期以来一直伴随着C++的开发者们Go语言的设计者们认为内存管理不应该是开发人员所需要考虑的问题。因此尽管Go语言像其它静态语言一样执行本地代码但它依旧运行在某种意义上的虚拟机以此来实现高效快速的垃圾回收使用了一个简单的标记-清除算法)。
尽管垃圾回收并不容易实现但考虑这将是未来并发应用程序发展的一个重要组成部分Go语言的设计者们还是完成了这项艰难的任务。
Go语言还能够在运行时进行反射相关的操作。
使用 `go install` 能够很轻松地对第三方包进行部署。
此外Go语言还支持调用由C语言编写的海量库文件第3.9节),从而能够将过去开发的软件进行快速迁移。
##1.2.4 指导设计原则
Go语言通过减少关键字的数量25个来简化编码过程中的混乱和复杂度。干净、整齐和简洁的语法也能够提高程序的编译速度因为这些关键字在编译过程中少到甚至不需要符号表来协助解析。
这些方面的工作都是为了减少编码的工作量甚至可以与Java的简化程度相比较。
Go语言有一种极简抽象艺术家的感觉因为它只提供了一到两种方法来解决某个问题这使得开发者们的代码都非常容易阅读和理解。众所周知代码的可读性是软件工程里最重要的一部分 ***译者注:代码是写给人看的,不是写给机器看的*** )。
这些设计理念没有建立其它概念之上,所以并不会因为牵扯到一些概念而将某个概念复杂化,他们之间是相互独立的。
Go语言有一套完整的编码规范你可以在 [Go语言编码规范](http://golang.org/doc/go_spec.html) 页面进行查看。
它不像Ruby那样通过实现过程来定义编码规范。作为一门具有明确编码规范的语言它要求可以采用不同的编译器如 gc 和 gccgo第2.1节)进行编译工作,这对语言本身拥有更好的编码规范起到很大帮助。
[LALR](http://en.wikipedia.org/wiki/LALR_parser) 是Go语言的语法标准你也可以在 `src/cmd/gc/go.y` 中查看到,这种语法标准在编译时不需要符号表来协助解析。
##啊哦,亲,你看得也太快了。。。还没翻译完呢 0 0
要不等到 ***2013年4月10日*** 再来看看吧~~
或者先去看看 [《Go编程基础》](https://github.com/Unknwon/go-fundamental-programming) 或者 [《Go Web编程》](https://github.com/astaxie/build-web-application-with-golang) 也可以喔~~
如果不想学习,去逛逛 [Golang中文社区](http://bbs.mygolang.com/forum.php) 或者 [Go语言学习园地](http://studygolang.com/) 也不错哒。
##1.2.5 语言的特性