微信号:frontshow

介绍:InfoQ大前端技术社群:囊括前端、移动、Node全栈一线技术,紧跟业界发展步伐。

如果JavaScript成为第一个占领统治地位的编程语言,会怎样?

2018-05-21 17:16 无明 译
作者|Anil Dash
译者|无明
编辑|覃云

JavaScript 已经成为大多数开发者工具箱的一部分。如果随着网络的发展,JavaScript 成为有史以来第一个真正占统治地位的编程语言,那会怎样?

大约十年前,编码文化发生了重大变化。

从最开始的孤军作战、与公司或开源项目里的同事合作,突然变成了一种更具社交性的体验。从如何分享代码到如何寻求答案,再到如何发现新技术,这一切都其他程序员的态度和行为有了更多的联系。

简单地说,软件开发者通过网络相连,就像他们的电脑在过去几十年里所经历的变化一样。

  网  络  

网络对编程文化的影响表现在很多方面,其中有一些是很值得我们细究的:

Stack Overflow 迅速崛起,为编程相关问题和其他常见问题提供答案,成为编程相关信息的主要来源。众所周知,参与 Stack Overflow 社区是有一定门槛的,但毫无疑问的是,它形成了一种编程知识网络,提升了编程信息的可发现性,并加速形成了社交可以促进技术采用的想法。一个框架或工具如果在 Stack Overflow 上有活跃的标签,那它就更有可能会吸引到新的采用者。

代码协作遵循类似的模式:GitHub 在十年前就已经成为一个强大的代码分享平台。尽管它的原始价值在于推广当时新兴的分布式版本控制工具 Git,但它的社交价值却扩展成为托管项目价值和可靠性的依据。一个项目的星号、分支或关注者数量代表了代码的可信度。

不过,GitHub 也有它的问题,比如 Git 的学习曲线、组织方式围绕项目变更而不是项目本身而展开,所有这些因素都会导致一些用户难以参与到这个网络中来。尽管如此,GitHub 上的社交信号仍然深深影响了开发者对工具和技术的采用。

最后,我们有很多关于新闻和讨论的网络信息来源,比如 Hacker News 就是其中最为重要的一个。尽管这是众所周知的大型网络编程社区中最具敌意的一个,但它仍然在无形中推动了软件新技术和新想法的产生。Hacker News 对工具的放大通常有助于工具的大规模采用,而对产品的讨论则是另一种社交信号,编程世界里的人们通过这种方式来评价一个特定的平台。在一定程度上,更加聚焦产品的社区(如 Product Hunt)也具备了一些这方面的功能。

对于上述的每一种情况,如果我们能够忽略社区方面存在的瑕疵,就可以看到更深层次的模式:我们对软件的评价主要是基于它们在社交方面的成功表现,而不仅仅是表面上的“客观”技术优势。

技术一直在社交背景下存在,对技术平台的风险或可靠性的评估一直依赖于社交指标。但是,这些模式的加速出现以及围绕代码的社交网络的扩展意味着机构指标(如“是哪家公司在为项目开发提供资金支持?”)现在仅次于社交信号。

类似地,自上而下的技术成熟度指标需要通过自下而上的指标来补充,例如有多少人关注某个框架或者有多少人给某个工具写评论。在考察新技术时,即使是纯粹的社交因素,比如 Gitter 或 Slack 聊天室中项目参与者的数量,或者在社交媒体上关注项目的人数,也会被纳入我们的考虑范围。

然后定律出现了

尽管 Jeff Atwood 在社交媒体上分享的每一件事几乎都会让我崩溃,但在过去几年,他确实表达了一些很有价值的观点。也许再也没有什么能够比以他的名字命名的定律(Atwood 定律)更有先见之明的了:

任何可以用 JavaScript 编写的应用程序最终都将用 JavaScript 编写。

