为什么Go语言设计受到欢迎?

Go言的参与者Dave Cheney针对GO语言为什么当前越来越受欢迎的原因提出了一些新的见解。

原文见:Go’s Language Design Leaves Others Behind

Cheney指出大多数现代语言都是从简单出发,最后却很少实现强大的目标,他认为复杂语言其内部的笨拙语法其实使用“富有表现力”等词语委婉掩盖了,这些复杂语言不会直接承认他们在简单和直接上做得很失败。

大多数语言起初理想目标是简单,但是当他们试图加入前人语言的同样特性以后,反而失去了简单的目标,作为一个新语言通常面对如何替换以前语言的压力,成为那些被替换语言的子集变成了这些新语言的一个目标(banq注:好像在黑Scala之类JVM语言),结果导致了巴洛克风格(banq注:华而不实),我们在其他语言中到处看到不必要的复杂性。

Cheney认为一个新语言应当是精制的,不是单纯对老语言的替换,应该是从前任语言的错误中得到学习。

为什么Go语言不同于前期的语言?首先,它离开了前期语言达成的公约,或者说约定俗成,这些约定其实没有意义,Go成功就是因为将这些约定扔掉,相当于加入了新功能(banq注:少则意味多,减意味着增)。其次,Go语言允许程序员建立坚实的基础,Cheney使用流沙比喻比喻其他语言,几十年来这些繁琐的语言将大型架构其实建立在流沙上,基础不简单也不坚实。

你不能在事后再增加简单,简单只有扔掉一些东西后才会得到。

发明一个可理解的语言不意味着就是让它变得容易,而是让它直接。Cheney进行了一些举例说明,比如限制语法的数量能够方便于有经验程序员,同是又避免疏远新程序员。

Cheney相信今天需要简单的编程是不言而喻的,Rob Pike作为Go语言的一个创建者说:Go语言不是来自一个委员会的群体作品,而是代表Ken Thompson, Robert Griesemer 和他自己的经验升华”。所有有经验的程序员都同意在Go中不需要额外的垃圾,Go为简单设计,简单是其原始特性,而不是副特性。

Cheney还谈了GO在大型团队合作中的好处。

Cheney认为Go秉承了UNIX哲学:简单而锋利,结合在一起能够完成更复杂的任务。更重要的是,能完成语言原始作者都没有想到的任务,Go的包可以通过更简单的接口彼此交互,这些接口相比Java或C++更简单没有限制、可组合,从而引向更简单实现。

Cheney还解释了GO语言在容器集装箱流程市场上的强有力地位(Docker)。

最后他说:Go语言适合愿意把事情做好的程序员。


[该贴被banq于2015-03-03 11:04修改过]