2010-03-26 12 views
38

Ciao a tutti, voglio iniziare a usare Scheme e ho due domande. In primo luogo, consiglieresti di usare un interprete o un compilatore per Scheme e perché? Secondo, quale interprete o compilatore di Scheme consiglieresti e perché? Grazie!Qual è il miglior interprete o compilatore Scheme?

+0

La mia domanda era un po 'diversa da quelle, ma grazie! – adhanlon

+1

BTW, come una domanda "qual è la migliore" senza chiarificare i dettagli, questa sembra terribilmente soggettiva.Se ci fosse un accordo su una singola implementazione del miglior schema (per tutti gli scopi e casi d'uso), ne avremmo solo uno! –

+0

Definitivamente una domanda costruttiva, le persone con più rappresentanti di me dovrebbero riaprire questo –

risposta

24

Per un principiante, mi raccomando altamente DrRacket (in precedenza Dr. Scheme), poiché offre un ambiente davvero piacevole in cui lavorare, supporta molti dialetti di Scheme e fornisce ottime informazioni su errori e debug. Credo che la maggior parte delle implementazioni di Scheme siano interpreti, sebbene sia possibile che ci sia un compilatore là fuori.

Se sei un drogato di linea come me, un'alternativa che potresti considerare è di eseguire direttamente l'interprete racket, che è essenzialmente la stessa cosa di Dr. Racket, ma senza l'ambiente grafico e un'interfaccia a riga di comando. In alternativa, avvia il file sorgente con #! /usr/bin/env racket e rendilo eseguibile con chmod +x source.rkt.

+2

Dr. Scheme è uno degli interpreti più completi che ho usato. Molto utile per i principianti che rimangono bloccati sulla riga di comando e non possono tradurre i messaggi di errore criptici in cui il codice è sbagliato. – ecounysis

+3

In realtà ci sono più compilatori Scheme di grande nome che interpreti: ikarus, chez (versione non libera), gambit, chicken, bigloo. Infatti mzscheme/DrScheme è JITted nelle versioni correnti. Vedi http://en.wikipedia.org/wiki/Category:Scheme_compilers –

+0

Anch'io sono un drogato da linea di comando, ho usato un po 'il Dr. Scheme, ma darò una prova anche a mzscheme. Ho anche usato un po 'il gambit-c, qualche idea al riguardo? – adhanlon

7

Mi raccomando di non preoccuparmi se è implementato come un compilatore, un interprete o una combinazione di questi - specialmente per cominciare, la qualità dei file di aiuto (per un esempio) sarà molto più importante di come è implementata .

Per quanto riguarda quale, PLT Scheme è quello che uso (di gran lunga) il più spesso.

+1

Grazie per il suggerimento. Sto usando PLT Scheme e mi piace molto. – adhanlon

24

So che hai già accettato la risposta, ma per i futuri visitatori di questa domanda, mi raccomando Chicken Scheme. Tende a produrre molto eseguibili più piccoli di mzscheme. Prendiamo il seguente ciao applicazione mondo, per esempio:

(define (say-hello name) 
    (print (string-append "Hello, " name)) 
    (newline)) 

(say-hello "Earthling") 

compilato con MZC --exec hello.scm mztest: 3.3M

Compilato con CSC hello.scm -o CTest: 16k

E se cerchi il supporto della biblioteca, Chicken fornisce Eggs Unlimited, che è come PlaneT per mzscheme (o gemme per ruby).

+0

grazie per il suggerimento. – adhanlon

+3

Possiede pollo. In realtà riesco a usarlo anche per il vero lavoro. E non dimenticare nemmeno Gambit-C. – Jyaan

+10

AFAIK mzscheme crea un eseguibile linkato staticamente, mentre lo schema di pollo è dinamicamente collegato a libchicken. –

3

PTL Schema è stato rinominato in Racket (http://racket-lang.org/), ma è ancora più o meno lo stesso. Dr. Racket è un ambiente di sviluppo molto elegante con una shell, e per scrivere in Scheme tutto ciò di cui hai bisogno è #lang scheme nella parte superiore del tuo file.

8

mi consiglia Gambit-C schema:

  • E 'R5RS-conforme.
  • Ha sia un interprete che un compilatore. È inoltre possibile compilare in ANSI C.
  • È open source.
  • È portatile. (Funziona su Linux, Windows, Mac OS X e anche iOS.)
  • Dispone di semplici interfacce di funzione esterna (FFI).

Un esame superficiale rivela che Chicken sembra insoddisfacente, mentre Bigloo può essere un serio concorrente. Ma non posso commentare troppo su di loro.

+4

Cosa hai trovato insoddisfacente su Chicken Scheme? –

+1

Non posso rispondere per l'OP, ma nel ristretto numero di benchmark (come sempre, completamente privi di significato) che ho provato quando ho scelto quale utilizzare di recente, Gambit possedeva assolutamente Chicken per le prestazioni. Sembrava che Gambit fosse meglio del doppio della media. Chicken's GC era anche un * lotto * più lento, come dieci volte o qualcosa del genere. – Leushenko

Problemi correlati