2010-03-26 3 views
38

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

+0

Мой вопрос был немного иным, чем те, но спасибо! – adhanlon

+1

BTW, как «что является лучшим» вопросом без уточнения деталей, этот кажется ужасно субъективным.Если бы было достигнуто соглашение о реализации одной наилучшей схемы (для всех целей и вариантов использования), у нас был бы только один! –

+0

Определенно конструктивный вопрос, люди с большей репутацией, чем я, должны повторно открыть это –

ответ

24

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

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

+2

Dr. Scheme - один из самых полных интерпретаторов, которые я использовал. Очень полезно для начинающих, которые застревают в командной строке и не могут переводить загадочные сообщения об ошибках туда, где код неверен. – ecounysis

+3

На самом деле есть более крупные компиляторы Scheme, чем у переводчиков: ikarus, chez (несвободная версия), гамбит, курица, bigloo. Фактически mzscheme/DrScheme JITted в текущих версиях. См. Http://en.wikipedia.org/wiki/Category:Scheme_compilers –

+0

Я тоже наркоман из командной строки, я немного использовал Dr. Scheme, но я также дам mzscheme. Я тоже использую гамбит-с, какие-то мысли по этому поводу? – adhanlon

7

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

Насколько я могу использовать (на данный момент) наиболее часто, PLT Scheme.

+1

Спасибо за предложение. Я использую PLT Scheme, и мне это очень нравится. – adhanlon

24

Я знаю, что вы уже приняли ответ, но для будущих посетителей этого вопроса я рекомендую Chicken Scheme. Он имеет тенденцию производить много меньших исполняемых файлов, чем mzscheme. Возьмем следующий привет мир приложения, например:

(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 (или драгоценных камней для рубинов).

+0

спасибо за предложение. – adhanlon

+3

Куриные владеет. Я действительно использую его для реальной работы. И не забывайте про Gambit-C. – Jyaan

+10

AFAIK mzscheme создает статически связанный исполняемый файл, тогда как схема курицы динамически связана с libchicken. –

3

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

8

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

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

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

+4

Что вы нашли неудовлетворительным в отношении куриной схемы? –

+1

Не могу ответить за OP, но в небольшом количестве (как всегда, совершенно бессмысленных) тестов, которые я пробовал при выборе того, какой из них использовать недавно, Gambit абсолютно принадлежал Chicken для исполнения. Казалось, что Гамбит был лучше, чем в два раза быстрее. Цыпленок GC также был * лот * медленнее, как десять раз или что-то в этом роде. – Leushenko

Смежные вопросы