語法糖(Syntactic sugar)厘肮,也譯為糖衣語法,是由英國計算機(jī)科學(xué)家彼得·約翰·蘭達(dá)(Peter J. Landin)發(fā)明的一個術(shù)語
指計算機(jī)語言中添加的某種語法捡需,這種語法對語言的功能并沒有影響愈魏,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性掰伸,從而減少程序代碼出錯的機(jī)會
編輯:
在C語言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j)[1]? 皱炉,由此可見語法糖不是“現(xiàn)代語言”獨(dú)有,這種寫法簡潔明了狮鸭,容易被人理解合搅。
基本解釋編輯:
實(shí)際上從面向過程到面向?qū)ο笠彩且环N語法糖,C語言可以通過它的指針歧蕉、類型轉(zhuǎn)換灾部,結(jié)構(gòu)體實(shí)現(xiàn)面向?qū)ο蟮木幊田L(fēng)格,但是C++更進(jìn)一步的推廣了這種風(fēng)格惯退,更加易用梳猪,不過到了C#把OO的風(fēng)格發(fā)揮得淋漓盡致。OO的編程風(fēng)格對于面向過程來說是不是一種語法糖呢蒸痹?如果生硬地照此理解春弥,只有計算機(jī)硬件指令才不算語法糖,而其他一切利用編譯器叠荠、匯編器將代碼抽象匿沛,和自然語言更相近的手段都算語法糖。
學(xué)習(xí)語法糖的意義編輯
很多很多編程思想榛鼎,編程理論層出不窮逃呼,當(dāng)然鳖孤,對于學(xué)習(xí)來說我們是要抓住技術(shù)的核心,但對于工程來說如何提高工程質(zhì)量抡笼,如何提高工程效率也是我們要關(guān)注的苏揣,既然這些語法糖能輔助我們以更好的方式編寫代碼為什么要“抵制“呢?
語法糖和其他編程思想一樣重要,什么duck type推姻,人本接口平匈,最小接口,約定優(yōu)于配置藏古,廣義來講都是一些思想上的“語法糖“增炭。
不過也并不是沒有反對的聲音,這其中就有圖靈獎的第一個獲得者: Alan Perlis拧晕。.net從2.0到3.0到3.5底層CLR并沒有做更新隙姿,沒有添加任何新的IL指令,所以C#從2.0到3.0中所有的特性都是語法糖厂捞,就算從1.0到2.0输玷,也只有一個泛型不是語法糖,其余的新特性也都是如此靡馁,但是每一次C#發(fā)布新特性的時候我們不得不為之而鼓舞欲鹏,為之而喝彩。新的語法可以釀造更好的編程風(fēng)格奈嘿,一些難以實(shí)現(xiàn)的方面也輕而易舉了。
“語法糖”是一種便捷的寫法吞加,編譯器會幫我們做轉(zhuǎn)換裙犹;而且可以提高開發(fā)編碼的效率,在性能上也不會帶來損失衔憨。
例:async 函數(shù)是 Generator 函數(shù)的語法糖叶圃。
前文有一個 Generator 函數(shù),依次讀取兩個文件践图。