OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

到底开发者需要掌握多少门语言?


分享到
分类 我要吐嘈   关键字 瞎扯   发布 Caroline  1404726091087
注意 转载须保留原文链接,译文链接,作者译者等信息。  

诸如Apple、Facebook及Google这样的大公司正在开发他们自己的编程语言,开发者们被迫只有适应。

前不久的世界开发者大会上,Apple公布了它的新开发语言Swift。这是最近大型技术公司们开发的一大波新语言中的最新成员,这些新语言某种程度上都是专门应用于他们自己的平台。

对iOS开发者,Apple有Swift;而Facebook 有 Hack —— 一门用于后端开发的语言。与此同时,Google已经拥有了它自己的Javascript替代者 Dart,以及一门新的通用编程语言Go。

这一波又一波的新语言,给开发者们带来了许多问题。也许其中最严重的问题正如我一位同事Adriana Lee在Apple发布Swift后所说:

(开发者们到底还得学习多少门语言?) ——Adriana Lee (@adra_la) June 2, 2014

计算机语言的通天塔

目前已经存在的编程语言有数百种,同时还有更多的语言正在涌现。其中许多都是被设计用在相对较窄的应用程序范围内,大多数甚至从未走出过项目小组的范围。

与此类似,大技术公司开发的新语言其实也是伴随着公司一起成长的。通用语言的鼻祖,C语言,就源于上世纪70年代初的AT&T贝尔实验室。Java,目前作为Android app开发的主要语言,诞生于上世纪90年代Sun公司的Microsystems系统

发展到现在,不同之处在于,公司们拥抱新语言、从而想要延伸的特定商业目标的范围不一样了 —— 这一过程同时建立了一个忠心耿耿的开发者基础,他们被牢牢锁定在了某个公司的特定平台上。这类一石二鸟的战略,最早可以追溯到Sun对Java的采用,当时公司就将其作为了挑战微软PC桌面统治地位的一种手段。(事情虽然没有像Sun计划的那样发展下去,但在Google转向Android之前,Java大体上也算是在企业中间件系统中找到了自己的一席之地。)

这么看来,Apple的Swift其目标也就很明确了。Swift应该不会辜负公司前期的大肆宣传,通过磨平Objective-C那粗糙的毛边,看起来它能够成功简化iOS app开发者的开发过程。但是同样还是这些开发者,他们却需要学习一门新语言的输入和输出,而这些功能很可能在其他地方都不会用到。

大公司们为什么要重复造轮子

“不要重复造轮子”这一哲学在绝大多数开发者心中根深蒂固,大公司们对此却并不买账。那他们为何不只是修改下现有语言用于新的用途呢?

答案很简单,公司们发明他们自己的语言,是因为他们有这个能力。设计一门新语言可能很复杂,但对资源要求却并不很高。困难之处也就在对其提供支持,包括提供软件资源(共享代码库、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

译者:Mr小眼儿 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 皇帝的新衣:Node.js
  2. 如何兼职创业并避免风险
  3. PHP vs Node.js:真正的评测数据
  4. 沃尔玛为什么要采用Node.js
  5. 再见了,Heroku
  6. 失败的感觉:一个22岁女孩的创业故事
  7. Java的痛
  8. Swift的前世今身-创始人的自述
  9. Intel: Javascript将全面支持SIMD
  10. 在JavaScript数组中找到最小元素的位置
  11. AirJD-简单好用的免费建站工具

 相关阅读 - 我要吐嘈
  1. Java的痛
  2. 再见了,Heroku
  3. PHP vs Node.js:真正的评测数据
  4. 你已经毁了JavaScript
  5. 不要让 Javascript 的等价表格看上去那么难看
  6. OpenSSL是坑货写的
  7. 为什么猎头招的都是垃圾
  8. 前狼厂悲催码农的呐喊!
  9. 前Google员工们的吐槽:在Google打工所能遇到的最坏事
  10. 对于现代开发来说,JavaScript就是一种垃圾语言

 关键字 - 瞎扯
  1. 在 2016 年学 JavaScript 是一种什么样的体验?
  2. Java官方安装包捆绑百度卫士杀毒软件
  3. 我们不需要JavaScript框架
  4. 你已经毁了JavaScript
  5. NodeJS会是昙花一现吗?
  6. Node程序员的反应:当我们讨论ES6新功能的优点时
  7. 欧洲杯激战正酣,如何用大数据变身专家级球迷
  8. NodeJS就是癌症[2011]
  9. JavaScript中的$$(*)代表什么和$选择器的由来
  10. 中国互联网2014大事记

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号