究竟开发人员须要掌握多少门语言?「建议收藏」

究竟开发人员须要掌握多少门语言?

大家好,又见面了,我是全栈君。

究竟开发人员须要掌握多少门语言?「建议收藏」

诸如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开发人员的开发过程。可是相同还是这些开发人员,他们却须要学习一门新语言的输入和输出。而这些功能非常可能在其它地方都不会用到。

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

“不要反复造轮子”这一哲学在绝大多数开发人员心中根深蒂固,大公司们对此却并不买账。

那他们为何不仅仅是改动下现有语言用于新的用途呢?

答案非常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

译者:Mr小眼儿 校对:wxy

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115658.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 前端技巧|vue双向绑定原理,助你面试成功「建议收藏」

    前端技巧|vue双向绑定原理,助你面试成功「建议收藏」在面试一些大厂的时候,面试官可能会问到你vue双向数据绑定的原理是什么?有些小伙伴不知道是什么东西,这样你在面试官的眼里就大打折扣了。今天小千就来给大家介绍一下vue的双向绑定原理,千万不要错过啦。vue双向绑定大家其实对于这个问题不会很陌生,vue中采用mvvm的模式,内置vm将view层与model层两者进行关联,任何一方的变化都会让另外一方受到影响。那回答完后,面试官还会继续追问,请回答一下你理解的双向数据绑定背后的原理是什么?那今天我们就一起探讨一下vue的背后的一些方式实现。所谓要实现双向数

    2022年10月10日
    3
  • stardict and dictionaries

    stardict and dictionaries

    2021年5月3日
    160
  • java 多线程死锁案例

    java 多线程死锁案例java 多线程死锁案例

    2022年4月24日
    51
  • debug灯在哪_shutterbug

    debug灯在哪_shutterbug

    2022年8月20日
    7
  • OpenProcessToken LookupPrivilegeValue 和AdjustTokenPrivilege[通俗易懂]

    OpenProcessToken LookupPrivilegeValue 和AdjustTokenPrivilege[通俗易懂]OpenProcessToken函数功能用来打开与进程相关联的访问令牌函数申明WINADVAPIBOOLWINAPIOpenProcessToken(_In_HANDLEProcessHandle,_In_DWORDDesiredAccess,_Outptr_PHANDLETokenHandle);第一个参数ProcessHandle[in],输入参数,要打开的访问令牌所属的进程句柄,查询进程必须拥有PROCESS_QUERY_INF

    2022年6月25日
    28
  • html 检测输入是否数字,JavaScript怎么判断输入是否是数字?

    html 检测输入是否数字,JavaScript怎么判断输入是否是数字?JavaScript进行表单操作时,很多时候需要判断输入的内容是否为数字。JavaScript判断输入内容是否为数字的方法很多,下面本篇文章就来给大家介绍几种方法,希望对大家有所帮助。javascript判断输入是否是数字的方法:第一种方法isNaNisNaN:返回一个Boolean值,指明提供的值是否是保留值NaN(不是数字)。NaN:即NotaNumberisNaN(numValue)但…

    2022年6月22日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号