Was ist das beste Schema oder die beste LISP-Implementierung für OS X?

85

Ich suche nach einer Version von Scheme oder sogar LISP, mit der ich einige verlorene Lisp-Entwicklungsfähigkeiten wiederherstellen kann. Einige Webfunktionen wären nett, aber nicht unbedingt erforderlich.

Ich habe mir das Plt- und MIT-Schema angesehen, und obwohl beide ziemlich gut aussehen, scheint das Plt funktionsreicher zu sein. Ich habe mir auch Lisp-Implementierungen angesehen, aber alle scheinen ziemlich teuer zu sein.

Ich bevorzuge kostenlose / kostengünstige Implementierungen, da dies wahrscheinlich nur gelegentliche Hobby-Programmierung ist. Welche Empfehlungen hätten Sie?

Mark Brittingham
quelle
6
Beachten Sie, dass das PLT-Schema den Namen in Racket geändert hat.
Soegaard
stark verwandte Frage: stackoverflow.com/questions/2485859
pnkfelix
2
Warum wurde diese Frage nicht geschlossen und fast alle anderen haben dies getan?
Erik Kaplun

Antworten:

71

Ich würde mit Racket gehen. Es ist möglicherweise nicht so schnell wie SBCL, verfügt jedoch über hervorragende Bibliotheken und Dokumentationen sowie über eine integrierte Umgebung, mit der Sie Scheme-Programme sofort entwickeln und ausführen können. Was ich an Rackets IDE, DrRacket, wirklich mag, ist, was Sie nicht tun müssen - Sie müssen Emacs nicht lernen, Sie müssen SLIME nicht lernen, Sie müssen sich keine Sorgen machen, den dritten zu jagen. Partybibliotheken, da praktisch alle für Racket bestimmten Bibliotheken in Paketen enthalten sind . Alles in allem verkürzt sich die Lernkurve erheblich und Sie können sich auf die eigentliche Aufgabe konzentrieren: das Schreiben von großartigem Code.

Außerdem wird ein Webserver mitgeliefert, wenn Sie Websites mit Racket-Unterstützung erstellen möchten (die ich derzeit untersuche).

Kyle Cronin
quelle
1
Ich habe PLT vor einigen Wochen mehr oder weniger zufällig ausgewählt und bin bisher sehr zufrieden mit meiner Wahl. Wie Sie gesagt haben, viele Bibliotheken und Dokumentationen, einige nützliche Tools.
Slartibartfast
Danke, ähm, niemand. Ich konzentriere mich mehr auf Tools und Dokumentation als auf Geschwindigkeit, also gehe ich mit PLT.
Mark Brittingham
1
Sichere Sache. DrScheme wurde unter Berücksichtigung der Bildung entwickelt, die einige Vorteile (einfach zu verwenden und dokumentiert), aber auch einige Nachteile aufweist. Wenn Sie nicht über HtDP ( htdp.org ) gehen, ist es am besten, die Unterrichtssprachen zu ignorieren und Module für alles zu verwenden.
Kyle Cronin
Neben jetzt unter dem Namen Racket ist, gibt es jetzt ein neues Verpackungssystem und Paket - Katalog , der jetzt über Planeten für die meisten Anwendungsfälle bevorzugt.
Jack
22

Ich habe ziemlich viel damit experimentiert.

Clozure Common Lisp (geb. Open MCL) ist bei weitem der schnellste; 25-30 Prozent schneller als der nächste Konkurrent auf meinem Intel Mac Mini.

Das MIT-Schema funktioniert auf einem Mac recht gut. Ich glaube, ich habe es schließlich selbst kompiliert, aber auf dieser Site gibt es Binärdateien. Das PLT-Schema ist auch nett und möglicherweise etwas besser in die Mac-Welt integriert. (Das PLT-Schema ist jetzt als Racket bekannt , aber ich habe nach der Änderung nicht damit experimentiert.)

Charlie Martin
quelle
2
so ziemlich alles, womit ich es versucht habe; Im Allgemeinen waren dies umfangreiche Listenmanipulationen und die starke Verwendung des loopMakros.
Charlie Martin
1
Vielleicht möchten Sie beachten, dass CCL anscheinend nicht auf 32-Bit-Intel läuft, daher ist mein Mac Mini etwas alt dafür.
David Thornley
16

