Frage

Ich bin ziemlich fasziniert vom Gambit -Schema, insbesondere von der breiten Palette unterstützter Plattformen und der Fähigkeit, C -Code bei Bedarf direkt in Ihre Schemequelle zu setzen. Das heißt, es ist ein Schema, das weniger "Batterien enthalten" im Vergleich zu Common Lisp. Einige Leute mögen es, viele Dinge von Grund auf (auch bekannt als kräftiges Yak-Raid) zu codieren, aber nicht ich!

Dies bringt mich zu meinen beiden Fragen, die auf Menschen ausgerichtet sind, die sowohl Gambit als auch einen gewissen Aroma von gemeinsamem Lisp verwendet haben:

1) Was hat effektiv einen besseren Zugriff auf Bibliotheken? Schema hat weniger Bibliotheken als gemeinsames Lisp. Das GAMBIT -Schema hat jedoch einen reibungsloseren Zugriff auf C/C ++ - Code & Bibliotheken, die weit über die Bibliotheken von Common LISP überlegen sind. Überwiegt Ihrer Meinung nach die Glätte des FFI von Gambit nach dem Mangel an einheimischen Bibliotheken?

2) Wie vergleichen sich Objektsysteme von Schema (z. B. Tinyclos, Meroon) mit Common Lisps Clos? Wenn Sie fehlten, welche Funktionen haben Sie am meisten vermisst? Wie wichtig ist ein Objektsystem in Lisp/Schema überhaupt in erster Linie? Ich habe von ganzen LiSP-basierten Unternehmen (z. B. ITA-Software) gehört, die CLOS insgesamt verzichten. Sind Objekte wirklich so optional in Lisp/Schema? Ich fürchte, wenn Gambit kein gutes Objektsystem hat, kann ich sie vermissen (mein Programmierhintergrund ist rein objektorientiert).

Vielen Dank, dass Sie einem aufstrebenden Konvertit von C ++/Python geholfen haben,

- Matt

PS: Jemand mit mehr als 1500 Rep. Könnten Sie bitte ein "Gambit" -Tag erstellen? :) Danke Jonas!

War es hilfreich?

Lösung

1) Ich habe GAMBIT -Schema nicht verwendet, daher kann ich nicht wirklich sagen, wie reibungslos die C/C ++ - Integration ist. Aber alle üblichen LISPs, die ich verwendet habe, haben voll funktionsfähige C ffi: s. Die Verfügbarkeit von C -Bibliotheken ist also gleich. Die Integration erfordert einige Arbeit, aber ich gehe davon aus, dass dies auch bei GAMBIT -Schema der Fall ist. Schließlich sind Lisp und C verschiedene Sprachen ..? Aber vielleicht haben Sie eine andere Erfahrung, ich möchte in diesem Fall mehr lernen.

Sie können interessiert sein QuickLisp, ein wirklich gutes neues gemeinsames Lisp -Projekt - es macht es sehr einfach, viele hochwertige Bibliotheken zu installieren.

2) C ++ und Python sind so konzipiert, dass sie OOP und Klassen als typische Mittel zur Einkapselung und Strukturierung von Daten verwenden. CLOS hat diesen Ehrgeiz überhaupt nicht. Stattdessen bietet es generische Funktionen, die für bestimmte Argumente spezialisiert sein können - nicht für Klassen. Im Wesentlichen ermöglicht dies OOP, aber im gemeinsamen Lisps ist OOP eher ein bequemes Merkmal als etwas Grundlegendes, um Dinge zu erledigen.

Ich denke, Clos ist viel besser gestaltet und flexibler als das C ++ - Objektmodell - Tinyclos sollte in diesem Aspekt nicht anders sein.

Andere Tipps

Sicher, dass das Schema als Ganzes weniger Bibliotheken im definierten Standard enthält, aber jede bestimmte Schemasimplementierung baut normalerweise auf diesem Standard auf, um mehr "Batterien enthaltene" Funktionen enthalten.

Gambit zum Beispiel verwendet die Schnee Paketsystem, mit dem Sie Zugriff auf mehrere Support -Bibliotheken erhalten.

Andere Programme gingen noch besser und haben Zugang zu mehr (oder besseren) Support -Bibliotheken. Beide Schläger (mit Planet) und Hühnchen (mit Eier) Komm mir sofort in den Sinn.

Das gemeinsame Lisps ist jedoch auch sehr reichhaltig und eine große Anzahl interessanter und nützlicher Bibliotheken ist eine einfache ASDF-Installation entfernt.

In Bezug Coops. Das heißt, es ist absolut nichts falsch mit Tinyclos. Beides würde gut dienen und findet nichts, was es fehlt. Obwohl diese letzte Aussage mehr damit zu tun hat, dass ich mich beim Schreiben nicht auf viele objektorientierte Ismen verlassen kann. Beide Systeme meiner Erfahrung in tendieren tendenziell auf, wenn ich "Protokolle" schreiben möchte, und dann eine Möglichkeit, sich auf das Protokoll zu spezialisieren, wenn das Sinn macht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top