首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript 会在编程语言占统治地位吗?

编译:安翔

JavaScript 现在是大多数开发者都会使用的编程语言。网络效应会推动它成为有史以来第一个真正占统治地位的编程语言吗?

作者简介:Anil Dash,他是 Fog Creek Software 的首席执行官,同时还是 Glitch(一个友好的编程社区) 和 Manuscript 的作者。 一直致力于让技术更具道德和人性化。 更多信息:http://anildash.com/

大约十年前,编程的方式发生了巨大的变化。

过去,编程往往是一件孤独的事情,程序员之间缺乏交流,大家都沉浸在自己的世界里,程序员之间相互合作的情形仅仅发生在公司内部或者开源项目中。而就在十年前,同事之间进行合作的情况变得普遍,编程这件事的社交体验突然变得无比寻常。从此,我们分享代码的方式、寻找问题答案的方式以及探索新技术的方式,都开始与其他程序员的态度和行为有着紧密的联系。

简而言之,电脑被互联网连接在一起,程序员就像这些电脑一样,同样因为互联网而联系起来。

▌互联网

互联网对编程方式的影响体现在多方面,最明显的有以下途径:

Stack Overflow 上汇集了众多编码问题以及针对这些问题的答案,它是有关编程问题可靠答案的重要信息来源。(必要的声明:我主要使用 Stack Overflow 来获取有用的答案,虽然我并不是它的资深回答者,但我依然是它的忠实支持者。)虽然参与 Stack Overflow 社区的障碍众所周知,但该网站的好处也是很明显的,其针对编程问题的答案非常丰富,这种问答模式增强了社交性,深度和前沿的技术问题能够引导程序员做出正确的技术选型。一个框架或者工具包如果在 Stack Overflow 的积极回答越多,那么使用它的人就会越多。

GitHub 是一个提供编程协作的强大平台,它诞生于十年前,程序员可以通过它进行项目协作,分别向同一个项目提交自己的代码。尽管它最初的目的主要是为了推广当时新兴的分布式版本控制工具 Git,但随着托管在 GitHub 平台上软件数量越来越多且质量越来越高,其社会价值得到前所未有的提升。项目获得的 star、fork、watcher 数量直观地展示了该项目的优秀程度。GitHub 也存在缺点,比如学习 Git 并不容易,又比如项目应对变化缺乏足够的灵活性,这些因素都会使一些用户难以参与进来。但是,尽管存在一些缺点,GitHub 的社交特性深深影响了开发人员对新工具和新技术的追随。

最后,关于科技新闻和讨论的网站也很多,主要代表有 HackerNews。尽管它是众多大型网络编程社区中最具敌意的一种类型,但它无形中有助于推动和提升新的软件构建方式,催生更多新技术和新想法。“黑客新闻”对工具的放大通常有助于它们达到临界点,而人们对产品的讨论则是另一种社交形式,有助于大家对某一平台进行深入的评估。另外,聚焦产品的社区也可以实现这一功能,甚至更受欢迎,比如 Product Hunt。

如果我们仔细观察这些社区的缺陷,就会看到更深层次的模式:软件的评估主要基于其社会价值和反馈,而不仅仅是某些表面上“客观”的技术优点。

技术一直与社会背景息息相关,对技术平台风险或者可靠性的评估一直依赖于社会指标。但是随着编程社交网络的逐渐壮大,几乎涵盖了和编程相关的方方面面,于是编程社交网络超越了社会指标成为技术评估的主要手段。

类似地,过去专业文件对技术成熟度的评估非常权威,就像是自上而下的指示,而如今这种形式已经变成了辅助手段,现在,针对某些框架和工具,通过加入书签的次数以及评论数就可以直观地看到这门技术的热度,相比于书签和评论这种直观的方式,曾经权威的文件形式已经变得黯然失色。即使是纯粹的社交因素,比如 Gitter 或者 Slack 聊天室中参与项目的人数,或者在社交媒体上关注项目的人数,都会影响开发者对新技术的关注度。

▌Atwood 法则

尽管最近 Jeff Atwood 在社交媒体上分享的东西让我想撞墙,但是多年以来,他作为知名软件博主确实发表了很多有价值的见解。其中由他名字命名的这条法则展示了超乎寻常的先见之明:

所有能够用 JavaScript 编写的应用程序最终都会用 JavaScript 来编写。

https://blog.codinghorror.com/the-principle-of-least-power/

