Notizen

28.02.2019 Etwas, das in der Textengine von Anfang an anders ist als in den aktuellen Programmiersprachen, ist die Fähgikeit zur Reflexion. Lädt man eine Funktion oder ein Modul, so kann man den Code durchlaufen und zum Beispiel als String formatieren und ausdrucken, oder darin gezielt nach dem Einsatz oder der Definition von einem bestimmten Symbol suchen. Die heutigen Programmiersysteme tun es sich damit schwer und, falls sie etwas in die Richtung überhaupt anbieten, benötigen sie zusätzliche syntaktische Hilfsmittel oder gar externe Programme. In der Textengine ergibt sich die Möglichkeit der Reflexion auf Anhieb und grundsätzlich über alles, vom Code bis zur aktuellen Sitzung. Außerdem stehen dafür alle Mittel zur Verfügung, die die Textengine für den Umgang mit Text bereitstellt, was ja ihr Kerngeschäft ist. Insgesamt wird allein schon deshalb die Textengine ein ganz anderes Erlebnis beim Programmierer hervorbringen, ein Gefühl von selbsverständlicher Transparenz und tiefer Erkenntnis, das wir heute nicht einmal ansatzweise verspüren.

23.02.2019 Es ist vielleicht ratsam, sich den aktuellen Stand zu vergegenwärtigen und einen Blick auf die nächsten Schritte zu werfen. Vor der extern bedingten Pause stand die Textengine kurz vor der Veröffentlichung einer minimalen Version 0.3, die den Text als Datenstruktur (genauer: Grundeinheiten) implementiert und durchlaufen kann. Das Programm tesh (das die Textengine Shell werden soll) ist in der Lage, Dateien in der Symbolsprache zu lesen und einen symbolsprachlichen Ausdruck zu generieren, der die erfassten Texteinheiten wiedergibt. Einfache Abfragen, die Referenzgenera einschränken, lassen sich programmatisch durchführen. Es funktioniert alles gut bis auf die Generierung von Namen, die momentan mit dem Parsen nicht idempotent ist. Zunächst werde ich daran arbeiten, diese Unstimmigkeiten zu beseitigen und die angekündigte Version 0.3 zu veröffentlichen. Doch richtig spannend wird es sein, sich auf den Weg zu Version 0.6 zu machen. Diese soll in der Lage sein, einige grundlegende Text-Transformationen (Operationen auf dem Text, die selbst als Text erfasst werden) zu implementieren. Hier verlassen wir die Pfade, die das Vorläuferprogramm beging, und betreten wir Neuland. Nun kommen zwei Umstände zum Vorschein. Zum einen wäre es sehr ratsam, Erfahrung mit den Programmiersprachen Lisp und Rebol, die den Code als Daten behandeln, zu sammeln und davon zu lernen. Zum anderen wäre es wahrscheinlich sinnvoll, erst einen Prototyp zu entwickeln und auszureifen, bevor man die Implementierung in C angeht. Aus diesen Gründen spiele ich jetzt mit dem Gedanken, einen Prototyp der Textengine v. 0.6 in Lisp zu implementieren, konkret in Racket, das das an sich schon mächtige Lisp mit aufregenden Möglichkeiten der syntaktischen Gestaltung erweitert.

Textengine

img/feed.png RSS-Feed

Notizen

Reflexion

Aktueller Stand