诸如Apple、Facebook及Google这种大公司正在开发他们本身的编程语言。开发人员们被迫仅仅有适应。html
前不久的世界开发人员大会上。Apple发布了它的新开发语言Swift。这是近期大型技术公司们开发的一大波新语言中的最新成员。这些新语言某种程度上都是专门应用于他们本身的平台。linux
对iOS开发人员,Apple有Swift。而Facebook 有 Hack —— 一门用于后端开发的语言。与此同一时候。Google已经拥有了它本身的Javascript替代者 Dart,以及一门新的通用编程语言Go。git
这一波又一波的新语言。给开发人员们带来了不少问题。github
或许当中最严重的问题正如我一位同事Adriana Lee在Apple公布Swift后所说:编程
(开发人员们究竟还得学习多少门语言?) ——Adriana Lee (@adra_la) June 2, 2014swift
眼下已经存在的编程语言有数百种,同一时候还有不少其它的语言正在涌现。当中不少都是被设计用在相对较窄的应用程序范围内,大多数甚至从未走出过项目小组的范围。后端
与此相似,大技术公司开发的新语言事实上也是伴随着公司一块儿成长的。通用语言的鼻祖。C语言,就源于上世纪70年代初的AT&T贝尔实验室。Java,眼下做为Android app开发的主要语言,诞生于上世纪90年代Sun公司的Microsystems系统。架构
发展到现在,不一样之处在于。公司们拥抱新语言、从而想要延伸的特定商业目标的范围不同了 —— 这一过程同一时候创建了一个忠心耿耿的开发人员基础,他们被紧紧锁定在了某个公司的特定平台上。这类一石二鸟的战略。最先可以追溯到Sun对Java的採用。当时公司就将其做为了挑战微软PC桌面统治地位的一种手段。(事情尽管没有像Sun计划的那样发展下去,但在Google转向Android以前。Java大致上也算是在企业中间件系统中找到了本身的一席之地。)app
这么看来,Apple的Swift其目标也就很是明白了。框架
Swift应该不会辜负公司前期的大肆宣传,经过磨平Objective-C那粗糙的毛边,看起来它能够成功简化iOS app开发人员的开发过程。但是相同仍是这些开发人员,他们却需要学习一门新语言的输入和输出。而这些功能很是可能在其它地方都不会用到。
“不要反复造轮子”这一哲学在绝大多数开发人员心中根深蒂固,大公司们对此却并不买帐。
那他们为什么不只仅是改动下现有语言用于新的用途呢?
答案很是easy,公司们发明他们本身的语言,是因为他们有这个能力。设计一门新语言可能很是复杂,但对资源要求却并不很是高。
困难之处也就在对其提供支持,包含提供软件资源(共享代码库、API、编译器、文档等)以及赢得开发人员的支持。
大公司们在这双方面尤为擅长。
另外一个事实,现有语言一般很是难硬塞进如今的复杂代码框架中。举个栗子。Facebook决定发明的Hack,就是一个广泛适用于Web开发的脚本语言PHP的超集合(superset)。
Facebook的Hack近期已经比較广泛,其主要目标就是改进代码的稳定性,针对这一目的,它强制在程序执行以前对数据类型进行检測。
这种检測确保了一个程序。例如说,不会将一个整数解析为一个字符串。这种错误假设捕获不到很是可能会致使不可预知的后果。在Hack中。这些检測会预先执行。以便程序猿能够在程序上线前早早发现这种错误。
据Facebook的Hack项目组核心成员Julien Verlaguet透露,公司以前尝试过用一门现有语言实现更高效的编程。但是Facebook的大部分代码都是由PHP编写的,公司实际上已经创建了一个支持PHP及其分支的软件架构。即便可让PHP同其它语言编写的代码协同工做。实现的难易程度和执行速度都没法知足要求。
“比方说咱们尝试用Scala重写PHP代码库,”Verlaguet说。“Scala是一门设计优秀的美丽语言,但是它与PHP全然不兼容。每次我需要从Scala的代码库部分调用PHP的时候。都会损失性能。咱们很是愿意使用一门现有语言。但是对于咱们来讲,这条路行不通。”
因而,Facebook发明了Hack,它与PHP同样能够共用公司现有的架构。Verlaguet介绍说,Facebook的代码库主体已经从PHP迁移到了Hack。同一时候公司将Hack开源。但愿独立开发人员们能够帮公司找到Facebook之外的用途。
“你仍然可以使用PHP,”他说。“但是咱们但愿你有使用Hack的欲望。”
公司和开发人员之间有一种微妙的平衡。公司可以依照本身的喜爱发明语言。
但是假设开发人员都不肯使用这门语言。那就没人用了,公司之外的人也就没人愿意将本身的职业生涯委托给这家公司。
公司在开发过程当中同一时候使用不一样的语言。这并很多见。好比,你可能用Objective-C开发iOS app。但却用Java开发Android app。对开发人员来讲,这历来都不是症结所在。因为Objective-C和Java都是通用面向对象语言。它们用途普遍适用于很是多场合。
然而,Hack、Dart、Go和Swift,到眼下为止,仍然仅仅适用于严格特定公司的编程解决方式,每每和公司选择的编程环境相相应。诚然,现在下结论可能还太早。例如说Hack,就可以用在一些后端的实现中。它仅仅是太新了。以致于Facebook尚未不论什么数据供人们如此使用。
不是开发人员不能学习多门语言。
其实。大多数人已经掌握了多门语言。这比如罗曼斯语(一种由拉丁语演变而成的语言),假设你会说西班牙语。再去学法语就比那些不会西班牙语的人简单不少。
与此相似,假设你已经会Java,再学Ruby或Perl就简单得多。
假设你会PHP,基本上就已经学会了Hack。
与此相反,学习多门语言不少其它的是一个习惯问题。假设Java已经攻克了你的问题,你就再也不有动力去学Ruby。
假设你用Objective-C编写iOS app感受很是爽。你就不会有强烈的意愿去学Swift。
另外,对于一些开发人员来讲,封闭生态系统的语言仅仅会使每个人的生活变得更糟。
好比。自由设计师Jack Watson-Hamblin就告诉我说。像Apple这样强势推出Swift,事实上是在冒险添加程序猿的负担,同一时候将开发人员社区割裂开来:
程序猿掌握多门语言当然重要,但是不断强迫他们紧跟新语言,倒是行不通的。假设我正在开发一个简单的跨平台app,我可不想被迫掌握四门语言再来完毕它。假设真的需要。我也仅仅想使用一门语言。
Watson-Hamblin就主张说,当每家公司都为了自家需要发明本身的语言时,程序猿的注意力被分散。开发的视野也局限于一种,这仅仅会拖慢整个开发进程。
他说,“假设拿公司负责一门语言与负责一个开源社区相比較,这二者的差异就比如一家大企业与一个初创小公司的差异”。社区生来就更加灵活。适应能力更强。
固然,Apple有不少很是好的理由推出Swift从零開始,就像当初Facebook发明Hack的时候同样。
我并不是说,大公司不会强迫开发人员接受这样的改变。在这方面。有些公司一直都很是让人讨厌。
“新语言的发明。伴随着霸权的支配。”Verlaguet说,“被迫不停追赶,确实使人沮丧。但还有一方面,你又多了一种解决这个问题的新语言。
反过来想一想,要是全世界的程序猿都用相同一门语言作所有事情,即便啥都凑合着能干,这门语言也必定干得不怎么样”。
题图来自于Flickr user Ruiwen Chua。CC 2.0
via: http://readwrite.com/2014/06/17/apple-swift-facebook-hack-google-dart