Go语⾔之⽗谈Go编程语⾔与环境
2021年中旬,Go语⾔联合创始⼈Rob Pike应邀在线出席由UNSW Computing(悉尼新南威尔⼠⼤学计算机)组织主办的John Lions Distinguished Lectures[1],会上Rob Pike以Go之⽗⾝份讲述了究竟是什么将Go语⾔塑造成今天的这个样⼦以及进⼊Go⽣态系统的其他⼀些事物。
Rob Pike关于Go的观点总是⾼屋建瓴的,从这个talk[2]中我们可以了解Go语⾔演化的来龙去脉,这对于我们理解Go、理解Go演化⽅向、理解Go⽣态会有较⼤帮助。由于仅有视频资料,这⾥将视频中的slide截图按顺序贴在这⾥,并配以slide中没有但talk中有的⼀些rob pike 的重要观点,供⼤家参考。
Rob Pike:
(谦虚的说)Go还不能算是主流语⾔,但Go在全世界范围的影响⼒与发展远超当初预期。
我们知道:在众多编程语⾔中,Go可能不是那种interesting的语⾔。在当时,Go甚⾄不是⼀种有技术优势的语⾔。我们并没有试图推动编程语⾔理论或设计甚⾄实践的进步。我们对此并不介意,因为这不是我们的⽬标。
不知何故,这种语⾔已经成功地接管了云世界。它是主导docker、kubernetes以及基本上云原⽣计算基⾦会中的所有东西的开发语⾔,当然也包括这之外的其他很多项⽬。
多年前,有⼈预测Go是云计算基础设施语⾔,但现在这已经成为现实。
那么问题来了:⼀种本质上⽆⼈喜欢的语⾔是如何最终变得如此重要了呢?究竟发⽣了什么?
Rob Pike给出答案:
⼀门编程语⾔的成功取决于很多东西,⽽不仅仅是语⾔本⾝。
go语言开发环境搭建Go团队从⼀开始就知道这⼀点,于是他们不再局限于创造⼀门新编程语⾔,⽽是将⽬标定为创造⼀种编写软件的更好的⽅法上。因此这门新编程语⾔将被⽤于处理当时所⽤语⾔所解决不了的诸多问题:包括上⾯slide中列举的诸多问题。
虽然编程语⾔本⾝可以解决上⾯的⼀些问题,但仅语⾔本⾝还远不够。
Rob Pike:
我们遇到的⼀个最⼤的问题就是scale,并且scale拥有多个维度(数轴axes),包括concurrency、engineering、dependencies。
Rob Pike:
这就是我们⼏个第⼀次碰⾯设计⼀门新编程语⾔时讨论的话题。
Rob Pike:
这就是Go实现的⼀个⽣产就绪的Web server的代码。
下⾯探讨fmt.Fprintf的第⼀个参数的类型,它很特殊,它是⼀个io.Writer接⼝类型。
Rob Pike:
Go代码中充满了这种仅有⼀两个⽅法甚⾄是零个⽅法的接⼝类型,这些构成了Go⽂化之⼀。
我们相信,接⼝不应该为你所构建的整个世界预先定义,⽽应该在程序开发过程中有机地产⽣。让编译器解决⼀个接⼝是否好的问题,实际上是⽐强迫程序员优先解决这些问题更有效的进⾏软件演化的
⽅式。(because we believe that interfaces should not be predefined for the entire world you are building. but instead should arise organically through program development. and having the compiler work out whether an interface is good or not is an actually more effective way to grow software than forcing the programmers to work it all out a priori)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论