Ich bin ein großer Fan von Clojure, SBCL und Clozure CL. Sie sind alle fantastisch, aber sie sind auch übertrieben, wenn Sie nur Ihre Lisping-Koteletts auffrischen möchten. Sie alle erfordern absurde Mengen an Informationssuche, Mailinglistensuche, Paketinstallation, IRC-Lauern usw.

Dr. Scheme wird nur installiert und ausgeführt. Ich habe die ersten drei Kapitel von SICP vor viereinhalb Jahren mit Dr. Scheme abgeschlossen. Nichts war tiefgreifender als die Definition eines Scheme Evaluators an sich. Sobald Sie sich ein Bild davon gemacht haben, werden Sie viel mehr Geduld für die Brüder der industriellen Stärke haben.

dnolen
quelle
3
Eigentlich brauchte ich nichts anderes für mein Ubuntu-SBCL-SLIME-stumpwm-Setup. Für den Anfang ist Practical Common Lisp und die CLHS alles, was Sie brauchen, und das bringt Ihnen einen langen Weg.
Svante
15

Für Scheme ist DrRacket fantastisch (in Racket enthalten ).

Für Common Lisp ist Ready Lisp großartig. Ein einzelnes dmg mit SBCL, Aquamacs und Slime, die sofort einsatzbereit sind.

Von der Website:

Ready Lisp ist eine Verbindung mehrerer beliebter Common Lisp-Pakete speziell für Mac OS X, darunter: Aquamacs, SBCL und SLIME. Nach dem Herunterladen verfügen Sie über ein einzelnes Anwendungspaket, auf das Sie doppelklicken können - und befinden sich in einem vollständig konfigurierten Common Lisp REPL.

Es ist ideal für OS X-Benutzer, die die Schönheit von Common Lisp mit einem Minimum an Aufwand ausprobieren möchten. Es könnte auch von Lehrern verwendet werden, um ihren Mac-Schülern eine kostenlose, vollständige Common Lisp-Umgebung zum Mitnehmen zu bieten. Bedarf

Die aktuelle Version von Ready Lisp ist 20090127 und erfordert Mac OS X 10.5 (Leopard).

Es enthält die folgenden Komponenten-Softwareversionen:

Aquamacs  1.6
SBCL    1.0.24
SLIME   2009-01-23
CL-FAD  0.6.2
CL-PPCRE    2.0.1
LOCAL-TIME  0.9.3
SERIES  2.2.10
CL HyperSpec    7.0
paredit.el  20
redshank.el     1
cldoc.el    1.16
Sébastien RoccaSerra
quelle
5

Je nachdem, wie Sie "Lisp" definieren, Clojure passt möglicherweise in die Rechnung. Es läuft unter OS X einwandfrei (es läuft überall dort, wo die JVM läuft). Es verfügt über Webfunktionen und ist kostenlos.

Es hat auch den Vorteil, dass es neu und frisch ist und Spaß macht. Könnte ideal für Hobby-Programmierung sein. Es ist einfach, Web-Apps oder GUI-Apps zu schreiben (mit Java Swing oder sogar Qt).

Brian Carper
quelle
4

Ich habe es selbst nicht benutzt, aber Steel Bank Common Lisp hat bei reddit einige positive Resonanz erhalten. Es ist Open Source und kostenlos, daher stimmt der Preis für einige Hobby-Programme.

In der Vergangenheit lief GNU Common Lisp auf meinem MacBook Pro.

Dana
quelle
4

Wenn Sie nach Scheme suchen, können Sie sich das gerade veröffentlichte JazzScheme ansehen .

Marko
quelle
4

Ich empfehle Racket Neulingen, da es eine der schönsten IDEs für Scheme-Anfänger bietet (oder besser gesagt, Programmier-Anfänger, die Scheme verwenden oder sich noch besser durch HtDP arbeiten).

http://racket-lang.org/

Eine weitere Option für Personen, die sich mehr für ein kleines Schemasystem interessieren, um es selbst zu ändern oder seinen Quellcode zu lesen, ist das Larceny-Schema, das vor allem deshalb von Interesse ist, weil sein JIT-Compiler Twobit selbst vollständig in Scheme implementiert ist.

