《黑客與畫家》第14章讀書筆記

編程語言發(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ú)有的。

  1. 條件結(jié)構(gòu)(即if-then-else結(jié)構(gòu))
  2. 函數(shù)也是一種數(shù)據(jù)類型。它有自己的的字面表達(dá)形式,能夠存儲(chǔ)在變量中,也能當(dāng)做參數(shù)傳遞。
  3. 遞歸
  4. 變量的動(dòng)態(tài)類型,所有的變量都是指針,所指向的值有類型之分,而變量本身沒有。復(fù)制變量就相當(dāng)于復(fù)制指針,而不是復(fù)制它們指向的數(shù)據(jù)
  5. 垃圾回收機(jī)制
  6. 程序由表達(dá)式組成。Lisp程序是一些表達(dá)式樹的集合,每個(gè)表達(dá)式都返回一個(gè)值。
  7. 符號類型。它實(shí)際上是一種指針,指向存儲(chǔ)在散列表中的字符串。
  8. 代碼使用符號和常量組成的樹形表達(dá)法
  9. 無論什么時(shí)候,整個(gè)語言都是可用的。Lisp不真正區(qū)分讀取期,編譯期和運(yùn)行期。可以在讀取期編譯或運(yùn)行代碼,可以在編譯期讀取或運(yùn)行代碼,可以在運(yùn)行期讀取和編譯代碼

語言流行的因素

優(yōu)秀的語言不一定會(huì)被市場接受,很可能無人使用,因?yàn)檎Z言的流行不取決于它本身。它取決于:

  1. 專家級黑客的看法和使用
  2. 廣告宣傳
  3. 某一個(gè)流行計(jì)算機(jī)系統(tǒng)的腳本語言
  4. 找到一個(gè)流行的依附的系統(tǒng)
  5. 免費(fèi)的實(shí)現(xiàn),實(shí)體書和在線文檔

再設(shè)計(jì)

最好的文字來自不停的修改,對軟件開發(fā)也適用,編程尤其如此,再多的修改都不過分。為了寫出優(yōu)秀的軟件,同時(shí)具備兩種沖突的信念

  • 出生牛犢一般,對自己的能力信心萬丈,對解決難題的可能性保持樂觀
  • 對當(dāng)前解法的合理性保持懷疑

任何措施,只要能讓“再設(shè)計(jì)”周而復(fù)始地進(jìn)行下去,就都是可取的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容