大家好,我想開始使用Scheme,我有兩個問題。首先,你會推薦使用解釋器還是編譯器來實現Scheme,爲什麼?其次,你會推薦哪種解釋器或編譯器,爲什麼?謝謝!什麼是最好的Scheme解釋器或編譯器?
回答
對於初學者,我強烈建議DrRacket(以前稱爲Dr. Scheme),因爲它給你一個非常好的工作環境,支持Scheme的許多方言,並提供非常好的故障和調試信息。我相信Scheme的大多數實現都是解釋器,儘管可能有一個編譯器在那裏。
如果你是像我這樣的命令行吸毒者,你可以考慮的另一種方法是直接運行racket解釋器,這與Dr.Retet基本上是一樣的,但沒有圖形環境和命令行界面。或者,使用#! /usr/bin/env racket
開始源文件並使其可執行chmod +x source.rkt
。
博士計劃是我用過的最完整的口譯員之一。對於在命令行中卡住並且不能將隱蔽錯誤消息轉換爲代碼錯誤的初學者非常有用。 – ecounysis 2010-03-26 06:41:59
其實還有比口譯員更多的大牌計劃編制者:ikarus,chez(非免費版),gambit,雞,bigloo。實際上,mzscheme/DrScheme在當前版本中被打亂。見http://en.wikipedia.org/wiki/Category:Scheme_compilers – 2010-03-26 13:54:20
我也是一個命令行的癮君子,我一直在使用Dr. Scheme,但我也會試一試mzscheme。我也一直在使用gambit-c,對此有何看法? – adhanlon 2010-03-26 15:47:21
我建議不要擔心它是作爲編譯器,解釋器還是它們的組合來實現 - 特別是在開始時,幫助文件的質量(僅舉一例)將遠遠超過它的實現方式。
至於哪一個,PLT Scheme是我最常使用的(目前爲止)。
感謝您的建議。我正在使用PLT計劃,我非常喜歡它。 – adhanlon 2010-03-29 20:49:10
我知道你已經接受了答案,但對於未來這個問題的訪問者,我推薦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(或寶石紅寶石)。
PTL計劃已更名爲球拍(http://racket-lang.org/),但它仍然幾乎相同。 Dr.Retet是一個非常漂亮的開發環境,使用shell,並且在Scheme中編寫所有需要的文件是在文件頂部的#lang scheme
。
我建議Gambit-C方案:
- 這是R5RS符合的。
- 它既有解釋器又有編譯器。您也可以編譯爲ANSI C.
- 它是開源的。
- 它便攜。 (它運行在Linux,Windows,Mac OS X甚至iOS上。)
- 它具有簡單的外部函數接口(FFI)。
粗略的檢查顯示,雞似乎不滿意,而Bigloo可能是一個嚴重的競爭者。但我不能對他們發表太多評論。
你有什麼不滿意的雞計劃? – 2013-05-09 14:38:10
不能回答OP,但是在選擇最近使用哪一個時,我嘗試了很少(一如既往,完全沒有意義)的基準,因此Gambit絕對擁有雞的表現。看起來Gambit比平均速度快兩倍。雞的GC也很慢,像十次或更長。 – Leushenko 2014-07-07 03:15:27
- 1. 什麼是Windows下最好或最常用的C++編譯器?
- 2. 什麼是一個好的C#編譯器 - 編譯器/解析器生成器?
- 3. 什麼是Perl 5的可用編譯器/解釋器?
- 4. 什麼是最流行的編譯器,MSVS有什麼不好?
- 5. Python是否使用編譯器或解釋器或組合?
- 6. Java的最快/最好的Base64編解碼器是什麼?
- 7. Java編譯器/解釋器
- 8. 什麼是最好的XML解析器
- 9. 什麼是最好的PHP編輯器?
- 10. 編寫解析器和編譯器的最佳編程語言是什麼?
- 11. 什麼是瞭解編譯器的最佳方式?
- 12. QMetaObject編譯器解釋?
- 13. python編譯器包解釋
- 14. RUBY中的編譯器和解釋器
- 15. 什麼是Fortran編譯器?
- 16. 最好的JavaScript編譯器/縮小器
- 17. 我的Scheme編譯器有什麼問題?
- 18. 爲什麼此代碼與免費的monad解釋器編譯?
- 19. java中的Java解釋器或編譯器
- 20. 沒有Emacs的Lisp/Scheme解釋器?
- 21. Java編譯器通過「(byte)+(char) - (int)+(long) - 1」解釋了什麼?
- 22. .NET VM是編譯器還是解釋器?
- 23. 使用Python構建編譯器或解釋器
- 24. 解析器,解釋器和編譯器上的學習資源
- 25. 彙編器,解釋器和編譯器的圖像?
- 26. 什麼是Scala註釋修改編譯器的消息?
- 27. 解釋特定的編譯器警告
- 28. 什麼是最好的JavaScript混淆器?
- 29. 什麼是適用於Windows XP的良好BASIC編譯器?
- 30. 什麼是一個好的C反編譯器?
我的問題與那些有點不同,但謝謝! – adhanlon 2010-03-26 20:31:33
順便說一句,作爲一個「什麼是最好」的問題,沒有澄清細節,這個看起來非常主觀。如果對單個最佳方案實現(針對所有目的和用例)達成一致,那麼我們只有一個! – 2010-03-27 16:36:40
絕對是一個有建設性的問題,比我更重要的人應該重新開放這個 – 2014-11-14 08:11:37