BT

你的观点很重要! 快来参与InfoQ调研吧!

最终,JavaScript成为了一流语言

| 作者 Tom Goldenberg 关注  他的粉丝 ,译者 刘振涛 关注 12 他的粉丝 发布于 2017年5月17日. 估计阅读时间: 9 分钟 | ArchSummit社交架构图谱:Facebook、Snapchat、Tumblr等背后的核心技术

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

紧跟前端发展,共享一线技术——推荐关注InfoQ垂直公众号前端之巅

技术公司后端服务编程语言剖面图(图片来源:Stackshare.io)

 

2003年,保罗·格雷厄姆(Paul Graham)在文中提到,他的公司决定使用Lisp(一门编程语言)。在文章中他将Lisp描绘成计算机语言界的法语,它独特、深邃,能够表达难以描述的事物(亦即法语je ne sais quoi所指)。他指出自己公司相比竞争对手的优势在于Lisp。

如果Lisp像法语,那么现如今的JavaScript就像英语一般。尽管二者的语法不一致,但英语是世界上最广泛使用的语言,JavaScript是最广泛应用的计算语言。

然而,JavaScript仍未得到与其他语言同等的尊重。尽管它的使用率在创业公司和大型公司中持续增长,但若非必要,人们不会认为它是一门有用的语言。大公司的高级工程师声称它不是一门“真正的”编程语言,许多人并不知道除了操作像素外它还能被用于何处。

作为一名JavaScript工程师,我希望更深入地了解公众对这门语言的看法,并观察这些观点在现实中到底有多牢不可破。我发现,一些批评有失水准,但更多的批评则是有意义的。

不断增长的生态系统

除了样式效果外,JavaScript也被越来越多地应用于软件开发,例如后端任务、Web服务器以及数据处理。Zeit首席执行官Guillermo Rauch指出,JavaScript“不是人为设计出来的,它是在进化过程中得到的结果。它成型很快,起初只关注一个很小的目标,后来都是市场的力量改造了这门语言。

Rauch的公司提供一个仅在浏览器和服务器中使用JavaScript的开源Web框架,事实证明,许多公司都在做同样的事情。

Rauch的公司提供了一个仅在浏览器和服务器上使用JavaScript的开源Web框架。 事实证明,许多公司都在做同样的事情。根据展示公司技术栈信息的网站StackShare.io的数据,在后端语言的选取上,相比Python(4000)或Java(3900),更多公司使用JavaScript(6000)。这个网站面向的更多是创业公司,但它从侧面反映出JavaScript是一个不断增长的生态系统。以下是展示不同公司技术栈极各自市场份额的维恩图(数据来自StackShare.io)。

技术公司后端服务编程语言剖面图(市场占有率估值)

再来看看编程工作的数据吧,Indeed.com上的一个看法告诉我们,在美国,大多数编程工作都使用Java,但JavaScript并没有落后,如下图所示:

对JavaScript有正面影响的其他统计数据:

  • Github上JavaScript开源项目的数量最多(比Java多出50%)。
  • NodeJS被评为StackOverflow 2017年开发者调查中最受欢迎的框架。
  • JavaScript是Stack Overflow中最流行的编程语言。

对JavaScript的批评

我咨询过一位Oracle的朋友,他们的工程师对JavaScript有什么顾虑。他说“由于JavaScript是一门解释型无类型语言,对于系统编程来说它不是一门理想的编程语言”,这种针对JavaScript的投诉非常普遍。JavaScript函数接受任意类型的参数,但在Java中,如果参数不是特定类型¹就会引发错误。

function doSomething(literallyAnything) { return; }

我又咨询另外一位在谷歌工作的朋友,他向我指出NodeJS的一些公开的问题,他说,一些错误虽然微乎其微,但他会认为这个框架不够成熟。

Rauch指出,JavaScript的垃圾回收不是最理想的。另一个批评是Java和Python更适合数据科学类的项目,如机器学习和自然语言处理。这可能与这些语言可用的库有关,而非批判JavaScript的内在缺陷。学术界对Java和Python的依赖也助长了这种论调。

上述几位工程师都曾提到,每当讨论编程语言时,经常听到其他工程师贬低JavaScript。大家对于JavaScript用于后端任务依然心存疑虑,但是大部分敌意似乎又与语言和生态系统的现状无关。

JavaScript艺术的现状

JavaScript在过去5年中已经走过很长一段路,早期JavaScript用例一般像Facebook的“Like”按钮这样的功能,每当用户点击“Like”图标,页面不会刷新,但会改变页面状态,这种特性只能通过JavaScript在网络上实现。

开发者几年前开始通过JavaScript来制作单页面应用程序(SPA)。术语“单页”是指在浏览器中这些应用程序只加载一次代码,所有后续视图都是通过JavaScript生成的。反对者认为,用户需要花很长时间才能完成初始下载,在手机上更是长达20-30秒!

在过去的两年中,向浏览器发送JavaScript代码的技术已得到显著提高(参见:webpack)。这可以解决JavaScript Web应用缓慢的加载速度,提升性能并创建更好的用户交互体验。这是目前Web开发领域最先进的技术。

伴随着技术进步,出现了新的JavaScript范式。状态管理库将计算机科学原理应用于用户交互,JavaScript工程师的门槛变得更高。

在这些变化的背景下,对于早期阶段的公司来说,使用JavaScript作为后端语言非常有意义,如果您已拥有优秀的前端JS攻城师,此举可以让它们更轻松地协作,审核和共享代码。

尽管JavaScript最初是一门浏览器中的语言,但在计算机科学的各个方面-Web、移动端、物联网和后端服务中,它都变得更加普遍。工程师是明智的,不要因为他们对语言过时的看法而解雇他们。其实JavaScript一直是一门“真正的”编程语言,只是此时此刻,这种声明会比其他任何事情更容易被误解。

总结

从这些观察结果可以看出,JavaScript已经达到以下这些成为一流编程语言的标准:

  • 被创业公司和大型私营公司用作后端服务框架(NodeJS)
  • 有一个蓬勃发展的开源社区(在Github上最活跃)
  • 作为一门专业技能,有大量的招聘需求要求掌握JavaScript知识(Indee.com)

最后,一家公司决定贯彻某种技术方案都是需要妥协的。我们在Commandiv这款产品中就同时使用JavaScript作为前端和后端服务语言,但这并不适合搜有人,我们这么做决定一部分原因是因为我么熟悉JavaScript这门语言。为了在创业初期快速启动,请您使用最趁手的工具。

也就是说,我认为质疑JavaScript是否是一种“真正的”编程语言的时代已经过去,它的旅程远没有结束,但是其应用率和改进速度使我对其前进道路充满信心。

感谢Alim S. Gafar对本文进行审核。

汤姆·金伯格(Tom Goldenberg)是Commandiv的首席技术官兼联合创始人,Commandiv是一个人投资平台。

附注

尽管该语言不支持静态类型,但像Facebook和微软这样的公司已经发布了添加此功能的库(Facebook发布了Flow,微软发布了TypeScript)。

查看英文原文https://hackernoon.com/javascript-a-first-class-language-at-last-209376f69731

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT