1. 程式人生 > >js之語法糖

js之語法糖

語法糖(Syntactic sugar),也譯為糖衣語法,是由英國電腦科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語,指計算機語言中新增的某種語法,這種語法對語言的功能並沒有影響,但是更方便程式設計師使用。通常來說使用語法糖能夠增加程式的可讀性,從而減少程式程式碼出錯的機會。

舉個例子:在C語言裡用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j),由此可見語法糖不是“現代語言”獨有,這種寫法簡潔明瞭,容易被人理解。

實際上從面向過程到面向物件也是一種語法糖,C語言可以通過它的指標、型別轉換,結構體實現面向物件的程式設計風格,但是C++更進一步的推廣了這種風格,更加易用,不過到了C#把

OO的風格發揮得淋漓盡致。OO的程式設計風格對於面向過程來說是不是一種語法糖呢?如果生硬地照此理解,只有計算機硬體指令才不算語法糖,而其他一切利用編譯器彙編器將程式碼抽象,和自然語言更相近的手段都算語法糖。

很多程式設計思想,程式設計理論層出不窮,當然,對於學習來說我們是要抓住技術的核心,但對於工程來說如何提高工程質量,如何提高工程效率也是我們要關注的,既然這些語法糖能輔助我們以更好的方式編寫程式碼為什麼要“抵制“呢?

語法糖和其他程式設計思想一樣重要,什麼duck type,人本介面,最小介面,約定優於配置,廣義來講都是一些思想上的“語法糖“。

不過也並不是沒有反對的聲音,這其中就有圖靈獎的第一個獲得者: Alan Perlis。.net從2.0到3.0到3.5底層CLR並沒有做更新,沒有新增任何新的IL指令,所以C#從2.0到3.0中所有的特性都是語法糖,就算從1.0到2.0,也只有一個

泛型不是語法糖,其餘的新特性也都是如此,但是每一次C#釋出新特性的時候我們不得不為之而鼓舞,為之而喝彩。新的語法可以釀造更好的程式設計風格,一些難以實現的方面也輕而易舉了。

需要宣告的是“語法糖”這個詞絕非貶義詞,它可以給我們帶來方便,是一種便捷的寫法,編譯器會幫我們做轉換;而且可以提高開發編碼的效率,在效能上也不會帶來損失。

很多程式設計思想,程式設計理論層出不窮,當然,對於學習來說我們是要抓住技術的核心,但對於工程來說如何提高工程質量,如何提高工程效率也是我們要關注的,既然這些語法糖能輔助我們以更好的方式編寫程式碼為什麼要“抵制“呢?

語法糖和其他程式設計思想一樣重要,什麼duck type,人本介面,最小介面,約定優於配置,廣義來講都是一些思想上的“語法糖

“。

不過也並不是沒有反對的聲音,這其中就有圖靈獎的第一個獲得者: Alan Perlis。.net從2.0到3.0到3.5底層CLR並沒有做更新,沒有新增任何新的IL指令,所以C#從2.0到3.0中所有的特性都是語法糖,就算從1.0到2.0,也只有一個泛型不是語法糖,其餘的新特性也都是如此,但是每一次C#釋出新特性的時候我們不得不為之而鼓舞,為之而喝彩。新的語法可以釀造更好的程式設計風格,一些難以實現的方面也輕而易舉了。

需要宣告的是“語法糖”這個詞絕非貶義詞,它可以給我們帶來方便,是一種便捷的寫法,編譯器會幫我們做轉換;而且可以提高開發編碼的效率,在效能上也不會帶來損失。