http://www.larcenists.org/


Update: Darüber hinaus wurde das Chez-Programm kürzlich als Open-Source-Version bereitgestellt:

https://github.com/cisco/ChezScheme

(Es ist vielleicht nicht so "klein" wie Larceny, aber es hat einen sehr aggressiven Optimierungs-Compiler.)

pnkfelix
quelle
Auf der Website scheinen sie nur einen nativen Compiler, einen To-C-Compiler und eine CLR-Implementierung zu erwähnen - wo ist die JIT?
Erik Kaplun
Der native Compiler ist eine JIT.
pnkfelix
(Das heißt, es kompiliert dynamisch jeden Scheme-Ausdruck, den Sie über 'load' oder REPL in den x86-Maschinencode einspeisen. JIT ist hier für "just in time"; es hat nichts mit Java und der JVM zu tun, falls Sie dies möchten dachte ich meinte mit JIT)
pnkfelix
Ich dachte nicht, dass es irgendetwas mit Java zu tun hat; Es ist nur so, dass auf der Homepage "direkt in nativen Maschinencode kompiliert" steht , und so werden JIT-kompilierende VMs / Interpreter normalerweise nicht beschrieben.
Erik Kaplun
1
Um Ihre Frage zu beantworten, können Sie von Larceny derzeit keine eigenständige Binärdatei erhalten. Sie können Ihre Scheme-Quelle laden und dann ihren Heap (mit kompiliertem Code) in ein Heap-Image serialisieren, aber selbst dann müssten Sie die Heap-Datei und die Laufzeit-Binärdatei als separate Dateien neu verteilen. Ich habe überlegt, es einfacher zu machen, die beiden zu einem einzigen Binärbild zusammenzuführen, habe aber nie den Sprung gewagt.
pnkfelix
2

Wenn Sie nur Hobby programmieren, bietet LispWorks eine kostenlose, persönliche Version, die sehr leistungsfähig und anspruchsvoll ist. Das größte Problem ist ein Laufzeitlimit von mehreren Stunden. Sie werden also keine Server mit langer Laufzeit darin schreiben, aber das bedeutet nicht, dass es kein nützliches Tool ist.

CLISP läuft auf fast allem und ist eigentlich ganz nett, es macht einfach keine Threads. (Wichtig, wenn Sie einen tatsächlichen Server schreiben möchten, aber wie PHP und Perl uns gezeigt haben, ist Apache + [Sprache einfügen] eine sehr praktikable Plattform.)

Will Hartung
quelle
1

Ich habe mir in letzter Zeit die gleiche Frage gestellt. Nachdem ich DrScheme unter OS X verwendet habe, wäre es meine erste Wahl für die Scheme-Distribution für jede Plattform. Sehr schöne IDE, Debugging-Funktionen und eine gute Auswahl an Bibliotheken / Frameworks (einschließlich eines sehr schönen GUI-Toolkits, das "einfach funktioniert ... auch auf Mac" ;-))

Jetzt suche ich jedoch nach einer ähnlich komfortablen Umgebung für Common Lisp. Es ging um CCL (OpenMCL) gegen SBCL. SBCL scheint die beliebte Wahl zu sein, aber ich habe gelesen, dass unter OS X kein Threading unterstützt wird. (Ist das wirklich ein Problem?). Clozure CL hingegen bietet gute Unterstützung für native Threads, die obcj-Brücke usw.

Ich finde CCL etwas seltsam, aber ich werde noch eine Weile dabei bleiben - es scheint immer noch die logische Wahl für die Integration zu sein.

Ich verwende Emacs 23 (aus der Quelle mit --with-ns erstellt) und Slime als Umgebung und das funktioniert gut für mich. :-)


quelle
1

Ich habe festgestellt, dass Chicken für Scheme gut funktioniert und über Homebrew erhältlich ist.

brew install chicken

Der größte Teil des Codes von SICP funktioniert mit geringfügigen Änderungen.

Justin Meiners
quelle
1

Geh mit Racket . Ich bin sehr zufrieden damit!

Jaro
quelle