大家好,我想开始使用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