Jeff 的灵感来源于互联网之父 Tim Berners-Lee(蒂姆·伯纳斯·李)所阐述的富有洞察力的“最小权力原则”。当 Jeff 发表那篇博文之后,人们仍然认为 JavaScript 只是玩具,并且很多人都认为所有程序都使用 JavaScript 来编写的想法非常荒谬。当然,互联网的神奇之处就在于其更新速度超乎预料,大概十二年后,强大的社区(https://www.reddit.com/r/atwoodslaw/)诞生了,它致力于将更多的软件移植到 JavaScript,或者使用 JavaScript 来重写。

Atwood 法则说明 JavaScript 有能力重新改写几乎任何类型的代码。考虑到任何图灵完备语言都应该能够用其他语言编写的功能,这个观点变得很有趣,但是对于可能出现什么样的行为没有特别的启发。Atwood 法则的重点并不是采用 JavaScript,而是表达用其他语言实现想法的潜力。

▌JavaScript 受到网络推动会怎样?

如今 JavaScript 的覆盖面越来越广。ECMAscript 标准中描述了开放式语言。像 TypeScript 这样的相邻语言为编码人员提供了很好的条件,以换取与 JavaScript 生态系统的兼容性。JavaScript 还有像 Node 这样的环境。通过 npm 这样的包管理工具,可以即时访问多年的代码。JavaScript 语言周边的基础设施非常强大,一些基础设施甚至使用 JavaScript 语言来为其他语言提供构建工具或者自动化功能。更为重要的是,JavaScript 几乎遍布全球数十亿台设备的 Web 浏览器。

如此广泛的应用充分展示了 JavaScript 的流行和主导地位。实际上,最近 Stack Overflow 针对开发人员的调查(https://insights.stackoverflow.com/survey/2018/#technology)显示,将近 70%的人声称 JavaScript 是他们使用的语言之一。如上所述,参与 Stack Overflow 社区的一些障碍可能会影响这种调查,但是抛开这些因素,其整体趋势依然很明显。使用 JavaScript 的编码器的比例在不断增加,在过去几年中增长了大约 15%。

这表明 JavaScript 可能正在以网络的形式高速发展,并成为相关技术的生态系统。 需要注意的是,对于那些不存在赢家通吃的领域,特定领域的语言将始终在重点领域具有独特的价值。 但对于通用编程领域,从电子表格宏到物联网硬件的所有内容似乎都默认支持 JavaScript。

尽管通过社交网络的热度评估一项编程语言并不一定是有效的。但种种迹象表明 JavaScript 生态系统越来越强大。尽管大多数开发人员都会使用多种编程语言,事实上,大多数的编程人员在他们的工作中都使用不止一种语言,但是前瞻性地投身 JavaScript 对于他们来说都是有意义的。

▌JavaScript 之于 Glitch

当然,我整天都在和 Glitch 打交道,所以你知道我们的团队对此有了一个看法。别担心:Glitch 几乎可以用任何通用语言运行代码。我们已经有 Python、PHP 和 Ruby 项目在社区中愉快地运行。

但是我们选择 JavaScript 和 Node 作为我们在工作中使用 Glitch 的主要平台。这有很多原因,其中一个原因是我们是一个小团队,我们希望我们投注的技术能够为社区提供最大的价值。我们坚信,随着时间的推移,我们对 JavaScript 生态系统的投资将变得越来越有价值。

我们还研究了 Glitch 生态系统中的应用程序、库、模块和代码片段的网络价值,我们开始为编程人员构建更多的工具,并利用机器学习来简化编码,我们认为集中注意力将带来收益。选择一个擅长的语言有助于确保我们创建的内容是有价值、适用并且立即有用的,而不在多种语言间徘徊。

如果 Haskell 从零开始出现并被用到数十亿浏览器中,并且小学生也开始学习它,Glitch 就会在那里。Glitch 团队中肯定有人希望我们可以提供与其他语言一样好的体验,就像我们使用 JavaScript 一样。但是随着他们现在的趋势,我们想要解释我们在 JavaScript 和 Node 上做更大赌注的理由,而不是仅仅说“我们是语言不可知的”。这里有依据理论、思想和一点历史,以及相当多的数据,所有这些信号都表明这里有特别的事情发生。

事实是,我们从未见过一种开放语言成为所有开发者的通用编程语言。如果大多数编码工作都用一种语言完成,我们不知道这可能会产生哪些好处,除非有特别的理由要使用特定于领域的语言来让我们不这样做。

我们可能正处在一个前所未有的编程时代的悬崖边上,我们可能会看到采用和使用整个编程语言的新模式。这种潜力让我们兴奋不已,并且想要屏住呼吸看看整个生态系统如何发挥。但更重要的是,我们很高兴所有这些发展将使 Glitch 社区能够制作出更具表现力和更有意义并且在代码中更容易实现的应用程序。

觉得本文对你有帮助?请分享给更多人

关注「前端大全」,提升前端技能

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180602B1I9X800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券