語法糖

語法糖(Syntactic sugar),也譯為糖衣語法,是由英國計(jì)算機(jī)科學(xué)家彼得·約翰·蘭達(dá)(Peter J. Landin)發(fā)明的一個(gè)術(shù)語

指計(jì)算機(jī)語言中添加的某種語法,這種語法對(duì)語言的功能并沒有影響,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯(cuò)的機(jī)會(huì)

編輯:

在C語言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j)[1]? ,由此可見語法糖不是“現(xiàn)代語言”獨(dú)有,這種寫法簡(jiǎn)潔明了,容易被人理解。

基本解釋編輯:

實(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)格對(duì)于面向過程來說是不是一種語法糖呢?如果生硬地照此理解,只有計(jì)算機(jī)硬件指令才不算語法糖,而其他一切利用編譯器、匯編器將代碼抽象,和自然語言更相近的手段都算語法糖。

學(xué)習(xí)語法糖的意義編輯

很多很多編程思想,編程理論層出不窮,當(dāng)然,對(duì)于學(xué)習(xí)來說我們是要抓住技術(shù)的核心,但對(duì)于工程來說如何提高工程質(zhì)量,如何提高工程效率也是我們要關(guān)注的,既然這些語法糖能輔助我們以更好的方式編寫代碼為什么要“抵制“呢?

語法糖和其他編程思想一樣重要,什么duck type,人本接口,最小接口,約定優(yōu)于配置,廣義來講都是一些思想上的“語法糖“。

不過也并不是沒有反對(duì)的聲音,這其中就有圖靈獎(jiǎng)的第一個(gè)獲得者: Alan Perlis。.net從2.0到3.0到3.5底層CLR并沒有做更新,沒有添加任何新的IL指令,所以C#從2.0到3.0中所有的特性都是語法糖,就算從1.0到2.0,也只有一個(gè)泛型不是語法糖,其余的新特性也都是如此,但是每一次C#發(fā)布新特性的時(shí)候我們不得不為之而鼓舞,為之而喝彩。新的語法可以釀造更好的編程風(fēng)格,一些難以實(shí)現(xiàn)的方面也輕而易舉了。

“語法糖”是一種便捷的寫法,編譯器會(huì)幫我們做轉(zhuǎn)換;而且可以提高開發(fā)編碼的效率,在性能上也不會(huì)帶來損失。

例:async 函數(shù)是 Generator 函數(shù)的語法糖。

前文有一個(gè) Generator 函數(shù),依次讀取兩個(gè)文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容