欢迎来到 Ian 的知识讲堂,本篇会用说故事的方式跟大家聊聊全端宠儿 - JavaScript 的小故事。
想看更多技术与资讯议题/小故事,欢迎按赞或是追踪我的粉丝专业: AwesomeCS 。
若想知道 C 语言与 UNIX 作业系统的小故事,可以参考该连结。
JavaScript 之父 – Brendan Eich 曾表示过自己并不喜欢这门程序语言,那 JavaScript 是如何在近年来一跃成为最受欢迎的程序语言之一呢?
布兰登·艾克
布兰登·艾克,美国程序技术专家与企业家, JavaScript 主要创造者与架构师,曾任 Mozilla 公司的技术长,并曾短暂担任执行长。
wikipedia
最初, JavaScript 作为一个脚本语言,被设计来增加网页与使用者的互动能力。开发团队仅花了 10 天就完成 JS 的原型设计。
笔者仍记得: 我在 2020 年底参加交通大学硕士班的推荐甄试时,有与面试官聊到我的主要技能,内容大概是:
考官: 你最擅长什麽语言阿?
我: JavaScript 。
考官: 喔, JAVA 阿。
我: 不,是 JavaScript !
考官: Java...Script...?
我: 对, JavaScript 。
笔者十分肯定自己在当时有用正确的发音将 JavaScript 这个名词给说出来。
上述的情境真的叫人好气又好笑,不过 JavaScript 之所以会叫做 JavaScript ,其原因也是十分的随性。
我想,正是因为开发团队的随性,才会让现代的 JS Developer 叫苦连天。
上图为 JavaScript 的神奇三角。
规则与定义方便开发者实作,标准化让开发者无须烦恼平台迁移的重工发生。
-- 谁说的? 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 的冰冻期不像机器学习一样长达 50 年的时间,但 JS 的新标准推动停滞也造成了一些影响,请参考以下资料:
从上面的资料不难发现,从 ES3 到 ES5 发行,间隔竟然长达 10 年之久!
由於在语言的复杂性意见上出现分歧,所以 ES4 是被弃用的,这也是 JQuery 取得成功的原因之一。
时至今日, JavaScript 已成为许多人的入门语言首选,在金门大学资工系上,更是有教授以 JavaScript 作为教学的主力工具。
至於为何笔者会说 JavaScript 成王了呢? 我想,数字会说话:
上图来源: ALPHAcamp 。
JavaScript 能够有如此的成长速度,笔者认为主要原因有四:
ECMA 标准持续推动,让 JavaScript 的语法越来越完整及多元,再加上这 10 年来智慧型手机的效能有非常可怕的成长速度。
笔者仍记得,在 10 年前左右的手机若有 1GHz 的时脉便非常吓人,之後的 5 年间更是朝着高时脉、多核心的方向发展,在 2012 年推出的 Nexus 7 ,其效能就足够运行 Ubuntu 作业系统了。
更别提现在十分流行的一页式网页设计都是在 Node.js 的帮助下完成的。
上面的用词可能不太精确, SPA 主要是利用前端框架 + Webpack 工具实现,而这些工具都是符合 Node.js 标准的第三方套件。
用处可多了,时下最流行的区块链、机器学习等技术, JS 开发者都可以在吸收其基础知识後参一脚,像是:
我在去年的学生计算机年会就有简单的提到 JS 的小故事,不过当时真的太紧张,有很多东西都漏讲了,实在是有些可惜(?)
因此,我也趁这次机会重新研读 JavaScript 的历史并分享给大家~!
如果想学 JavaScript ,可以参考该问答串。
一. 【文件】- host文件 【位址】- WINDOWS\system32\drivers\etc...
大家好,我是YIYI,今天是我开始铁人赛的第一天。请大家多多指教! 为什麽会想自己制作APP? 会想...
更新 我把从第一天到现在每天的 Home 目录都放上 GitHub 了,README.md 里面有...
很多时候,我们的state必须要透过HTTP Request从後端取得。然而发送Request常用的...
相信这个问题应该困扰了很多菜鸡工程师 (包括我 如果你还在犹豫 作品集很重要吗?好麻烦,真的有需要做...