1 Punkte von GN⁺ 2024-11-10 | 1 Kommentare | Auf WhatsApp teilen

Projekt λ-2D: Erkundung von Zeichnungen als Programmiersprache

  • Überblick: Projekt λ-2D ist eine Forschungsarbeit, die eine neue Sprache untersucht, mit der man durch Zeichnungen programmieren kann. Sie basiert auf Ideen des Lambda-Kalküls und ist so entworfen, dass sich Code durch Zeichnungen erstellen lässt.

  • Nichtsprachliche Programmiersprachen: Es gibt nichtsprachliche Programmiersprachen wie die ASCII-basierten Sprachen Befunge und asciidots sowie die bildbasierte Sprache Piet. Inspiriert von diesen Sprachen wurde eine neue Sprache entwickelt.

  • Ziele:

    • Die Vorteile des Schreibens von Programmen als Zeichnung nutzen und Funktionen einbeziehen, die in textbasierten Sprachen nicht möglich sind.
    • Die Anzahl der Befehle so austarieren, dass es weder zu wenige noch zu viele sind, um die Benutzbarkeit zu verbessern.
    • Visuell ansprechende Programme zeichnen können, die wie Kunstwerke betrachtet werden können.
  • Lambda-Kalkül: Das Lambda-Kalkül hat nur zwei Anweisungen: Funktionsanwendung und Funktionsdefinition. Für jede dieser Anweisungen wurden passende Symbole entwickelt.

  • Datenfluss: Das System ist so gestaltet, dass Daten über Linien fließen können, die Symbole miteinander verbinden. Zusätzliche Symbole wurden eingeführt, um die Benutzbarkeit zu erhöhen.

  • Frames und GUI-Elemente: Bestimmte Bereiche der Leinwand können als Frames festgelegt werden, damit Daten genutzt werden können. GUI-Elemente wie Slider wurden hinzugefügt, um Programme dynamisch steuern zu können.

  • Editor-Software: Es wurde ein Editor entwickelt, mit dem Nutzer Programme digital zeichnen können. Mithilfe von 5x5-Pixel-Symbolen lassen sie sich leicht auf einer Raster-Leinwand platzieren.

  • Lösung des Ausgabeproblems: Aufgrund der Eigenschaften einer rein funktionalen Sprache ist es schwierig, einen Befehl für „Ausgabe“ zu implementieren. Um das zu lösen, wurde es neu definiert, indem die Leinwand an eine Funktion übergeben wird und eine veränderte Leinwand zurückgegeben wird.

  • Parser-Entwicklung: Es wurde ein Parser entwickelt, der λ-2D-Programme in JavaScript umwandelt. Das Ergebnis ist komplex, funktioniert aber.

  • Programmiererfahrung: Die Erfahrung, in dieser neuen Sprache zu programmieren, ähnelt Minecraft oder Factorio, hat aber auch als Forschung einen Wert.

  • Visualisierung und Klang: Es wird die Möglichkeit untersucht, die Programmausführung zu visualisieren und laufende Programme wie Musik hörbar zu machen.

  • Zukünftige Pläne: Geplant ist, λ-2D weiter zu verbessern und eine neue Programmiersprache zu entwerfen, die sich in ein Rechensystem integrieren lässt, das auf Zeichnungen basiert.

  • Online-Demo: Eine Beta-Version von λ-2D kann online ausprobiert werden, und der Quellcode von Parser und Editor soll bald auf GitHub veröffentlicht werden.

1 Kommentare

 
GN⁺ 2024-11-10
Hacker-News-Kommentar
  • Es wird ein ähnliches, aber anderes Konzept als BitGrid diskutiert, bei dem man sich Bits vorstellt, die als ultimative Vereinfachung von FPGAs parallel marschieren. Diese Idee könnte nützlich sein, um der breiten Masse Petaflops zugänglich zu machen – oder auch nicht. Wichtig ist die Energie, die DFFs in ASICs verbrauchen.

    • Dabei wurden von-Neumann-Zelluläre-Automaten und Nobili-Zelluläre-Automaten entdeckt, allerdings ist es enttäuschend, dass es in diesem Teil der Informatik nur wenig zu entdecken gibt.
    • FSAs definieren einen Zellenraum unendlicher Größe, und alle FSAs sind in ihrer Zustandsübergangsfunktion bzw. ihrer Regelmenge gleich.
  • Die Arbeit eines Engineers in Automatisierungsprojekten könnte interessant oder vertraut wirken. Bei Funktionsblockdiagrammen sind Funktionsblöcke über Leitungen verbunden, und die Reihenfolge der Blöcke definiert die Ausführungsreihenfolge. Blöcke können integrierte Funktionen der Engine oder zusammengesetzte Blöcke sein.

    • In jedem Steuerzyklus wird das Diagramm einmal ausgeführt, und jeder Block wird immer genau einmal ausgeführt, auch wenn sich die Eingaben nicht geändert haben.
    • Steuerlogik von Brauereien bis hin zu petrochemischen Anlagen wird auf diese Weise implementiert.
  • Die Sprache ist derzeit Turing-vollständig, aber sehr schwer zu benutzen, wodurch Designregel Nr. 2 verletzt wird. Bei Lambda Diagrams wurde bei Stufe 1 aufgehört.

  • Solche Arbeiten wurden in Labview erledigt, aber es ist schwer, damit weiterzukommen. Auch in Software wie Max wurde das gemacht, wird jedoch schnell komplex.

  • Es bestand Interesse an einer grafischen formalen Spezifikation für Petri Nets. Die Annahme war, dass Engineers formale Methoden stärker nutzen würden, wenn es eine grafische Darstellung gäbe, aber sobald man ihnen Petri Nets zeigt, verlieren sie das Interesse.

    • Vor dem Abbruch eines PhD an der University of York wurden RoboChart und RoboSim verwendet, und es läuft ein Projekt, um das besser an die Welt von Netzwerken und Servern anzupassen.
  • Es gibt die Meinung, dass der Bereich nichtsprachlicher Programmiersprachen unerforscht ist.

  • Das erinnert an "Wireworld" aus dem Jahr 1987; es wurde schon einmal ein in Wireworld implementierter 8-Bit-Zähler gesehen.

  • Im Hinblick auf das Programmierparadigma ist es Funciton ähnlich.