語法糖

語法糖

語法糖(Syntacticsugar),也譯為糖衣語法,是由英國計算機科學家彼得·約翰·蘭達(PeterJ.Landin)發明的一個術語,指計算機語言中添加的某種語法,這種語法對語言的功能並沒有影響,但是更方便程式設計師使用。通常來說使用語法糖能夠增加程式的可讀性,從而減少程式代碼出錯的機會。語法糖和其他編程思想一樣重要,什麼duck type,人本接口,最小接口,約定優於配置,廣義來講都是一些思想上的"語法糖"。實際上從面向過程到面向對象也是一種語法糖,C語言可以通過它的指針、類型轉換,結構實現面向對象的編程風格,但是C++更進一步的推廣了這種風格,更加易用,不過到了C#把OO的風格發揮得淋漓盡致。

基本內容

語法糖語法糖
舉個例子:在C語言裡用a[i]表示*(a+i),用a[i][j]表示*(*(a+i*數組a第二維的長度)+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#發布新特性的時候我們不得不為之而鼓舞,為之而喝彩。新的語法可以釀造更好的編程風格,一些難以實現的方面也輕而易舉了。

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

相關詞條

相關搜尋

熱門詞條

聯絡我們