diff --git a/eBook/01.2.md b/eBook/01.2.md index c933d8a..275d480 100644 --- a/eBook/01.2.md +++ b/eBook/01.2.md @@ -7,3 +7,28 @@ #1.2 语言的主要特性与发展的环境和影响因素 ##1.2.1 影响Go语言发展的早期编程语言 +正如“21世界的C语言”这句话所说,Go语言并不是凭空而造的,而是和C++,Java和C#一样属于C系。不仅如此,设计者们还汲取了其它编程语言的精粹部分融入到Go语言当中。 + +在声明和包的设计方面,Go语言受到Pascal,Modula和Oberon系语言的影响;在并发原理的设计上,Go语言从同样受到 Tony Hoare 的CSP(通信序列进程 *Communicating Squential Processes*)理论影响的Limbo和Newsqueak实践中借鉴了一些经验,并使用了和Erlang相同的机制。 + +这是一门完全开源的编程语言,因为它使用BSD授权许可,所以任何人都可以进行商业软件的开发而不需要支付任何费用。 + +尽管为了能够让目前主流的开发者们能够对Go语言中的类C语言的语法感到非常亲切而易于转型,但是它在极大程度上简化了这些语法,使得它们比C/C++语法更加简洁和干净。同时,Go语言也拥有一些动态语言的特性,这使得使用Python和Ruby的开发者们在使用Go语言的时候感觉非常容易上手。 + +下图展示了一些其它编程语言对Go语言的影响: + +![](images/1.3.influences_on_go.jpg?raw=true) + +图1.3 其它编程语言对Go语言的影响 + +##1.2.2 为什么要创造一门编程语言 +- C/C++的发展速度无法跟上计算机发展的脚步,十多年来也没有出现一门与时代相符的主流系统编程语言,因此人们需要一门新的系统编程语言来弥补这个空缺,尤其是在计算机信息时代。 +- 对比计算机性能的提升,软件开发领域不被认为发展地足够快或者比硬件发展更加成功(有许多项目均以失败告终),同时应用程序的体积始终在不断地扩大,这就迫切地需要一门具备更高层次概念的低级语言来突破现状。 +- 在Go语言出现之前,开发者们总是面临非常艰难的抉择,究竟是使用执行速度快但是编译速度并不理想的语言(如:C++),还是使用编译速度较快但执行效率不佳的语言(如:.NET,Java),或者说开发难度较低但执行速度一般的动态语言呢?显然,Go语言在这3个优势之间做到了最佳地平衡:快速编译,高效执行,易于开发。 + +##1.2.3 Go语言的发展目标 +Go语言的主要目标是将静态语言的安全性和高效性与动态语言的易开发性进行有机结合,达到完美平衡,从而使编程变得更加有乐趣,而不是在艰难抉择中痛苦前行。 + +因此,Go语言是一门类型安全和内存安全的编程语言。虽然Go语言中仍有指针的存在,但并不允许进行指针运算。 + +Go语言的另一个目标是 diff --git a/eBook/images/1.3.influences_on_go.jpg b/eBook/images/1.3.influences_on_go.jpg new file mode 100644 index 0000000..2d5435d Binary files /dev/null and b/eBook/images/1.3.influences_on_go.jpg differ