编程语言进化链的顶端:为什么说Swift正在颠覆整个互联网生态?

36氪  •  扫码分享


苹果自家的编程语言Swift一经 推出 便引起了多方 讨论 ,一些人说Swift将会改变整个苹果的应用生态,一些人则认为这不过是一个玩具语言。因此今天我和 极客学院 的创始人靳岩,以及 氪加 的iOS开发工程师 卢侃 一起聊了聊Swift对互联网的影响。有趣的是,我们三个,一个是互联网的观察者(我),我一个是互联网技术教育的从业者(靳岩),一个是iOS应用的开发者(正为避免失业而开始看Swift的卢侃),都对Swift可能带来的前景感到兴奋。

观察者暮山:

从一个旁观者的角度,我认为Swift的代表的是编程语言的基本发展方向。

纵观计算机的发展史,我们可以看到,计算机编程语言在由以机器为中心向以人为中心发展,即,从更便于机器阅读的语言发展为更便于人类编写,更接近人类自然语言。

最开始的电脑编程都是人工输入“0”和“1”的机器语言,完全以电脑为中心。后来大家觉得每天输“0”“1”效率实在太低了,便有人发明了汇编语言,用一些符合和字母来代替特定的“0”和“1”的组合。再后来,汇编语言也显得写起来太慢,如果想用汇编语言写一个较大的程序需要海量的代码。于是有人发明了C语言这门“高级语言”,让开发者本身能够更高效快速的编写代码,同时不太牺牲计算机读取代码的效率。然后C语言迅速成为了代码界的主流语言。

尽管C语言比起最初的机器语言已经好懂很多,而且需要写的代码量更少了,但依然有人想,编程语言能不能更简单,更像人话?这就出现了脚本语言,比如大家熟知的Python,Perl,以及我们的网站所用的PHP。然而脚本语言并没有像C语言一样基本替代了汇编语言,这是为什么呢?

最简单的原因便是,脚本语言运行效率较低。电脑并不理解脚本语言,因此,用脚本语言写的程序会被转化为机器语言,从而让计算机执行。然而问题是,这就好像我说中文,你说英语,我们之间隔了一个翻译,翻译给机器后总是会产生词不达意的情况,因此许多本来很简单的运行会被拖的冗长,从而降低了运行效率。而C语言等面向机器的语言则更像是一个懂英语的人用中文说话给翻译,他了解英语思考者的思路和逻辑,并且明确的用中文中类似的表达说出来,所以C语言的运行效率更高。

而我对Swift看好的原因便是它既解决了脚本语言运行效率的问题,又继承了其简洁的语法和强大的功能。Swift语言的发明者Chris Lattner之前最大的成就便是开发了编译系统LLVM,能将高级语言转换为机器语言,也就是前文所说的“翻译”。Lattner也因为LLVM其极大的提高了包括Objective C在内的诸多高级语言的执行效率而获得了美国计算机协会颁发的“软件系统奖”。这次Lattner开发Swift相当于从高级语言到编译器做了个全套,并且他表示Swift在许多方面的运行效率都优于Objective C,而且远超的Python。

也就是说,如果Swift的运行效率真的像Lattner描述的那样,那么Swift代表的程序猿先进生产力的发展要求(提高编程效率),代表了计算机先进文化的发展方向(语法简洁,现代),代表了广大人民的根本利益(写起来爽,学起来快)。至于许多人说的标准库太少的问题,那都是可以改变的。

教育者靳岩:

我认为现在大家不论怎样高度评价Swift都是低估了它会对业界带来的影响。

首先是他是一门新语言,而且关键是它是被苹果推动的,有非常好的应用场景。围绕Swift未来会出现与之相关的社区,开源代码,培训课程等...Swift将会带动一整个与之相关的生态,而里面一个非常小的部分都有很大的商机。

其次我个人也非常看好Swift,因为它是苹果对自己的一次颠覆,而它对抗的正是代码界的官僚化。举个例子,现在Java都更新到8.0,但现在大部分人用的都还是Java 1.6,为什么大家不用有更多新特性的Java 8.0呢?说白了就是大家觉得1.6已经能做许多事情,懒得去看新功能了。而Java本身也一样,一度我都觉得它要死了,结果Andorid又把它救活了。但现在Java修修补补到8.0依然还是有许多问题是没法解决的,因为本身就是架构上的过时,那为何大家还在用它?因为那些大公司都用习惯Java了,没有勇气去换一个更现代更高效的语言,而Swift则是逼着公司和开发者去适应新的语言和功能。

Swift的情形和Go(Google发布的编程语言)不一样。大家都知道Go很好,但Google从来没说要大家用Go来写Andorid的应用。这就不像苹果,推出Swift后,对Objective C的支持肯定会逐渐减弱,最后完全转到Swift,这就逼大家必须抛弃二十多年前发明的Objective C而必须用Swift。退一步,如果用Swift的效率比Objective C高,你如果不用Swift在应用市场上的反应就会比别人慢,那还是逼你用Swift。

特别是这样一来,Google最后还是只能要求大家用Go而不是Java来写Andorid的应用,这样对整个IT圈都是一件进步的事。

iOS开发者卢侃:

自从Swift推出后小伙伴们都嘲笑我这个Objective C的开发者要失业了...所以我最近一直在看Swift...

事实上,我身边的很多人都在看Swift,除了一些其他领域的coder外,也有人想从Swift作为编程学习的入门。但我觉得Swift并非一门为入门者准备的语言。

Swift参考了诸多主流脚本语言的语法,这让它在语法上非常容易,一些有经验的开发者花一两个小时看看开发指南就能上手,但开发应用和了解语法毕竟是不一样的事。举个例子,如果一个开发者本来做服务器端的人,那他可能完全不知道一款应用的开发模式(比如苹果推崇的MVC)模式,那么,尽管他对语言本身很熟悉,但和应用开发有关的一切都还是要重新学。因此,尽管Swift降低了编程语言的学习成本,但程序开发依然需要经验,所以很多人说Swift只是表面上把大家拉到了同一个起点,原本熟悉iOS的开发者还是拥有极大的优势。而对初学者来说,语言门槛之后还有许多门槛,不可能突然涌现出许多之前对编程没什么了解的开发者。

当然,Swift的特性会得到怎样的应用,能否提高iOS应用的性能等,我们可能需要在用Swift编写的应用上线后才能看到。

我看Swift去了...

(可怜的即将失业的Objective C工程师...)

目前GitHub上已经出现了一些Swift的开源 项目 ,极客学院也 上线 了Swift的开发课程,有兴趣的同学可以去查看。

36氪 还会在之后继续报道和Swift有关的内容。并且,这次讨论代表了三个人从三个角度得出的观点,然而远非全部。大家可以把自己的观点发到report[at]36kr.com交流(记得留下联系方式),也可以在本文下方留言交流:)

[ 36氪 原创文章,作者: 暮山]

随意打赏

提交建议
微信扫一扫,分享给好友吧。