Lisp machine 這種用 Lisp 代碼當機器的彙編指令的硬體實現為什麼銷聲匿跡了?硬體和 Lisp 這樣的高級語言兩個極端如何融合在一起?


當時的編譯器優化和通用的 CPU 優化都不理想。所以針對 Lisp 做了很多特殊的硬體優化。比如,Lisp 的動態類型讓任意變數的操作都涉及對類型的檢查,Lisp machine 就把這部分做成和其它指令並行運行的特殊硬體。前提是,這些特殊的硬體優化只是針對 Lisp 的。

而今天的 CPU 和編譯器優化的通用方式就已經能達到更快的速度了。像 CPU 流水線,分支預測,指令預取這些優化都不只是針對 Lisp 的通用優化,但是加上更快的時鐘和更大的 cache,已經讓針對 Lisp 的特殊優化沒有價值。

另外,用硬體直接支持 Lisp 這麼高級的抽象,正如你說,是兩個極端融合在一起,很扭曲。當年的 Lisp machine 應該說沒有進程,內核態 / 用戶態這樣的中間層次的抽象,整個機器就是一個大進程。而進程,IPC,內核態 / 用戶態這樣的和硬體保護相關的概念如果完全用 Lisp 這樣的高級抽象來描述,顯然不如 ABI 更為簡單的 C 之類的語言更直接。所以目前的計算機結構也是多層次的抽象決定的。


謝邀。

因為那時候cpu很慢,所以產生了lisp的專用硬體以提高速度,除了lisp我記得還有smalltalk也有過專用硬體。現在也有呀,不少嵌入式cpu支持java位元組碼。


推薦閱讀:

Scrapy框架的使用抓取分析

TAG:計算機 | Lisp | 電腦硬體 | Lispmachine |