摘要:无论是开源的Go,还是闭源的Swift,新的语言总是利弊一体。不过可以确定的是,新的语言给予程序员一些有用的支撑点。而对于开发者而言,不管你成长多少,你都会受制于你使用的根源语言,所以选择需谨慎。 Google于2009年第一次提出了Go的构思,Facebook在去年春天引入了Hack,随后不久Apple也发布了其Swift语言。 在战争中,胜利者写历史书;在科技中,赢的公司都在写编程语言。互联是建立在开发标准和代码之上,但是社交网络和云计算领域受企业巨头控制,并且它们开始把自己独一无二的印记烙在数字科技上——这是必然的,就像征服者威廉和他的诺曼人一样,大量新的词汇加入到英语中。他带来许多新事物,如陪审制度,这些都影响着当地的法律和语言的方式。 可以确定的是,新的语言给予程序员一些有用的支撑点。Google Go语言的构建简化了并发运行代码的工作,由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。对于流行的Web脚步语言,像PHP和JavaScript,Apple的Swift语言提供给iPhone程序员一些简洁性和灵活性。每个语言都有它自己的标志:Swift是一只风格化的鸟,Go语言则是一只拗脚的地鼠。 Ken Thompson、 Rob Pike 和Robert Griesemer是Google的三位编码大师,于2009年半开玩笑的提出了Go的构思。像C++和Java这些广泛使用的编程语言是迟钝的,尤其是面对Google那种大规模的项目部署时。每次添加或改变一些东西时候,你都需要等待编译器将代码转换为机器可读的二进制版本。 Rob Pike说:“这个等待过程要45分钟,我认为这是痛苦的。当需要等待那么长时间时,你有很多时间可以考虑,你需要怎么做可以更好。” 设计编程语言在于权衡——对于程序员容易,对于机器最适合 创建运行快的代码要求程序员付出更多的努力。人们编写运行迅速的代码需要花费多少时间和精力呢?另一个主要权衡在于直接访问机器时语言提供的内存数量。不仅在这里,在其它地方也一样,语言发明者必须选择:知道他们可能会搞砸时,你为程序员提供多少自由?你为他们提供多少措施来缓解他们的失误? 语言设计的任务是庄严的、正式的、宏伟的、充满了难题和矛盾。这里没有正确的答案,只有不同的选择,以适应不断变化的硬件、多变的用户和挑剔的程序员。 Go语言的创造者有足够的经验去做这些选择,Ken Thompson创建了Unix,他和他的同伴Pike(贝尔实验室老将)共同设计了字符编码的风格,被称为UTF-8,现如今大多数Web会使用。所以他们知道小的决策也会有巨大的影响。现在增加的每一条规则,可能就意味着在未来极多的按键需要程序员去操作。每一条规则的遗漏可能意味着无数的崩溃。 例如,编程语言通常使用分号来分隔语句,使用括号将相关语句组织在一起。典型的如“Hello,World”C语言程序:
Go的创造者认为括号是至关重要的。有些语言(尤其是Python)把这放到了一边,允许程序员使用缩进(空格)或“隐形的字符”来告诉人和机器代码的位置。Go团队认为这是一个“深刻的错误”,括号意味着程序员可以明确不含糊的告诉计算机如何在很大一块区域组合代码。在一次与Sergey Brin会面上,Google的创始人提出Go的设计人员使用方括号,而不是花括号,节约开发者无数趟使用“Shift”键。 在2009年12月份,Go决定停止要求程序员以分号结束语句。分号用于解析器——把项目分解成块(相关代码组成一块)的幕后工具,目前的FAQ解释道:“我们想尽可能的消除它,从此当你递送你代码到解析器的时候,机器将注入分号。” Go清除分号减轻了程序员的眼睛疲劳,但是程序员需要更严格的部署花括号,否则分号会注入到错误的地方。 这些选择并不是没有争议的,一个批评家在Pike的讲座上抱怨道:“他们通过冗余的花括号破坏了语言。”语言也可以被设计的很容易,仅仅使用空格行使花括号的角色来阻断代码的不同部分。Google的Andrew Gerrand 回应道:“每天都有一定规模不可思议的倒霉事发生。意思是有人会偷偷的把一些看不见的符号放入代码库中,导致一个微妙的Bug。这在Google的Python程序中已经发生了不止一次。” 然而对于那些在软件论坛争论细微差别的程序员来讲,“任性的”语法也会使他们“醉了”。 和我们所说的语言不同,程序员称之为自然语言。编程语言是为特别目的和用途精心编制的。Go,正如Pike解释的那样,它是由Google设计的用来解决Google问题。Google存在大的问题......我们需要一种语言,可以让我们更容易的完成我们的工作——编写服务软件。 Google在云服务中运行它自己的全球性超级计算机,这种计算恰恰使Go能够得到最佳化的使用。但是Google并没有从销售软件中获得一分钱。并且Go已经是一种免费的、开源的项目,这使得它迅速的进入了其他装备的技术库。Redmonk咨询公司的一名分析师说:“它成为云基础设施的新兴语言。” Go已经逐渐的流行起来。例如,Dropbox已经从Python转移了大部分的后端代码到Go。Automattic,一家运营Wordpress.com的公司,也使用了Go,虽然WordPress本身一直使用PHP脚本语言。Automattic开发者Demitrious Kelly说:“这些天有十几个新的框架和方法摆在那,你必须要问自己,它比我们拥有的要好吗?但是这本身就是一个复杂的问题,要好到什么程度?它可以让我们做到什么是我们以前做不到的事情?值得吗?”Kelly称,在众多测试当中Go的表现不错,部分原因是该语言比较小,他说:“Go语言很容易在一个星期内就上手。” 鉴于Go的设计主要是针对Google特定的问题,语法的选择,即分号和花括号。这个问题并不那么简单,需要追求细节,还要有热情。愿意无视传统的编程给这个世界带来新的语言。可能最终推动语言的采用的就是程序员认真注意日常的编码——程序员称之为“痛点” Swift的起源 每个编程政权都有这样的痛点,但是迅速崛起的iOS给了开发者多于常规的份额。直到今年夏天Swift语言的出现为止,如果你想为iOS写一个程序,你必须使用Objective C语言。在80年代,Steve Jobs就已经采用了Objective C,并且当Steve Jobs重返Apple之后,该语言逐渐成为Mac OSX的主力工具。 |