Ist IronScheme vollständig oder stabil genug, um es zu lernen?

17

IronScheme wird auf Wikipedia als Nachfolger eines gescheiterten Projekts namens IronLisp erwähnt, das Lisp wie Clojure für die JVM zu CLR und .NET bringt. Hat jemand Erfahrung mit dieser Sprache? Es sieht ziemlich vollständig aus (99%), aber ich bin mir nicht sicher, wie ich beurteilen soll, ob es meine Zeit wert ist, damit herumzuspielen oder nicht. Mit stabil oder vollständig meine ich, es für tatsächliche Projekte zu verwenden, anstatt nur mit Werkzeugen und Problemen im Project Euler-Stil herumzuspielen.

Weltingenieur
quelle

Antworten:

26

Ich bin der Autor von IronScheme. Ich bin mir nicht sicher, wie ich deine Frage beantworten soll, werde es aber versuchen :)

IronScheme versucht zunächst, das Schema (R6RS-spezifisch) zu implementieren, wobei das sekundäre Ziel die CLR-Interoperabilität ist.

Im Vergleich zu Clojure (das sich auf die schlechten Punkte konzentriert) wird IronScheme nicht:

  • Geben Sie CLR-Laufzeitausnahmen an. IronScheme verwendet die Ausnahmebehandlung von Scheme
  • geben Sie "unendliche" Stacktraces; IronScheme ist richtig Schwanz rekursiv
  • schwer einzurichten sein; Einfach in das Verzeichnis extrahieren und loslegen
  • Es dauert lange, bis es losgeht. IronScheme benötigt (wenn nicht anders angegeben) nur 0,1 Sekunden, um die REPL zu starten
  • mehrdeutig sein; IronScheme implementiert eine standardisierte Spezifikation

Leider gewinnt Clojure:

  • Dokumentation
  • Frameworks und Bibliotheken
  • Benutzergemeinschaft

Dies ist besorgniserregend für IronScheme, da die zuletzt genannten drei Szenarien in hohem Maße ein Hühnerei-Szenario sind. Persönlich neige ich dazu, Bibliotheken nur dann zu erstellen, wenn ich sie benötige, und bei einer sehr kleinen Benutzergemeinschaft leisten Benutzer neben Fehlerberichten nur einen geringen Beitrag. Ich würde eine größere Benutzergemeinschaft lieben.

In Bezug auf den Support helfe ich Benutzern normalerweise so schnell ich kann. Diese Beweise sind aus meinen Antwortzeiten in den IronScheme-Diskussionsrunden ersichtlich. Außerdem werden Fehler normalerweise behoben, sobald sie identifiziert wurden.

Aus Stabilitätsgründen ist die Codebasis ziemlich ausgereift, und derzeit sind nur Fehlerkorrekturen und Optimierungen die einzigen Code-Ergänzungen.

Wenn Sie mit dem .NET-Framework vertraut sind, können Sie mit IronScheme praktisch alles tun, wie Sie es mit jeder anderen .NET-Sprache tun können. Es kann schwieriger oder einfacher sein, je nachdem, wie sehr Sie bereit sind, in mehr Schema-ähnlichen Redewendungen zu abstrahieren. In IronScheme ist es sehr einfach, Dinge zu schreiben. Zum Beispiel besteht mein gesamtes MVC-Framework dank der Verwendung von ASP.NET aus knapp 400 Zeilen Schema-Code (ich erfinde das Rad mit Sicherheit nicht gern neu).

Wenn die Antwort nicht ausreicht, können Sie gerne um Klarstellung bitten. Demian macht auch gute Punkte in Bezug auf die Wartbarkeit.

Grüße

leppie

leppie
quelle
1
Wie verhält sich IronScheme + Net beispielsweise zu Racket, Wrt Frameworks und Libraries?
Joe Internet
Mir war nicht klar, dass es ein MVC-Framework gibt. Ist das Teil des IronScheme-Downloads?
Robert Harvey
1
@Robert Harvey: Ja, einige Beispielcodes befinden sich im Websample-Verzeichnis. Derzeit läuft auch auf ironscheme.net/doc und eval.ironscheme.net
leppie
@Joe Internet: Eigentlich keine Frameworks, aber IronScheme enthält viele SRFIs. Die meisten Bibliotheken, die ich geschrieben habe, sind für CLR-Interop.
Leppie
2

Hinweis: Ich habe keine Erfahrung mit IronScheme, nehmen Sie meine Gedanken also mit einem Körnchen Salz (obwohl es eher auf den Einsatz von Blutdrucktechnologie abzielt).

Während ich mit neuen Technologien mit trivialen Problemen spielen werde (persönliche Werkzeuge, Project Euler usw.), bin ich es sehr vorsichtig, diese Technologien in vollständigen Projekten einzusetzen. Warum?

  • Community-Unterstützung: Von wem bekommst du Unterstützung, wenn du gegen eine Wand stößt?
  • Unvorhergesehene Probleme: Wenn die Technologie nicht gründlich getestet wurde, kann ich das tun wirklich in den Bibliothekscode einarbeiten, um eine Lösung für ein Problem zu finden, das möglicherweise nicht aufgetreten ist? Wenn ich ein Teil des Commit-Teams sein wollte, dann vielleicht, aber 99% der Zeit möchte ich nur mein Projekt fertigstellen und muss mich nicht um die Installation kümmern.
  • Team-Engagement: Was passiert, wenn jemand, der das Projekt leitet, den Stecker zieht? Meine Projekte werden dann verwaist, es sei denn, ich möchte das Projekt übernehmen, für das ich die gleichen Probleme wie im vorherigen Punkt habe.

So, während neue Tech - Lernen ist immer eine gute Sache (das Schlimmste , was passieren kann , ist , dass Sie lernen , wie jemand anderes etwas umsetzen würde - was ist gut), kann es dir gebissen in dem Arsch wirklich , wenn Sie es zu früh für volle Projekte übernehmen .

Demian Brecht
quelle
3
Ich frage mich, wie Sie davon ausgehen können, dass neue Technologien kampferprobt werden, wenn Sie nicht raten, sich im Kampf auf sie zu verlassen. ;)
back2dos
1
Du hast recht, es ist eine Situation, in der es sich um einen Haken handelt. Ich spreche einfach aus meiner eigenen Erfahrung und Vorliebe. Ich konzentriere mich lieber darauf, die Dinge zu erledigen, als mich potenziell mit Sanitärinstallationen oder eingestellten Bibliotheken zu befassen. Offensichtlich muss es jemand tun .. Ich würde es einfach lieber nicht bei meinen Projekten tun :)
Demian Brecht