Какой лучший интерпретатор Scheme или компилятор?

Привет всем, я хочу начать использовать схему, и у меня есть два вопроса. Во-первых, вы бы порекомендовали использовать интерпретатор или компилятор для Scheme и почему? Во-вторых, какой интерпретатор или компилятор для Scheme вы бы порекомендовали и почему? Спасибо!

5 ответов

Решение

Для новичка я бы настоятельно рекомендовал DrRacket (ранее Dr. Scheme), поскольку он дает вам действительно приятную среду для работы, поддерживает множество диалектов Scheme и дает очень хорошую информацию об ошибках и отладке. Я полагаю, что большинство реализаций Scheme являются интерпретаторами, хотя возможно, что существует компилятор.

Если вы такой же любитель командной строки, как я, вы можете рассмотреть альтернативную возможность - запустить интерпретатор ракеток напрямую, что по сути то же самое, что и доктор Ракет, но без графического окружения и интерфейса командной строки. Или начните свой исходный файл с #! /usr/bin/env racket и сделать его исполняемым с chmod +x source.rkt,

Я знаю, что вы уже приняли ответ, но для будущих посетителей этого вопроса я рекомендую 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

И если вам нужна поддержка библиотеки, Chicken предоставляет Eggs Unlimited, которая похожа на PlaneT для mzscheme (или gems для ruby).

Я бы порекомендовал схему Gambit-C:

  • Соответствует R5RS.
  • Он имеет как интерпретатор, так и компилятор. Вы также можете скомпилировать в ANSI C.
  • Это с открытым исходным кодом.
  • Это портативный. (Он работает на Linux, Windows, Mac OS X и даже iOS.)
  • Он имеет простые интерфейсы внешних функций (FFI).

Беглый осмотр показывает, что Цыпленок кажется неудовлетворительным, в то время как Биглоо может быть серьезным соперником. Но я не могу комментировать слишком много о них.

Я бы порекомендовал не беспокоиться о том, реализован ли он как компилятор, интерпретатор или их комбинация - особенно для начала, качество файлов справки (для одного примера) будет иметь гораздо большее значение, чем то, как именно это реализовано.

Насколько именно, PLT Scheme - это то, что я использую (безусловно) чаще всего.

Схема PTL была переименована в Racket ( http://racket-lang.org/), но она почти не изменилась. Dr. Racket - очень изящная среда разработки с оболочкой, и для написания в Scheme достаточно всего лишь #lang scheme в верхней части вашего файла.

Другие вопросы по тегам