Какой лучший интерпретатор 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
в верхней части вашего файла.