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