苹果全球开发者大会总能掀起一股旋风,虽然今年大会的“猛料”不如往期,但Swift在今年晚些时候开源的消息,却足以赚足开发者眼球。
其实苹果的行事风格,我还是蛮喜欢的:“苹果把自家的事情做好,给用户最酷的体验,他的实力就是我行我素的资本,而用户也欣然接受这样的苹果。”不过,苹果有自己的平台、软硬件,Swift也才发布将近一年的时间,这么快就开源Swift?
关于苹果为什么开源Swift的分析已是铺天盖地,就无需多言,我觉得最重要的一点还是——通过吸引更多的开发者使用Swift,获得更多的支持以及创意,能够为苹果带来更大的商业利益。
在这里,我更想由此思考一下语言发展的趋势及伴随的现象。
一、语言/工具的封闭模式已经落伍了
十来年前的软件公司还有封闭资本,那时候的VB、Delphi足够好用,尽管盗版也很普遍,但光靠卖这些工具就能赚到盆满钵满。到了后来,Delphi几经挣扎还是没落了。当年李维在《Borland传奇》里将主要原因归咎于管理层接二连三失策,而从历史轨迹来看,靠封闭单一的工具类产品支撑业务发展,路口必将越收越窄。再来看看偌大的微软帝国,其产品和技术的覆盖面遍布各个角落,但最终也于2014年年底宣布开源.NET开发框架。
回首Java的二十年历程,JDK是开源的(你只要打开Src.zip,就能看到源代码),有开源免费的Eclipse和NetBeans的支持,同时借着“一次编写四处运行”的宣传语吸引无数开发者积极投入,构建出了一个庞大的Java社群,至今仍雄霸天下,这就是开源力量。
在这十多年里,不得不提的当然还有PHP、Python、Ruby等一大波开源动态语言的盛行,这些早已为业务所证明是成熟而稳定的解决方案。互联网上,用PHP、Django或RoR构建的网站比比皆是。
看看TIOBE语言榜就知道,开源的编程语言是多么流行!
随着互联网/移动互联网的发展,“免费”已经是经典的商业盈利模式,现在互联网的盈利点越来越集中在云平台/云业务租赁、各种增值服务、流量、订阅和广告上,越大的用户量,盈利越明显。而越多的开发者支持,创新点就越多,产品也越丰富。 因此,我认为作为开发支撑基础的编程语言和工具,其开源和免费趋势将逐渐成为主流。 毕竟,用户资源和开发者资源,都是事关产品生存的生命线。
但为何仍有这么多不开源的产品,比如不少数据库产品都不是开源的?其实,开源是一种模式,商业也是一种模式,看看著名的《大教堂与集市》就会有更多感悟。君不见,开源的大数据、NoSQL解决方案已经对商用数据库造成了不小冲击,而是否开源,也是商业公司的一种选项,比如微软开源.NET框架、苹果开源Swift。商业公司的选择总是考虑利益第一,有可能是短期,也可能是长期的,但无论如何,千万别把商业公司当作开源的天敌,在合适时机做出合适的选择,如果需要开源,也未尝不可。要知道,微软、苹果其实也为开源做出了不小贡献!
二、语言的发展
有时候还是蛮怀念十几、二十年前的软件开发环境,好像你只要会C或C++就可以了。但时光早已不同,尤其是近年的语言趋势更是呈现出许多新特性。这些新特性的流行,得益于2000年代的动态语言,比如前面提到的PHP、Python、Ruby。而这些语言的日益流行,又得益于互联网应用的兴起。PHP在网站构建方面占据大半壁江山,Python因应互联网数据量的喷发在科学计算领域得以重用,而RoR成就了多少初创公司的创业荣光。当年被人不看好的小脚本,却在互联网时代找到了大展身手的好时机。现在你不会一门动态语言都不好意思说自己是程序员了。
还必须提一下JavaScript,当年几乎人人不待见的丑小鸭,谁能想到今天的地位如此突出呢?甚至还延伸出了Node.js这样一个优质平台。一时间多少JavaScript开发者希望借助它实现心中的“全栈”梦想。同样,没有互联网,也就不会有JavaScript的大行其道。我认为,JavaScript在当代的价值,不会输给十几年前的Java。
动态语言的流行,也让许多组织和个人认识到了其存在的价值——那就是开发效率大大提升。以前编程需要为1M、甚至几百K的内存绞尽脑汁,运用各种Hack技巧。但遵从摩尔定律,硬件的发展速度非常快,于是, 开发者逐渐将眼光转到了开发效率上。 动态语言中广泛应用的filter、map和reduce等具有浓郁函数式风格的高阶函数,被认为是提升开发效率的有效手段。当然,苹果的Swift,同样也大量应用了这些特性。
就目前编程语法发展过程的几个关注点,我的理解如下:
三、语言营销、语言魅力
语言间的各种对比、争论由来已久,而且还历久不衰,这其实也说明了语言的流行除了客观条件,还存在一定主观因素的影响。确切地说,这些主观因素中很重要的两点是:
因此,语言是有“营销”因素存在的,也许这也算是各种编程语言的魅力之一。当然,在语言营销过程中,利益关系往往紧随其后。举个例子,我印象最深刻的一个语言营销例子就是每年推出的Java短片,其中可以看到暗喻语言的各种恶搞,无形中让人对Java产生了不小兴趣。此外,当下流行的各种语言/技术大会,姑且不言参会价值,同样是一种典型的语言/技术营销手段。
Swift开源的消息在WWDC 2015大会上发布,可谓天时地利人和,算是一种成功的营销。加上Swift具备的现代语言特性,Swift开源的策略可谓一炮打响,足以让粉丝激动许久。
一门语言,如果有几个业内知名大牛支持,有一个实力雄厚的组织和平台,具备一定优质特性,再加上合适的营销策略,就很容易吸引众多粉丝。
你我皆凡人,都有冲动之后就嚷嚷“再买就剁手”的经历,可见营销的影响力简直无孔不入。而开发者对语言的追求,一是现实刚需,二是自我兴趣,三是利益契合,如果光靠一时冲动,那么早晚会迷失自我, 如何在感性和理性的平衡中选择自己的语言方向? 这很重要,但也许是另一个话题了。
四、Swift开源带来了什么?
从技术角度来思考,Swift开源能带给我们什么?我觉得主要有以下几个方面:
总而言之,Swift开源是大大前进了一步。而超越Swift开源本身,当今编程语言的发展趋势也值得我们认真思考。如果从完全理性的角度看待编程语言,那么编程语言无非就是一门编程语言:“选择好适合自己的编程语言就是了”。但问题就在于如何选择合适的编程语言呢?语言的魅力也许就像盲人摸象,你无法做到足够理性,或者这世界就没有银弹,编程语言的比较和纷争,将是一个永恒的话题,热度无限......
本文选自程序员电子版2015年7月A刊,该期更多文章请查看这里。2000年创刊至今所有文章目录请查看程序员封面秀。欢迎 订阅程序员电子版 (含iPad版、Android版、PDF版)。