Scheme 是什麼?

Scheme 是一種小巧、強大、優雅的程式設計語言。

Scheme 是 LISP 的一種方言,它繼承了 LISP 的優點。這裏對 Scheme 的描述大部分也適合其他 LISP 方言。

Scheme 不但設計非常簡潔乾淨,而且非常強大。
說它小巧是因為它只有7種最基本的語法結構,甚至連迴圈語句都沒有。
它的核心語法用幾頁紙就可以全部敍述完畢。 Scheme 的 report 只有 50 多頁,還沒有某些語言手冊的索引長。

Scheme 可以實現幾乎所有我們所知道的程式設計方法:函數式,強制式,消息傳遞式,邏輯式,...
在 Scheme 裏,所有的過程都可以被當作資料操作,而且它可以把通常隱藏在幕後工作的 continuation 作為物件來操作。

Scheme 可以實現優秀的軟體工程。
用 Scheme 編程可以擺脫普通語言的“計畫—實現”的設計流程,而使用自底向上的設計方法。也就是說,你不需要在設計程式之前做好所有的計畫。Scheme 語言隨著問題改變,語言和問題都向著對方生長,最後達到一個完美的結合點。

Scheme 是非常優雅的,它具有數學的美感。
Scheme 從一開始就被設計為一種通用的程式語言。它不是為了解決某個特殊的小問題的設計,不是功能堆砌在功能之上,最後搞的不可理解的語言。

Scheme 是穩定的。
Scheme 注重的是“品質”,而不是工業上的利用價值,所以 20 年來 Scheme 基本上沒有變化。你不用擔心有一天收到這樣煩人的消息:“我們鼓勵大家使用 'Scheme2004' 的語法。” Scheme 的語法就像象棋的規則,一旦知道這個規則,剩下需要做的就是考慮怎樣取得勝利。

Scheme 特別適合描述演算法。
用 Scheme 編程式,你可以專注於設計演算法本身,而不是為語言本身的事情而煩惱,比如語法,記憶體洩漏之類。所以用這種語言教學,學生可以學會“解決現實世界的問題” 而不是困惑於 “電腦自己的問題”。學生會很快的理解到“計算” 的實質內涵,深刻體會到計算科學是什麼。

Scheme 被很多大學用於各個領域的電腦教學,甚至一些中學和小學也開始利用 Scheme 來講授計算科學。

使用 Scheme 作為教學工具的一個明顯的特徵就是,Scheme 語言本身從來不會成為學習的重點。使用 Scheme 作為工具的課程從來不會專門講授 Scheme,因為沒有這個必要。學生在初次接觸電腦的幾天裏就能熟悉 Scheme,學習怎樣用它來計算。之後,大家就開始到處找問題來計算,不再考慮語言的問題了。Scheme 的理念是程式語言不是拿來“學”的,而是拿來“用”的。

Scheme 在教育界被如此廣泛的使用的結果就是,新一代的優秀的計算學家,很多人的“母語”是 Scheme。

Scheme 的社會是非常開放和自由的。所以你不用奇怪,最好的書都有免費的版本 :)

Structure and Interpretation of Computer Programs
昵稱 "The Wizard Book" 或者 "The Purple Book"。
Scheme 的鼻祖 Gerald Jay Sussman 和電腦教育專家 Hal Abelson 合寫的,20 年來影響整個電腦科學教育的著作,著名的 MIT 課程 6.001 的課本。這是 MIT 的電子工程和電腦科學專業本科生的必修課,其他與計算相關專業也鼓勵參加。每年上這門課的 MIT 學生超過 500 名。全世界有超過 100 所大學採用這個教材。這裏有一個不完全列表。
它著重講述的不是 Scheme 語言本身,也不是資料結構和演算法。在簡短的介紹 Scheme 的簡單語法之後,課本馬上開始講述深入的計算概念:函數式程式設計,高階函數,資料抽象,流,資料制導,消息傳遞,邏輯程式設計,解釋器設計,編譯器設計,寄存器機器模擬 ...
這本書讓學生從一個語言設計者和實現者的高度來看待問題,而不只是作為一個普通語言的用戶。讀了這些內容,學生可以真正體會到“計算科學”的實質內涵,而不是被一些細節束縛,只見樹木不見森林。



Scheme 解釋器和編譯器

Scheme 的實現很多,幾乎所有解釋器和編譯器都是自由軟體,除了 Chez。

你可以隨便選擇 MzScheme, guile, bigloo, chez, chicken, gambit, kawa, SISC, GNU/MIT scheme, petite, plt, pscheme, scheme48, SCM, scsh, stk, STklos, ELK, Gauche, sxm, umbscheme, ...

每一種解釋器都有強項,可以根據自己的需要選擇。其中,Guile 和ELK 適合做嵌入式解釋器;bigloo, GambitC 和 Chicken 可以把 Scheme 編譯成機器代碼,速度快;DrScheme/MzScheme 介面最友好, Kawa 和 SISC 支持 Scheme 到 Java 的轉換,位元組碼編譯;Scheme 48 非常簡潔可靠;Scsh 在 Scheme 48 基礎上做了很多跟作業系統接合的介面,可以作為通用的的腳本語言;Stk 和 STklos 自帶面向物件系統和 gtk 圖形介面;Gauche 具有方便的 regexp, 網路,圖形介面,UTF-8 支援,可以作為很方便的腳本語言,進行系統管理等操作;Chez 是Cadance Research systems 出品的商業 Scheme 解釋器;Petite 是Chez 的免費版本,比 Chez 少了一個編譯器。

arrow
arrow
    全站熱搜

    伊 發表在 痞客邦 留言(0) 人氣()