Go语言的美妙之处

最近研究了一下比较火的几门新晋语言,包括Go, Rust,Elixir,Elm等,发现真的是比以往的语言改进不少。其中Go,Rust的性能很高,而Elixir和Elm的可读性非常好。今天就详细以Go为例,讲讲它的众多好处。

首先声明一下,本人最恶心C和Java。初中时候看过那本C++程序设计,觉得C++语法简直太恶,而且极度厌恶手动管理内存。Java的Inheritance和封装之类的概念也挺恶心,麻烦。后来接触了Python Ruby等脚本语言,觉得语法设计上强大不少,可惜应用场景很有限,而且写Web服务还是很麻烦。Javascript就更不用说了,10天设计出来的语言能好到哪里去。

在这种背景下,初见Go, 就被其设计的简洁性所征服。跟C JAVA比,Go保留了最实用的一些特征,但是又引入了一些函数式编程的特征,使得语法简洁明了。跟Python和Ruby比,Go速度飞快,并且内置的强大Web工具链让工作易如反掌。难怪一众区块链项目都选择了Go作为开发语言。

Go的最大卖点自然是内置支持goroutine的大并发。可不要小看这个设计,它的实现是基于CSP(Communicating sequential processes)架构。CSP是牛津大学的神人,图灵奖得主Tony Hoare在1978年就提出的并行计算架构,他这篇paper到21世纪仍然是计算机领域被cite最多的研究成果。后人不断感叹,这么老的一篇paper, 竟然一直无法被超越!目前基于CSP架构的语言仅有少数几个,除了Go之外有较多人用的只有Clojure的core.async库。

Tony Hoare,长得就像顶级科学家,本科在牛津学的是西方古典文学!

其它比较流行的支持大并发的语言,包括Erlang/Elixir和Scala,用的是剑桥大学图灵奖得主Robin Milner(怎么又是英国人)在1973年提出的Actor Model。这个Actor Model虽然也很牛,但是在数学完备性上不及CSP,因此实际应用较为受限。1992年,Robin Milner提出了Pi Calculus,在理论上又推进一大步,但后人证明了Pi Calculus才仅仅是等价于CSP,并且基于Pi Calculus的语言都没能流行起来。

并行架构的论文都是这个画风的

因此,Go相对于其他的主流大并发语言都是降维打击,毫不费力。目前在并行架构上可以超越Go的只有基于比Pi Calculus更高级的Rho Calculus的Rholang,但是Rholang还在萌芽期,又没有谷歌这样的爸爸抚养,因此暂时难以对Go形成挑战。

随着半导体工艺接近其物理极限,未来多核多处理器一定是大趋势,Go这样的大并行语言一定会继续大放异彩。随着webassembly的普及,Go甚至有希望竞争前端语言。大家赶快捡起可爱的Gopher吧~

长按以上二维码或搜索coindaddy,关注币霸深度评论

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181030G08GP800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券