如果让我推荐编程语言系列之 Go

2020-07-09 00:00:00 语言 并发 回收 编程语言 垃圾

题图:By Instagram

早期经常有人问我学习编程语言应该从哪一门入手,我一般会推荐 Java 和 Python,这两门分属静态语言和动态语言,应用广泛,上手方便,上能九天揽月,下可五洋捉鳖,能写出小工具小网站,也构建出的大型互联网帝国,比如淘宝,比如豆瓣。我一般很少推荐 C 或者 C++ 这种前进的路途上密布荆棘和陷阱的语言,人还没看到鲜花,可能已经从入门到放弃了。

现在会有人问我,投资自己的时间去学习有价值和前景的编程语言,你会推荐哪些?以我个人拙见,我会推荐 Go、Python、Lua 和 JavaScript。

世间没有无缘无故的爱,推荐当然也有理由,比如 Go 在服务器端强大的并发处理能力,优雅的类型设计和简洁的语法。推荐 Python 是因为这门古老的语言在大数据和机器学习时代重新焕发了生机,几乎所有的机器学习项目,比如 TensorFlow,都优先把 Python 作为支持的语言。推荐 Lua 是因为 OpenResty 的崛起,大部分互联网应用都会涉及到服务器端的负载和连接能力,这方面 Lua 有着得天独厚的能力,目前 OpenResty 创始人章亦春已经开始提供基于 OR 的商业化解决方案,未来,也许可以用 Lua 构建大部分业务系统呢。至于 JavaScript,据说前端开始统治世界了,他们手里的屠龙刀就是这门语言。

今天闲话一下 Go 吧,希望能写个小系列。

以前开玩笑总说 Go 站在编程语言鄙视链顶端,鄙视其他所有语言。关于这一点 Lisp 是不服气的,因为 Lisp 是编程鼻祖,PHP 也是不服气的,因为 PHP 是世界上好的语言。但我这么说也不是没有道理,因为 Go 「世出名门,雍容华贵」,具备正宗的编程血统。使用 Go 语言编程的程序员们都像手拿 AK47 的企鹅,雄赳赳,气昂昂,杀进互联网。

什么名门呢?

2009年,世界上大的互联网公司 Google 推出了一门新的编程语言 Go,也叫 Golang,这是一门静态类型、编译型、并发型并具备垃圾回收机制的编程语言。这门语言的三个设计者对于程序员来说如雷贯耳,他们分别是:

Robert Griesemer:曾协助实现 Java 的 HotSpot 编译器和 JavaScript V8 引擎。

Rob Pike:曾是贝尔实验室的 Unix 团队和 Plan9 操作系统成员,与 Thompson 一起创造了 UTF-8 字符编码。

Ken Thompson,不用多说了,技术圣殿的人物,创造了 C 语言和 Unix,获得了 1983 年图灵奖和 1988 国家技术奖。

据说这些大神们创建 Go 语言的初衷是:近十年来开发程序之难让我们有点沮丧。于是 Go 诞生了。

Golang 是一门全新的、现代的、语法简洁并容易上手的编程语言,它不像 Scala 或 JRuby 这样的语言,要依附或脱胎于其他平台或语言,而是抛开历史包袱完全重新设计的、致力于充分发挥现代硬件性能的一门工程语言,具备独立的运行时库,就像 C 语言一样。

C 语言的强大勿用多言,但我们不得不承认,C 是一门既简单又极度复杂的语言,以至于你每写一行代码,都能想象出编译后指令的执行,堆栈的分配,C 充满了太多不着边际的规则,程序员如同行走在黑暗的森林里无所适从。Go 就好得多,语法关键字和控制语句都做到了简模式,并且规则严谨,少有歧义,不像 Ruby 那样可以写出各种「奇技淫巧」的黑魔法代码。无论是高手还是初学者,大家写出来的代码都差不多,如同太祖长拳,在普通拳师和乔峰手里,威力大不相同,但招式都差不多。这是简单的本质。

Go 语言的 Hello World 是这样的:

package main

func main() {
    println("Hello, World")
}

相关文章