python的lambda函數(shù) 求解……元編程,泛型編程,函數(shù)式編程,面向?qū)ο缶幊?,面相過程編程,模板編程等等的關(guān)系是什么?
求解……元編程,泛型編程,函數(shù)式編程,面向?qū)ο缶幊?,面相過程編程,模板編程等等的關(guān)系是什么?元編程:是指對(duì)元數(shù)據(jù)(可以是自己的或其他程序)的一種操作,以完成本應(yīng)在編譯時(shí)完成的部分工作,從而達(dá)到更高的工
求解……元編程,泛型編程,函數(shù)式編程,面向?qū)ο缶幊?,面相過程編程,模板編程等等的關(guān)系是什么?
元編程:是指對(duì)元數(shù)據(jù)(可以是自己的或其他程序)的一種操作,以完成本應(yīng)在編譯時(shí)完成的部分工作,從而達(dá)到更高的工作效率。簡而言之,就是“編程”。
通用編程:通過一種方式實(shí)現(xiàn)一個(gè)通用的標(biāo)準(zhǔn)容器庫,使標(biāo)準(zhǔn)容器庫可以在各種類型中重復(fù)使用,類似于模板。
函數(shù)式編程:是一種以計(jì)算機(jī)操作為函數(shù)的編程,可以將函數(shù)作為輸入和輸出來控制程序的行為。λ演算是這門語言最重要的基礎(chǔ)。
面向?qū)ο缶幊蹋阂环N將現(xiàn)實(shí)世界映射到計(jì)算機(jī)模型的面向?qū)ο缶幊谭椒?。程序是各種操作的對(duì)象。
面向過程編程:一種以過程為中心的編程思想,它將程序分解為一個(gè)逐步操作數(shù)據(jù)的過程。
模板編程:一種元編程技術(shù),其中編譯器使用模板生成臨時(shí)源代碼,然后將其與其余代碼混合并編譯。這些模板的輸出包括編譯時(shí)常量、數(shù)據(jù)結(jié)構(gòu)和完整的函數(shù)。
C語言是函數(shù)式編程語言嗎?
首先,給出結(jié)論。為什么?
讓我們從面向?qū)ο箝_始。
當(dāng)我們將面向?qū)ο笠暈橐环N語言的屬性時(shí),c是一種面向?qū)ο蟮恼Z言嗎?眾所周知,C、Java等高級(jí)語言都是面向?qū)ο蟮?,我們通常說C語言是面向過程的。這是因?yàn)镃和Java為面向?qū)ο筇峁┝撕芎玫膬?yōu)化。通過類、成員變量和方法、繼承和多態(tài)性、虛函數(shù)和重載等特性,可以對(duì)對(duì)象模型進(jìn)行詳細(xì)的抽象。然而,C語言中只有結(jié)構(gòu),不能定義函數(shù),只能有成員變量。因此,在用C語言抽象對(duì)象模型時(shí)遇到了很多困難,所以通常說C語言是面向過程的。
然而,面向?qū)ο缶幊痰奶岢鍪菫榱烁玫匕l(fā)展編程思想,而不是作為語言屬性的劃分。換句話說,面向?qū)ο缶幊痰乃枷胧桥c語言無關(guān)的。利用C語言的結(jié)構(gòu),結(jié)合函數(shù)指針,我們也可以用C語言實(shí)現(xiàn)類的各種函數(shù),但是我們做了很多其他高級(jí)語言的編譯器需要做的事情,這對(duì)開發(fā)人員很不友好,維護(hù)成本也很高。
如果你問我,我想說的是,c是一種面向?qū)ο蟮恼Z言嗎?我也會(huì)說是的。因?yàn)槊嫦驅(qū)ο笫且环N思想,而不是分區(qū)語言的屬性。
最后,讓我們回到問題。函數(shù)表達(dá)式意味著我們可以打包代碼并保留接口。一個(gè)函數(shù)可以從接口調(diào)用其他函數(shù)的返回值,并使用自己的返回值作為其他函數(shù)調(diào)用的接口。這也是一個(gè)設(shè)計(jì)理念。這樣,我們可以很容易地將項(xiàng)目模塊化,實(shí)現(xiàn)模塊間的解耦。
無論是語言本身對(duì)于函數(shù)式編程的支持和優(yōu)化,還是從編程思想的實(shí)現(xiàn)來看,C語言顯然是符合這一特點(diǎn)的。