2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

最终,JavaScript 成为了一流语言

  • 2017-05-16
  • 本文字数:2594 字

    阅读完需:约 9 分钟

紧跟前端发展,共享一线技术——推荐关注 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

2017-05-16 19:008424
用户头像

发布了 63 篇内容, 共 135.2 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

云备份技术解析:备份删除&合并原理

天翼云开发者社区

云备份

AI+代理IP手把手教你爬取某度

袁袁袁袁满

AI 代理IP 免费代理ip Python爬虫 爬虫实战

真正懂生产的工业智能体长啥样?一个评测告诉你答案

王吉伟频道

工业互联网 智能体 工业智能体 Agents 工业大模型

如何与Cursor结对编程?

RockBot

AI技术实践 cursor

MES助力电线电缆行业生产:从质量管控到追溯管理

万界星空科技

mes 电线电缆行业 制造业工厂 电线电缆mes 生产管理MES系统

汽车上云的不可逆之路

脑洞汽车

AI

CAD怎么将实体转换为网格

极客天地

zk源码—会话的实现原理

电子尖叫食人鱼

Java

促销系统:促销活动、优惠券、优惠规则概念模型设计

量贩潮汐·WholesaleTide

StarRocks Community Monthly Newsletter (Mar)

StarRocks

OLAP 存算分离架构 StarRocks 湖仓一体 数据库 大数据

数字先锋|文化传承新引擎:班智达科研项目云端腾飞!

天翼云开发者社区

云服务 教育数字化

通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等

阿里云云效

阿里云 云原生 通义灵码

【IoTDB 线上小课 14】我们为什么要做树表双模型?

Apache IoTDB

让我看看有多少人不知道Vue3中也能实现高阶组件HOC

不在线第一只蜗牛

Java JavaScript 前端

赋能能源 | 智慧数据,构建更高效智能的储能管理系统

KaiwuDB

数据库 kwdb

《Operating System Concepts》阅读笔记:p733-p734

codists

通义灵码 Rules 库合集来了,覆盖Java、TypeScript、Python、Go、JavaScript 等

阿里巴巴云原生

阿里云 云原生 通义灵码

Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合

阿里巴巴云原生

Java

云备份技术解析:云备份 CT-CBR 关键技术介绍

天翼云开发者社区

云备份

Sentinel源码—ProcessorSlot的执行过程

电子尖叫食人鱼

小白速进!30 天吃透低代码,全是超绝干货!

代码制造者

低代码 自学 无代码

AI智上 | 用友凭借AI之力,绘财务数智化新蓝图

用友智能财务

SvelteKit 最新中文文档教程(21)—— 最佳实践之图片

冴羽

前端 前端框架 React Svelte SvelteKit

Arthas watch (方法执行数据观测)

刘大猫

Arthas 图像处理 图像分割 光学成像 光电成像技术

[方案讨论]怎么把大量电话号码批量导入手机通讯录,联系人号码导入苹果iphone华为小米等手机

一码平川

虚拟化NFSoRDMA基础的分离式存储解决方案,用于AI工作负载

Sergey Platonov

性能测试 虚拟化 高性能计算, 高性能计算架构

Edge 浏览器推出 Copilot Vision:免费实时解析屏幕内容;Aqua Voice:极速 AI 语音输入工具丨日报

声网

京东3D空间视频生成技术探索与应用

京东零售技术

阿里云OSS应对DDoS攻击策略

网络安全服务

阿里云 CDN 域名解析 DDoS DDoS 攻击

1688代采系统功能深度解析:如何通过自动采集商品详情数据API接口实现高效运营

代码忍者

1688代采集运系统

勒索软件介绍

天翼云开发者社区

勒索攻击

最终,JavaScript成为了一流语言_JavaScript_ Tom Goldenberg_InfoQ精选文章