Go小专栏 第一期

Go的前世今生

如标题所述,这篇文章主要是来聊聊Go的历史,现状以及未来,或者也可称为Go的发展脉络。我认为任何事物存在皆有原因,技术也不例外。这篇文章主要探讨Go为什么会出现,Go的特点。

Go为什么会出现?

如果你接触过Go,就应该会知道Go被Google开源出来,Go的出现源自一次大型工程的构建,在等待漫长的构建过程中,有三位大佬开始讨论是否可以利用编程语言加快构建时间,解决目前Google在软件开发中遇到的问题呢?正是因为这次讨论,Go语言就此诞生。这三位大佬,分别是,Ken Thompson(图灵奖获得者、C 语法联合发明人、Unix 之父),Rob Pike(Plan 9 操作系统领导者、UTF-8 编码的最初设计者),Robert Griesemer(Java 的 HotSpot 虚拟机和 Chrome 浏览器的 JavaScript V8 引擎的设计者之一)。从语言的设计者角度看,Go语言可谓是身出名门。在这三位大佬的讨论中,这门编程语言要解决Google软件工程上的问题,而不是去做编程语言的创新。当时的Google面向下面的痛点

  1. 构建缓慢
  2. 依赖关系不可控
  3. 语言特性过多,每个工程师只会使用其中的一部分
  4. 代码可读性差
  5. 重复劳动
  6. 更新代价高
  7. 版本兼容性差
  8. 编写自动化工具困难
  9. 跨语言构建

而Go语言就是为了解决这些问题而生的,可以说Go语言是面向工程的语言。除此之外,三位大佬认为一门成功的编程语言需要保证下面三点

  1. 即使在规模庞大,依赖众多其他组件,在很多开发人员共同协作的程序上,也能很好的运行
  2. 它应该足够令人熟悉,尤其是在Google的开发者,他们更加熟悉C系语言的风格
  3. 它也需要足够现代,适应当时多核CPU的计算环境,比如内置并发

基于这些考虑,这三位大佬最终确定了Go语言的特点

  1. 足够简单,语言特性不易过多。
  2. 组合而不是继承,放弃传统的面向对象
  3. 良好的依赖管理,不允许循环依赖的出现,构建一颗清晰的依赖树
  4. 内置并发,借助CSP理论,内置并发原语,channel,select,goroutine
  5. 垃圾回收, 借助运行时,管理内存。
  6. 错误处理,借鉴C语言的基于值比较的错误处理方式,并再其上做了一定的创新

小结

到此,我讲解了为什么Go会出现,以及Go语言的特点,理解了这些东西,我们在学习Go的语法,再能更好的理解。那么下一期,我们会聊聊Go的基本数据类型以及语法结构,并谈谈我对类型的理解。到此为止,你看完了专栏的第一篇文章,如果你想再深入了解,可以看看这篇文章 Go at Google: Language Design in the Service of Software Engineering - The Go Programming Language

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值