Files
the-way-to-go_ZH_CN/eBook/01.2.md
2013-04-09 11:52:10 -04:00

4.3 KiB
Raw Blame History

##啊哦,亲,你看得也太快了。。。还没翻译完呢 0 0 要不等到 2013年4月10日 再来看看吧~~

或者先去看看 《Go编程基础》 或者 《Go Web编程》 也可以喔~~

如果不想学习,去逛逛 Golang中文社区 或者 Go语言学习园地 也不错哒。

#1.2 语言的主要特性与发展的环境和影响因素 ##1.2.1 影响Go语言发展的早期编程语言 正如“21世界的C语言”这句话所说Go语言并不是凭空而造的而是和C++Java和C#一样属于C系。不仅如此设计者们还汲取了其它编程语言的精粹部分融入到Go语言当中。

在声明和包的设计方面Go语言受到PascalModula和Oberon系语言的影响在并发原理的设计上Go语言从同样受到 Tony Hoare 的CSP通信序列进程 Communicating Squential Processes理论影响的Limbo和Newsqueak实践中借鉴了一些经验并使用了和Erlang相同的机制。

这是一门完全开源的编程语言因为它使用BSD授权许可所以任何人都可以进行商业软件的开发而不需要支付任何费用。

尽管为了能够让目前主流的开发者们能够对Go语言中的类C语言的语法感到非常亲切而易于转型但是它在极大程度上简化了这些语法使得它们比C/C++语法更加简洁和干净。同时Go语言也拥有一些动态语言的特性这使得使用Python和Ruby的开发者们在使用Go语言的时候感觉非常容易上手。

下图展示了一些其它编程语言对Go语言的影响

图1.3 其它编程语言对Go语言的影响

##1.2.2 为什么要创造一门编程语言

  • C/C++的发展速度无法跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言,因此人们需要一门新的系统编程语言来弥补这个空缺,尤其是在计算机信息时代。
  • 对比计算机性能的提升,软件开发领域不被认为发展地足够快或者比硬件发展更加成功(有许多项目均以失败告终),同时应用程序的体积始终在不断地扩大,这就迫切地需要一门具备更高层次概念的低级语言来突破现状。
  • 在Go语言出现之前开发者们总是面临非常艰难的抉择究竟是使用执行速度快但是编译速度并不理想的语言C++),还是使用编译速度较快但执行效率不佳的语言(如:.NETJava或者说开发难度较低但执行速度一般的动态语言呢显然Go语言在这3个优势之间做到了最佳的平衡快速编译高效执行易于开发。

##1.2.3 Go语言的发展目标 Go语言的主要目标是将静态语言的安全性和高效性与动态语言的易开发性进行有机结合达到完美平衡从而使编程变得更加有乐趣而不是在艰难抉择中痛苦前行。

因此Go语言是一门类型安全和内存安全的编程语言。虽然Go语言中仍有指针的存在但并不允许进行指针运算。

Go语言的另一个目标是对于网络通信并发和并行编程的极佳支持从而更好地利用大量的分布式的和多核的计算机这一点对于谷歌内部的使用来说就非常重要了。设计者通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 channel 来实现各个 goroutine 之间的通信。他们实现了分段栈增长和 goroutine 在线程基础上多路复用技术的自动化。

这个特性显然是Go语言最强有力的部分不仅支持了日益重要的多核与多处理器计算机也弥补了现存编程语言在这方面所存在的不足。

Go语言中另一个非常重要的特性就是它的构建速度编译和链接到机器代码的速度一般情况下构建一个程序的时间只需要数百毫秒到几秒。作为大量使用C++来构建基础设施的谷歌来说这无疑从根本上摆脱了C++在构建速度上非常不理想的噩梦。这不仅极大地提升了开发者的工作效率,同时也使得软件开发过程中的代码测试环节更加紧凑,而不必浪费大量的时间在等待程序的构建上。