Jeff 的灵感来源于网络之父 Tim Berners-Lee 所提出的“最小权力原则(Principle of Least Power)”。但在 Jeff 写那篇博文时,JavaScript 还只是个“玩具”,使用 JavaScript 来开发一切的想法似乎有点荒谬。然而,互联网在发展,几十年后,那些移植到 JavaScript 或使用 JavaScript 重写的项目都被记录了下来(https://www.reddit.com/r/atwoodslaw/)。

Atwood 定律说的是使用 JavaScript 重新实现其他编程语言代码的能力。一门图灵完备的编程语言能够实现使用其他语言开发的功能,但对于可能出现什么样的行为并没有特别的说明。Atwood 定律并没有提到 JavaScript 是否会被大规模采用,只是说 JavaScript 拥有实现其他编程语言特性的潜力。

但如果 JavaScript 变成了一个网络呢?

现在有很多东西被认为是“JavaScript”。ECMAscript 标准描述了一种开放式语言,TypeScript 为开发者提供便利以换取与 JavaScript 生态系统的兼容性,我们有 Node 环境,我们还能通过包管理工具 npm 来访问多年的编码成果。围绕 JavaScript 的基础设施几乎无穷无尽,甚至还有一些基础设施使用 JavaScript 来为其他语言提供构建工具或自动化。在全球数十亿台设备上运行的浏览器正在解析无处不在的 JavaScript。

这些足以说明 JavaScript 的流行和主导地位。实际上,最近的 Stack Overflow 开发者调查显示,将近 70%的人声称 JavaScript 是他们正在使用的语言之一。JavaScript 开发者的比例在不断增加,在过去几年中增长了大约 15%。

这表明,JavaScript 可能正在成为一种网络和相关技术的生态系统。需要事先说明的是,世界上并不存在通吃赢家——特定领域语言在特定领域将始终具有独特价值。那么对于一般用途的编程来说呢?从电子表格宏到物联网硬件,所有这些东西似乎都默认使用 JavaScript 作为主要的编程方式之一。

将编程语言视为社交网络,并以此来判断这项技术,我们很难说这样的方式是否正确。但每一个迹象都表明,围绕 JavaScript 生态系统的反馈循环正在逐渐形成。大多数“严肃”的开发者工具都支持多语言,而如果它们能够在 JavaScript 上大力投入,或许会有更好的未来。

Glitch 爱上 JavaScript

当然,我整天都在研究 Glitch,所以我们的团队对此有自己的看法。别担心:Glitch 几乎可以运行任何通用语言的代码。在这个社区中,我们已经有了 Python、PHP 和 Ruby 项目。

不过,在工作中我们还是选择 JavaScript(和 Node)作为主要平台。这里有很多原因,其中的一个原因是我们是一个小团队,我们希望我们所投注的技术将为社区提供最大的价值。我们认为,随着时间的推移,我们对 JavaScript 生态系统的投资将变得更有价值。

我们还研究了 Glitch 生态系统中的应用程序、库、模块和代码片段的网络价值,我们认为专注将给我们带来好处,因为我们在为开发者构建更多的工具,并应用机器学习技术来简化编程工作。专注于一个领域能够确保我们所创造的东西是有价值的,而不是分散精力去支持所有语言。

当然,现在还没有板上钉钉。如果 Haskell 从零开始,占领数十亿浏览器,并从小学开始就教孩子们学习 Haskell,那么 Glitch 也会选择它。Glitch 团队中肯定有人希望我们也能为其他语言提供像 JavaScript 那样的良好体验。但从它们现在的趋势来看,我们希望在 JavaScript 和 Node 上压更大赌注。理论、想法和一点点的历史,还有相当多的数据,所有这些信号都表明,这里将会有一些特别的事情要发生。

事实是,我们从未见过一门开放性的语言能够成为开发者通用的编程语言。我们并不知道,如果大多数编码工作可以使用一种语言来完成(除非有特别的理由要使用特定于领域的语言),将会给我们带来哪些好处。

我们可能身处一个前所未有的编码时代,可能会看到新的编程语言使用模式的出现。这种潜在的可能性让我们兴奋不已,我们屏住呼吸,看着整个生态系统的发展。但更重要的是,所有这些发展将使 Glitch 社区能够开发出更具表现力、更有意义、更容易实现的应用程序。

  英文原文

https://medium.com/@anildash/what-if-javascript-wins-84898e5341a

前端之巅

「前端之巅」是 InfoQ 旗下关注大前端技术的垂直社群。紧跟时代潮流,共享一线技术,欢迎关注。

  活动推荐

PWA、Web 框架、UI 与动画、Node... 大前端的下一站在哪里?前端工程师的价值和成长路径是什么?GMTC2018 上,来自 Google、Facebook、BAT 等 60+ 国内外一线前端大牛,将与你面对面探讨大前端领域最新技术趋势和实践,想要升职加薪就快来吧!扫描下方二维码或点击“阅读原文”了解更多大会详情!

目前大会 8 折热销中,团购更优惠,购票咨询:18514549229(同微信)


 
前端之巅 更多文章 利用Nuxt.js创建服务端渲染的Vue.js应用程序 为什么说Flutter让移动开发变得更好? 利用深度学习进行前端自动化开发 前端每周清单:Redux 4.0,用Kotlin重构Java应用 七行JSON代码将你的网站变成移动应用
猜您喜欢 Espresso实战:快速的Android UI自动化测试 10 年博客10 个故事 制定混合云规划必须考虑的四步骤 常用的MySQL语句写法 周报04 | 推荐一款出行背包?