苹果自家的编程语言 Swift 一经推出便引起了多方讨论,一些人说 Swift 将会改变整个苹果的应用生态,一些人则认为这不过是一个玩具语言。因此今天我和极客学院的创始人靳岩,以及氪加的 iOS 开发工程师卢侃一起聊了聊 Swift 对互联网的影响。有趣的是,我们三个,一个是互联网的观察者(我),我一个是互联网技术教育的从业者(靳岩),一个是 iOS 应用的开发者(正为避免失业而开始看 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 真的像 Lattner 所说的那样强大。
教育者靳岩:
我认为现在大家不论怎样高度评价 Swift 都是低估了它会对业界带来的影响。
首先是他是一门新语言,而且关键是它是被苹果推动的,有非常好的应用场景。围绕 Swift 未来会出现与之相关的社区,开源代码,培训课程等...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 工程师...)
当然,我们对 Swift 的讨论都以它是一款开发 iOS 端和 OS X 端的编程语言为前提,并非讨论各种编程语言本身的优劣。目前 GitHub 上已经出现了一些 Swift 的开源项目,极客学院也上线了 Swift 的开发课程,有兴趣的同学可以去查看。