Scheme 是一門通用的高級計算機程序語言。它被運用於開發文本編輯器、編譯器優化、操做系統,圖形庫,表格應用程序,AI/VR 等等。html
它是著名 Lisp 語言的一種方言,語法結構上,跟 Lisp 很像,但與 Lisp 的主要區別是它採用了詞法做用域(Lexical Scoping),而非動態做用域(Dynamic Scoping) 。git
不少人對 Lisp 的認識可能來自於《黑客與畫家》,看這篇文章的讀者,想必對 Scheme 有些興趣,若是不瞭解 Lisp 有多強,能夠讀一讀這本書的第 12 章,看看做者對 Lisp 的「吹捧」。github
Scheme 誕生於 1975 年,是世面上主流編程語言的鼻祖,雖然在編程語言排行榜上,它排名比較落後,但現現在不少高級語言都有它的身影,或者說朝着它靠攏,好比 Python、JavaScript 等。shell
Scheme 程序具備可移植性,只需在要裝有 Scheme 解析器的機器就可以運行。編程
Scheme 是一門多範式的語言。它的函數是一等公民(first-class),因此能夠做爲一門函數式的語言使用。同時它也支持命令式。vim
從語法結構上看上,Scheme 程序由大量的括號組成,看上去像數學公式,與常見的編程語言區別很大。但其實只要掌握了最基本的語法規則,Scheme 程序很是容易看懂,而且由於語法比較單一,也比較容易上手。編程語言
最新的 Scheme 的語言標準爲 R6RS:www.r6rs.org。編輯器
Scheme 存在多種解析器,這些解析器在語法支持上存在細微的差別,但大多數功能都是相同的。若是使用其中某個解釋器時,遇到 procedure 找不到,多是這種解析器不支持的過程。ide
這裏主要介紹三種解析器。函數
MIT/GNU Scheme 提供 Scheme 程序的解釋器和編譯器,此外它還支持源碼調試,集成類 Emacs 編輯器,以及大量的運行庫。 詳細的解釋能夠參考文檔。
命令行安裝方式爲:
brew install mit-scheme
複製代碼
安裝成功後使用 mit-scheme
命令可進入交互模式。
Ctrl-C
會引導展現幫助界面,Ctrl-D
退出交互。
Racket 是基於 R5RS 實現的,並在該基礎上新增了一些實現,嚴格來說它與新版 R6RS 不兼容。雖然它仍然可以運行 R6RS 標準的 Scheme,但在遇到不能解析的過程時,會出現運行時錯誤。
所以它也自稱是一門新的語言:Racket。
詳細介紹能夠參考文檔:racket-lang.org/
Racket 的安裝過程很是慢,會關聯一系列的工具。安裝好後是一個 Application,須要手動配置 racket 環境命令,才能在終端使用。
Chez Scheme 是最快的 Scheme 解析器,安裝速度也很是快。
執行以下命令安裝:
git clone https://github.com/cisco/ChezScheme
cd ChezScheme
./configure
make
sudo make install
複製代碼
Scheme 的交互體驗也很不錯,建議閱讀 Chez Scheme User Guide 第二章前面部分,十分鐘左右就能瞭解基本的使用方法。
筆者試用過這幾個,最後選擇了 Chez Scheme,它惟一的缺點是使用 scheme file.ss
命令執行結束後,會進入交互狀態,若是不但願這樣,能夠在 file.ss 文件的末尾加如下兩行代碼:
(newline)
(exit)
複製代碼
配合使用 vim + tmux,一側展現代碼,一側顯示輸出結果,體驗仍是挺不懂錯的:)
如下是王垠提到 Scheme 的相關文章,請參考閱讀: