[小故事]跌破众人眼镜! 聊聊 JavaScript 的封王之路

欢迎来到 Ian 的知识讲堂,本篇会用说故事的方式跟大家聊聊全端宠儿 - JavaScript 的小故事。

想看更多技术与资讯议题/小故事,欢迎按赞或是追踪我的粉丝专业: AwesomeCS

若想知道 C 语言与 UNIX 作业系统的小故事,可以参考该连结

爹不疼娘不爱!这样的孩子注定会失败吗?

JavaScript 之父 – Brendan Eich 曾表示过自己并不喜欢这门程序语言,那 JavaScript 是如何在近年来一跃成为最受欢迎的程序语言之一呢?

Brendan Eich
布兰登·艾克
布兰登·艾克,美国程序技术专家与企业家, JavaScript 主要创造者与架构师,曾任 Mozilla 公司的技术长,并曾短暂担任执行长。
wikipedia

最初, JavaScript 作为一个脚本语言,被设计来增加网页与使用者的互动能力。开发团队仅花了 10 天就完成 JS 的原型设计。

JAVA 与 JavaScript 的关联性?

笔者仍记得: 我在 2020 年底参加交通大学硕士班的推荐甄试时,有与面试官聊到我的主要技能,内容大概是:

考官: 你最擅长什麽语言阿?
我: JavaScript 。
考官: 喔, JAVA 阿。
我: 不,是 JavaScript !
考官: Java...Script...?
我: 对, JavaScript 。

笔者十分肯定自己在当时有用正确的发音将 JavaScript 这个名词给说出来。

上述的情境真的叫人好气又好笑,不过 JavaScript 之所以会叫做 JavaScript ,其原因也是十分的随性

  • 在 1995 年 5 月时,这个用来添加网页互动性的脚本语言被称为 Mocha
  • 同年 9 月, Mocha 又被正名为 LiveScript
  • 你以为这样就结束了吗? 错!还是熟悉的 1995 年 ( 12 月),网景公司与昇阳电脑公司组成的开发团队为了让 LiveScript 搭上 JAVA 的潮流,将 LiveScript 正名为 JavaScript

我想,正是因为开发团队的随性,才会让现代的 JS Developer 叫苦连天。

上图为 JavaScript 的神奇三角。

JS 的标准化: ECMAScript 。

规则与定义方便开发者实作,标准化让开发者无须烦恼平台迁移的重工发生。
-- 谁说的? Ian 说的。

1995 年, IE 浏览器诞生了,调皮的微软直接将网景公司的 JS 直译器进行逆向工程并基於 JavaScript 创造了 JScript 脚本语言。
这样的举动,会造成一样的脚本程序在不同的浏览器上会有不同的运行结果。在当时,网页开发者通常会把「用 Netscape 可达到最佳效果」或「用 IE 可达到最佳效果」的标志放在首页上。

对於商业化的工程工具,标准化是一定要走的路,像是: 我们目前在电脑上使用的浮点数运算也遵守了 IEEE 754 的规范。

隔年年底,网景公司向 ECMA 提交了语言标准, 1997 年 6 月, ECMA 以 JavaScript 为基础制定了 ECMAScript 标准规范 ECMA-262
有了标准规范後,即使在当时的市面上有 JavaScript 、 JScript 、 ActionScript ,开发者也不用因为平台迁移而感到烦恼(尽管直译器的设计与实作不尽相同)。

实际上,现今各家浏览器对 JavaScript 的实作仍不尽相同,开发者在开发时仍需考虑新标准的普及率,任何语法我们都可以在 Can i use 这个网站上得到答案。

JavaScript 的冰河时期

虽然 JavaScript 的冰冻期不像机器学习一样长达 50 年的时间,但 JS 的新标准推动停滞也造成了一些影响,请参考以下资料:

  • ECMA-262的第一个版本於 1997 年 6 月被 ECMA 组织采纳
  • ECMAScript 3 (ES3) 发行於 1999 年
  • ECMAScript 4 (ES4) 遭弃用(原因是贸然大幅度更新对用户不太好所以改成每年逐一释出)
  • ECMAScript 5 (ES5) 发行於 2009 年
  • ECMAScript 6 (ES6) 发行於 2015 年
  • ..随後每年稳定发行

从上面的资料不难发现,从 ES3 到 ES5 发行,间隔竟然长达 10 年之久!

由於在语言的复杂性意见上出现分歧,所以 ES4 是被弃用的,这也是 JQuery 取得成功的原因之一。

回到正题, JavaScript 到底是如何成王的?

时至今日, JavaScript 已成为许多人的入门语言首选,在金门大学资工系上,更是有教授以 JavaScript 作为教学的主力工具。
至於为何笔者会说 JavaScript 成王了呢? 我想,数字会说话:

上图来源: ALPHAcamp

JavaScript 能够有如此的成长速度,笔者认为主要原因有四:

  • ECMA 标准化的持续推动
  • 能够为网页添增互动性
  • 近年智慧型手机的普及以及性能提升
  • Node.js

ECMA 标准持续推动,让 JavaScript 的语法越来越完整及多元,再加上这 10 年来智慧型手机的效能有非常可怕的成长速度。

笔者仍记得,在 10 年前左右的手机若有 1GHz 的时脉便非常吓人,之後的 5 年间更是朝着高时脉、多核心的方向发展,在 2012 年推出的 Nexus 7 ,其效能就足够运行 Ubuntu 作业系统了。

更别提现在十分流行的一页式网页设计都是在 Node.js 的帮助下完成的。

上面的用词可能不太精确, SPA 主要是利用前端框架 + Webpack 工具实现,而这些工具都是符合 Node.js 标准的第三方套件。

除了网页开发, JS 有何用处?

用处可多了,时下最流行的区块链、机器学习等技术, JS 开发者都可以在吸收其基础知识後参一脚,像是:

  • [区块链] Hyperledger Fabric
    Hyperledger Fabric 最初由 IBM 主导开发,之後便贡献给 Linux 基金会, Fabric 可以让企业搭建联盟链并在上面放入商业逻辑,其中智能合约、後端的串接都有完整的 Node.js SDK 可以使用。
  • [机器学习] BrianJS
  • [机器学习] TensorFlow.js
  • [资料图表化] D3.js

总结

我在去年的学生计算机年会就有简单的提到 JS 的小故事,不过当时真的太紧张,有很多东西都漏讲了,实在是有些可惜(?)
因此,我也趁这次机会重新研读 JavaScript 的历史并分享给大家~!

如果想学 JavaScript ,可以参考该问答串

Reference


<<:  道德是资安首要议题

>>:  请益 关於 excel vba 误差线

【Laravel 】虚拟主机配置

一. 【文件】- host文件 【位址】- WINDOWS\system32\drivers\etc...

30天零负担轻松学会制作APP介面及设计【DAY 01】

大家好,我是YIYI,今天是我开始铁人赛的第一天。请大家多多指教! 为什麽会想自己制作APP? 会想...

Day 03:转吧转吧七彩霓虹灯之 p10k

更新 我把从第一天到现在每天的 Home 目录都放上 GitHub 了,README.md 里面有...

【Day.29】React进阶 - 以Redux Thunk处理非同步资料流

很多时候,我们的state必须要透过HTTP Request从後端取得。然而发送Request常用的...

[Day 2] 到底该不该做作品集

相信这个问题应该困扰了很多菜鸡工程师 (包括我 如果你还在犹豫 作品集很重要吗?好麻烦,真的有需要做...