Eines der Dinge, die Ruby zum Leuchten bringen, ist die Fähigkeit, domänenspezifische Sprachen besser zu erstellen
Obwohl man diese Bibliotheken in LISP über Makros duplizieren kann, finde ich Rubys Implementierung eleganter. Trotzdem denke ich, dass es Fälle gibt, in denen das Makro von LISP besser sein kann als das von Ruby, obwohl mir keines einfällt.
In welchem Bereich ist LISPs Makro besser als Rubys "Fähigkeit", DSL zu erstellen, wenn überhaupt?
aktualisieren
Ich habe das gefragt, weil moderne Programmiersprachen sich der LISP-Singularität nähern , wie
- C hat einen Präprozessor für die Makroerweiterung , ist jedoch sehr primitiv und fehleranfällig
- C # verfügt über Attribute, die jedoch schreibgeschützt sind und durch Reflektion verfügbar gemacht werden
- Python fügte einen Dekorator hinzu, der das Verhalten der Funktion (und der Klasse für Version 3.0) ändern kann, obwohl er sich recht begrenzt anfühlt.
- Ruby TMTOWTDI, das elegantes DSL macht, wenn Sorgfalt angewendet wird, aber auf Ruby-Weise.
Ich habe mich gefragt, ob das LISP-Makro nur auf Sonderfälle anwendbar ist und ob die anderen Programmiersprachenfunktionen leistungsfähig genug sind, um die Abstraktion zu erhöhen, um den heutigen Herausforderungen in der Softwareentwicklung gerecht zu werden.