怪異的程式語言
當人們說以他們的經驗來看,所有程式語言基本上都大同小異時,他們其實不是在談論語言本身,而是在談論他們所從事的那種程式設計。
99.5% 的程式設計,都是把對函式庫的呼叫黏合起來。所有熱門的程式語言在這方面都同樣擅長。因此,一個人很容易一輩子都在熱門程式語言的交集裡工作。
但另外那 0.5% 的程式設計,卻有著不成比例的有趣之處。如果你想了解它究竟包含什麼,怪異語言的怪異之處就是一條值得追尋的線索。
怪異的語言並非偶然才顯得怪異。至少,好的那些不是。好的怪異語言的怪異之處,通常意味著存在某種程式設計形式,而不只是把函式庫呼叫黏合起來的那種。
舉一個具體的例子:Lisp macros(Lisp 巨集)。Lisp macros 即使對許多 Lisp 程式設計師來說也顯得怪異。它們不僅不在熱門語言的交集之中,本質上也很難在不把一個語言變成 Lisp 方言的情況下被正確地實作出來。而 macros 無疑證明了超越黏合式程式設計的技術確實存在。舉例來說,先為某類型的問題寫出一種語言,再用這個語言來撰寫你的特定應用程式。這還不是 macros 所能做到的一切;它只是在操作程式的技術所構成的廣大空間中的一個區域,而這個空間至今仍遠未被完全探索。
所以,如果你想拓展自己對程式設計可能性的想像,其中一個方法就是去學習怪異的語言。挑一個多數程式設計師認為怪異、但其中位數使用者卻很聰明的語言,然後專注於這個語言與熱門語言交集之間的差異。在這個語言裡,你能表達哪些在其他語言中會極度不便表達的事物?在學會如何說出那些過去無法說出的東西的過程中,你很可能會學會如何去思考那些過去無法思考的事物。
感謝 Trevor Blackwell(崔佛·布萊克威爾)、Patrick Collison(派崔克·柯里森)、Daniel Gackle(丹尼爾·加克爾)、Amjad Masad(阿姆賈德·馬薩德)以及 Robert Morris(勞勃·莫里斯)閱讀本文的草稿。
隨機一篇部落格