# 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)
----