編程的組件需要輸入和輸出,以此來(lái)展示該組件和其他組件交互的界面;有一種特殊的參數(shù)是所操作數(shù)據(jù)的類型,主要作用是確定數(shù)據(jù)的大小以及操作限制。
說(shuō)白了就是對(duì)數(shù)據(jù)的描述,也稱元數(shù)據(jù)、schema;那這些如何跟組件關(guān)聯(lián)起來(lái)?
了解了問(wèn)題的本質(zhì),就可以推理出問(wèn)題存在的全部解決方案,然后擇優(yōu)而用:
1、做為一個(gè)普通參數(shù)傳入,這個(gè)參數(shù)充當(dāng)schema的作用;
2、當(dāng)作一個(gè)特殊的參數(shù)傳入,如泛型,可以理解成一種高效的schema,或其優(yōu)化版;
3、組件從配置系統(tǒng)中獲取schema,和前面兩種的差別就是:變成了運(yùn)行時(shí)獲取;
簡(jiǎn)單的第一因:大統(tǒng)一。那如何給出大統(tǒng)一的解決方案,而且是簡(jiǎn)單的實(shí)現(xiàn)呢?
之所以要提供schema,目的就是為了讓組件所實(shí)現(xiàn)的功能和具體數(shù)據(jù)無(wú)關(guān);如果說(shuō)schema是描述數(shù)據(jù)長(zhǎng)什么樣,則組件描述的是數(shù)據(jù)如何計(jì)算,即算法。也就是那條有名的編程定義:
程序(組件)= 算法(組件實(shí)現(xiàn))+ 數(shù)據(jù)結(jié)構(gòu)(schema)
每個(gè)編程語(yǔ)言都是在特定的環(huán)境下,為了解決面臨的問(wèn)題,對(duì)這條定義給出了自己的實(shí)現(xiàn)。
現(xiàn)在提到了環(huán)境這個(gè)歷史遺留問(wèn)題:程序+環(huán)境(而且是多個(gè)并行的環(huán)境)構(gòu)成了超級(jí)復(fù)雜系統(tǒng);那么,首先面臨的問(wèn)題是:能否把環(huán)境排除在外,即是否存在通用的程序設(shè)計(jì)?
這應(yīng)該是有的。首先,理論上可行。如果這樣,編程語(yǔ)言的發(fā)展,結(jié)果就只有一種:終極語(yǔ)言。
這個(gè)語(yǔ)言首先是和環(huán)境無(wú)關(guān)的:環(huán)境會(huì)影響schema的最優(yōu)選擇,于是終極語(yǔ)言提供的是元schema,即協(xié)議;環(huán)境也會(huì)影響算法,于是終極語(yǔ)言提供的是元算法,即協(xié)議間的關(guān)系,也稱協(xié)議棧。
協(xié)議,超越語(yǔ)言、超越CPU指令,回歸信息和計(jì)算。
編程語(yǔ)言、CPU架構(gòu)淪為載體,也屬于環(huán)境的一部分,那現(xiàn)在問(wèn)題簡(jiǎn)化為:計(jì)算能否脫離信息獨(dú)立描述?然后還能應(yīng)用在信息上?
探索到這就快上升到靈魂級(jí)別了,就像如何解開(kāi)“雞生蛋、蛋生雞”的謎題一樣,計(jì)算的描述本身也是一種信息,也就是馮諾伊曼解開(kāi)自復(fù)制的謎題:只有一種東西--暫且稱為信息,其中一部分充當(dāng)圖紙的作用,剩余的充當(dāng)材料,如果圖紙不變、材料足夠,就能無(wú)限克隆下去;當(dāng)然進(jìn)一步修改圖紙也不難。
這種東西已存在的只有DNA,也是終極語(yǔ)言的目標(biāo)。目前有點(diǎn)大統(tǒng)一意思的有:
編譯器后端的中間語(yǔ)言,各種具體的編程語(yǔ)言是和人交互的前端界面,后端是可以統(tǒng)一的;
網(wǎng)絡(luò)協(xié)議棧,實(shí)現(xiàn)了在全球范圍內(nèi)搬磚(數(shù)據(jù)),把搬運(yùn)算法編碼為信息存在協(xié)議頭(也就是圖紙部分);
如果把中間語(yǔ)言編碼為協(xié)議頭呢?能否向終極語(yǔ)言邁進(jìn)一步?
目前的可執(zhí)行文件(ELF格式)、運(yùn)行時(shí)(進(jìn)程)內(nèi)存模型,其實(shí)和圖紙+材料的架構(gòu)差不了多少;在載體泛型的方向上(類比數(shù)據(jù)類型的泛型),虛擬機(jī)也被大量應(yīng)用,相當(dāng)于大統(tǒng)一了材料;在算法泛型的方向上,也有協(xié)議棧的大量應(yīng)用,還有模版的少量嘗試,相當(dāng)于大統(tǒng)一了圖紙;唯獨(dú)還沒(méi)有二者的結(jié)合。
泛型雖不是萬(wàn)能的,但卻是一種簡(jiǎn)單、快速的解決方案。在終極語(yǔ)言出現(xiàn)之前,對(duì)提升代碼質(zhì)量還是有幫助的。
T.B.C.