立即捐款

電腦語言學 Programming Linguistics - David Gelernter and Suresh Jagannathan

電腦語言學 Programming Linguistics - David Gelernter and Suresh Jagannathan

早前因工作上的需要,要設計一個新的程式語言,在網上找參考資料時,遇上了這本早已絕版的奇書。差不多每篇有關程式語言設計的論文,必定引用這本書。這引發我的好奇心,於是我大學的圖書館中,找來這本書借來一讀。不看猶自可看罷方知自已井蛙觀天,雖然自中學以來寫了程式超過二十多年,卻從來沒有思考過何謂程式這個最基本的問題。一直還以為自已寫程式功夫不錯,原來不過是學到幾個招式套拳的外功,這本書說的卻是寫程式的易筋經心法。讀過這本書,面對任何程式語言,也都可以一理通百理明。

一般教寫程式的書藉,通常從程式的文法和應用例子作教材,學生跟著練習題去學,慢慢便可以寫出像樣的程式,可是始終有點兒像鸚鵡學舌,沒錯能夠寫程式,但卻不明白程式是什麼。但這本書沒有教任何一種特定的程式語言,而是從語言學的角度,去分析歷史上重要的程式語言,到底新的文法帶來什麼的轉變,而同時亦指出不論什麼轉變,也都是萬變不離其中的基本觀念。

書本一開始便澄清什麼是程式,程式不是軟件或硬件的分別,甚至電腦本身是否存在也不重要,程式是一個抽像的機器,只是知訊的某一種狀態。程式語言只是代表程式的符號,任何程式語言在抽像的層面也是共通和等同的,只是不同語言設計的重點取向,有意無意左右了程式編寫員的思考模式。整本書的靈魂便是第二章中,提出的完美程式機器的模型。不論任何程式,也可以用時間(函數)和空間(記憶)去表達,而這兩者是可以互相轉換。靜止的程式源碼和運行中的程式,在抽像層面是同一樣東西,不過是時間和空間的關係改變了。

接下來的所有章節,都是回顧程式語言的發展,把每一個重要里程碑的語言,用完美程式機器去分析作比較。書中提及的程式語言,隨了做學術研究外,現今已沒有什麼人用。反觀現在最流行的幾種語言,本身並沒有獨創性可言,只是在走前人開發出來的路。這本書寫於一九九零年,超過二十年前。可是過去二十年,程式語言的發展卻停滯不前,只是不斷建立更多的程式庫,但最在基本的程式語言的思考方法上,與二十年前比較沒有多少突破。

始終這是一本大部頭的學術書,我很難在此以有限的文字,用三言兩語把書中慨念表達清楚。我特別想說的是,當我讀到完美程式機器的理論,我感到叮一聲開竅的感覺,多年來寫程式不明所以的地方,就在這一刻豁然領悟了。若果寫程式也有禪的話,這無異便是頓悟的境界。讀電腦的朋友,靠寫程式維生的朋友,這是一本會改變你想法的書。這書本學校不會教亦無法教,因為要寫程式多年,心中產生無數問號,才可以看懂程式的玄妙。

原文連結