2010-03-26 101 views
38

大家好,我想開始使用Scheme,我有兩個問題。首先,你會推薦使用解釋器還是編譯器來實現Scheme,爲什麼?其次,你會推薦哪種解釋器或編譯器,爲什麼?謝謝!什麼是最好的Scheme解釋器或編譯器?

+0

我的問題與那些有點不同,但謝謝! – adhanlon 2010-03-26 20:31:33

+1

順便說一句,作爲一個「什麼是最好」的問題,沒有澄清細節,這個看起來非常主觀。如果對單個最佳方案實現(針對所有目的和用例)達成一致,那麼我們只有一個! – 2010-03-27 16:36:40

+0

絕對是一個有建設性的問題,比我更重要的人應該重新開放這個 – 2014-11-14 08:11:37

回答

24

對於初學者,我強烈建議DrRacket(以前稱爲Dr. Scheme),因爲它給你一個非常好的工作環境,支持Scheme的許多方言,並提供非常好的故障和調試信息。我相信Scheme的大多數實現都是解釋器,儘管可能有一個編譯器在那裏。

如果你是像我這樣的命令行吸毒者,你可以考慮的另一種方法是直接運行racket解釋器,這與Dr.Retet基本上是一樣的,但沒有圖形環境和命令行界面。或者,使用#! /usr/bin/env racket開始源文件並使其可執行chmod +x source.rkt

+2

博士計劃是我用過的最完整的口譯員之一。對於在命令行中卡住並且不能將隱蔽錯誤消息轉換爲代碼錯誤的初學者非常有用。 – ecounysis 2010-03-26 06:41:59

+3

其實還有比口譯員更多的大牌計劃編制者:ikarus,chez(非免費版),gambit,雞,bigloo。實際上,mzscheme/DrScheme在當前版本中被打亂。見http://en.wikipedia.org/wiki/Category:Scheme_compilers – 2010-03-26 13:54:20

+0

我也是一個命令行的癮君子,我一直在使用Dr. Scheme,但我也會試一試mzscheme。我也一直在使用gambit-c,對此有何看法? – adhanlon 2010-03-26 15:47:21

7

我建議不要擔心它是作爲編譯器,解釋器還是它們的組合來實現 - 特別是在開始時,幫助文件的質量(僅舉一例)將遠遠超過它的實現方式。

至於哪一個,PLT Scheme是我最常使用的(目前爲止)。

+1

感謝您的建議。我正在使用PLT計劃,我非常喜歡它。 – adhanlon 2010-03-29 20:49:10

24

我知道你已經接受了答案,但對於未來這個問題的訪問者,我推薦Chicken Scheme。它傾向於產生比mzscheme更小的可執行文件。看看下面的Hello World應用程序,例如:

(define (say-hello name) 
    (print (string-append "Hello, " name)) 
    (newline)) 

(say-hello "Earthling") 

編譯時MZC --exec mztest hello.scm:3.3M

編譯時CSC hello.scm -o CTEST:16K

而且如果你在圖書館支持後,雞提供Eggs Unlimited,這就像PlazT對mzscheme(或寶石紅寶石)。

+0

感謝您的建議。 – adhanlon 2010-03-28 02:19:56

+3

雞擁有。我其實也可以用它來做實際的工作。別忘了關於Gambit-C。 – Jyaan 2010-10-22 05:42:35

+10

AFAIK mzscheme創建一個靜態鏈接的可執行文件,而chicken scheme與libchicken動態鏈接。 – 2011-05-21 10:10:05

3

PTL計劃已​​更名爲球拍(http://racket-lang.org/),但它仍然幾乎相同。 Dr.Retet是一個非常漂亮的開發環境,使用shell,並且在Scheme中編寫所有需要的文件是在文件頂部的#lang scheme

8

我建議Gambit-C方案:

  • 這是R5RS符合的。
  • 它既有解釋器又有編譯器。您也可以編譯爲ANSI C.
  • 它是開源的。
  • 它便攜。 (它運行在Linux,Windows,Mac OS X甚至iOS上。)
  • 它具有簡單的外部函數接口(FFI)。

粗略的檢查顯示,雞似乎不滿意,而Bigloo可能是一個嚴重的競爭者。但我不能對他們發表太多評論。

+4

你有什麼不滿意的雞計劃? – 2013-05-09 14:38:10

+1

不能回答OP,但是在選擇最近使用哪一個時,我嘗試了很少(一如既往,完全沒有意義)的基準,因此Gambit絕對擁有雞的表現。看起來Gambit比平均速度快兩倍。雞的GC也很慢,像十次或更長。 – Leushenko 2014-07-07 03:15:27