# 2022-04-06 你所不知道的 JS ES6 與未來發展 ###### tags: `JS` `ES6` `2022/04/06` `進度筆記` `前端心得` `讀書心得` --- # 語言規格(Language specification) > 或稱規範語言,是用於系統分析和設計, 不 像程式語言是用於系統運行。 - 規格語言不會直接使用, 比程式語言更抽象。 - 規格語言通常會精簡化。 - 如果這個 Program 沒有問題, 那它可以說是正確性的。 ---- # 命令稿(或稱手稿)語言 scripting language - 語法結構 簡單。 - 學習和使用 通常也簡單 - 通常以 直譯(Interpreting) 為主, 而不是編譯編譯(Compiling) 為主。 - Code 的開發產能會優於執行效能。 > 例如 JavaScript(簡稱 JS), [perl](https://www.cyut.edu.tw/~ckhung/b/pl/), [python](http://www.python.org), [php](http://www.php.net), [ruby](http://www.ruby-lang.org/en/) 或是 UNIX 上的 shells, MS Windows 的 visual basic...等, 可以算是 scripting languages 。 - ==用這些語言所寫的 code, 執行方式都是以直譯(interpreting) 為主。== - 但上述這些語言寫的 code, 執行效率可能不如 C, C++, Java...等以編譯(compiling)為主的程式, 但 "研發" 的速度上, 解譯會比編譯快上許多, 甚至數倍。 ## 編譯和直譯的語言 - 多半用於整合系統既有的 元件(unit)。 - 如果以蓋房子為喻: ``` 一般傳統編譯語言 C, C++, Java, Pascal 像建造公寓所用的重型機械, 怪手、推高機、山貓...等等。 也因重機械操作費時費力費工, 所以 成本高, 但成品單價也高, 可以造出 很多很多的制式公寓。 也能給很多使用者用~ 如果用 公共運輸工具 做比喻, 傳統編譯語言就像是捷運(MRT) , 一條列車造價高, 但可以使用的客戶比較多。 ``` ``` 而直譯語言則像是, 師傅們在做房屋裝潢、布置時所使用到的工具, 操作起來比較不費工, 但一次可能只造一棟公寓的裝潢, 因此 使用者比較少, 單價也比較低。 如果以 公共運輸工具 來比喻, Scripting 就像是 Taxi, 成本也許較低, 能載的客戶也少, 可能利潤也稍低。 ``` - 但其實現在的 Scripting language 可以做高階的整合, 也可以寫低階的程式語言, 甚至也有自己的 編譯器, 高階程式語言與手稿語言幾乎沒有明確界線, 例如[swig](https://www.cyut.edu.tw/~ckhung/b/mi/swig.php) 可以幫 C 語言寫懶人包(函式庫)與許多 Scripting language 連結。 - 目前很多 Scripting language 可完全替代傳統編譯語言。 # 參考文章: [Scripting Languages 簡介](https://www.cyut.edu.tw/~ckhung/b/pr/scripting.php) [手稿語言](https://zh.wikipedia.org/wiki/%E8%84%9A%E6%9C%AC%E8%AF%AD%E8%A8%80) ---- # ECMAScript 2015 Language Specification > 而 ECMAScript 是基於 直譯語言 所做的規範, JS 正是基於 ECMAScript 所實作的。 - ECMAScript 是由 **ECMA-262 specification** 中的  [Ecma International](https://www.ecma-international.org/ "http://www.ecma-international.org/") standards organization 訂立標準規範的。 # 參考文件: [JavaScript 語言的資源](https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Language_Resources) ----