編程語(yǔ)言發(fā)展的方向
Lisp和Fortran代表了編程語(yǔ)言發(fā)展的兩大方向。前者的基礎(chǔ)是數(shù)學(xué),后者的基礎(chǔ)是硬件架構(gòu)。從那時(shí)起,這兩大方向一直在相互靠攏。直到如今最高級(jí)的主流語(yǔ)言也只是剛剛接近Lisp水平。
按照J(rèn)ava,Perl,Python,Ruby的順序觀察這些語(yǔ)言,你會(huì)發(fā)現(xiàn)一個(gè)有趣的結(jié)果,至少如果你是一個(gè)Lisp黑客,你就看得出來(lái),排在越后面的語(yǔ)言越像Lisp。
為什么Lisp語(yǔ)言很特別?
它包含了9個(gè)思想,至今還有2個(gè)是Lisp獨(dú)有的。
- 條件結(jié)構(gòu)(即if-then-else結(jié)構(gòu))
- 函數(shù)也是一種數(shù)據(jù)類(lèi)型。它有自己的的字面表達(dá)形式,能夠存儲(chǔ)在變量中,也能當(dāng)做參數(shù)傳遞。
- 遞歸
- 變量的動(dòng)態(tài)類(lèi)型,所有的變量都是指針,所指向的值有類(lèi)型之分,而變量本身沒(méi)有。復(fù)制變量就相當(dāng)于復(fù)制指針,而不是復(fù)制它們指向的數(shù)據(jù)
- 垃圾回收機(jī)制
- 程序由表達(dá)式組成。Lisp程序是一些表達(dá)式樹(shù)的集合,每個(gè)表達(dá)式都返回一個(gè)值。
- 符號(hào)類(lèi)型。它實(shí)際上是一種指針,指向存儲(chǔ)在散列表中的字符串。
- 代碼使用符號(hào)和常量組成的樹(shù)形表達(dá)法
- 無(wú)論什么時(shí)候,整個(gè)語(yǔ)言都是可用的。Lisp不真正區(qū)分讀取期,編譯期和運(yùn)行期??梢栽谧x取期編譯或運(yùn)行代碼,可以在編譯期讀取或運(yùn)行代碼,可以在運(yùn)行期讀取和編譯代碼
語(yǔ)言流行的因素
優(yōu)秀的語(yǔ)言不一定會(huì)被市場(chǎng)接受,很可能無(wú)人使用,因?yàn)檎Z(yǔ)言的流行不取決于它本身。它取決于:
- 專(zhuān)家級(jí)黑客的看法和使用
- 廣告宣傳
- 某一個(gè)流行計(jì)算機(jī)系統(tǒng)的腳本語(yǔ)言
- 找到一個(gè)流行的依附的系統(tǒng)
- 免費(fèi)的實(shí)現(xiàn),實(shí)體書(shū)和在線文檔
再設(shè)計(jì)
最好的文字來(lái)自不停的修改,對(duì)軟件開(kāi)發(fā)也適用,編程尤其如此,再多的修改都不過(guò)分。為了寫(xiě)出優(yōu)秀的軟件,同時(shí)具備兩種沖突的信念
- 出生牛犢一般,對(duì)自己的能力信心萬(wàn)丈,對(duì)解決難題的可能性保持樂(lè)觀
- 對(duì)當(dāng)前解法的合理性保持懷疑
任何措施,只要能讓“再設(shè)計(jì)”周而復(fù)始地進(jìn)行下去,就都是可取的。