Programmieranweisungen in natürlicher Sprache oder absichtliche Programmierung

    Dieses Thema wird wahrscheinlich eine eher negative Reaktion hervorrufen, da die meisten Entwickler ihre Gegner sind. Dies liegt daran, dass die absichtliche Programmierung im Vergleich zur klassischen Programmierung erhebliche Nachteile aufweist:
    • schwacher Determinismus von Anweisungen in natürlicher Sprache
    • Eine signifikante Länge jeder Anweisung, die Sie zwingt, einen ziemlich umfangreichen Code einzugeben
    • Der Code sieht konsistent aus, was das Verstehen und Suchen erschweren kann
    • Reduzierte Programmgeschwindigkeit durch Analyse von mehr Zeichen

    Aber er hat bedeutende Vorteile:
    • Alle Anweisungen sind für eine Person intuitiv, es ist kein vorläufiges Studium einer neuen Sprache erforderlich
    • Jede Anweisung spiegelt eindeutig die Absicht des Entwicklers wider, der sie geschrieben hat
    • die natürliche Fähigkeit einer natürlichen Sprache, neue Abstraktionsebenen (sowohl für Objekte als auch für Methoden zu ihrer Manipulation) basierend auf vorhandenen zu verallgemeinern und zu erzeugen
    • Der Programmierprozess in einer natürlichen Sprache ist nicht nur in rein zwingender Form, sondern auch in Form von Kommunikation möglich

    Von größtem Interesse für mich ist der letzte Punkt, mit dem Sie das Verhalten eines mechanisierten Systems im laufenden Betrieb im Kommunikationsprozess ändern können. In diesem Fall kann die Sprache sowohl als Mittel zum Bearbeiten von Daten als auch als Mittel zum Austauschen von Daten dienen. Dies gibt der absichtlichen Programmierung die Möglichkeit, ihr Potenzial in Nischenbereichen wie der Robotik auszuschöpfen, wenn der Mechanismus eine Beschreibung von Verhaltensalgorithmen sowie andere Informationen über eine einzige Kommunikationsschnittstelle in einer einzigen Sprache erhalten kann.

    Tatsächlich habe ich in der Überschrift getäuscht und wir werden trotzdem über eine geplante Sprache sprechen, die jedoch auf den Elementen einer natürlichen Sprache basiert und die sich im Verlauf der Entwicklung fast in eine natürliche verwandeln kann.

    Was die Mängel der Programmierung in einer natürlichen Sprache betrifft, so wird das Problem der Geschwindigkeit bis zu einem gewissen Grad durch Vorverarbeitung während des Ladens des Befehls in den Speicher gelöst, so dass bei einem erneuten Aufruf ressourcenintensive Prozeduren ausgeschlossen werden. Das Problem der Befehlslänge beim Tippen wird durch intelligente Vorhersageeingaben in der Entwicklungsumgebung gelöst. Das Problem der Einheitlichkeit des Quellcodes wird durch Einfärben der Anweisungen gelöst. Zum Beispiel so:


    Um das Problem des schwachen Determinismus der natürlichen Sprache zu lösen, wird vorgeschlagen, eine Regel für die Erstellung einer Programmanweisung einzuführen, die auf den darauf basierenden sogenannten Valenzen und Triaden basiert. Die Idee ist, alle Anweisungen aus den Triaden zu erstellen - Bausteine, die aus drei Komponenten bestehen:


    Die Triade besteht aus zwei Konzepten, die durch eine semantische Verbindung miteinander verbunden sind. Eine solche semantische Verbindung in der Linguistik nennt man Valenz. Die Konzepte können materielle und immaterielle Objekte, Handlungen, Eigenschaften, numerische Werte usw. sein. Als Beispiel können wir den künstlerischen Satz betrachten: "Er hat das Buch dort hingelegt." In dieser Konstruktion hat das Verb „put“ drei gefüllte Valenzen: wer was setzt, wo sie setzen. Valenzen ermöglichen möglicherweise die Bildung semantischer Verbindungen eines Konzepts mit anderen. In diesem Beispiel bildet der Begriff "setzen" eine Verbindung mit dem Begriff "er" durch die Wertigkeit von "wer", mit dem Begriff "Buch", durch die Wertigkeit von "was", mit dem Begriff "dort" durch die Wertigkeit von "wo". Das Konzept von "Er" wird der Schauspieler genannt (der die Handlung ausführt), und das Konzept von "Buch" wird der Akteur genannt (über den die Handlung ausgeführt wird).

    Verschiedene Verben haben eine unterschiedliche Anzahl offener Valenzen, normalerweise von 1 bis 7. Beispielsweise erscheint das Verb "move" im Vergleich zum Verb "put" als zusätzliche Valenz "from". Valenzen können auch nicht nur im Verb, sondern auch in anderen Konzepten enthalten sein. Zum Beispiel im Satz "Er hat dort ein großes Buch abgelegt." Das Konzept des „Buches“ erfüllte dank des Konzepts des „Großen“ die Wertigkeit des „Was“.

    Die korrekte Bestimmung potenzieller (nicht gefüllter) Valenzen ist nicht immer einfach zu implementieren, insbesondere wenn die Konstruktion des Satzes recht kompliziert ist. Daher wäre es im Anfangsstadium schön, alle Valenzen in der Anleitung anzugeben. Anhand eines Beispiels würde dies folgendermaßen aussehen:
    Он ?кто положил (?что книгу, ?куда туда).

    Dieser Satz ist ein Rahmen - er enthält ein Verb, daher ist das Verb der Ursprung, von dem sich die Valenzen in beide Richtungen erstrecken.

    Die Einführung obligatorischer Valenzen schafft jedoch ein Problem, das darin besteht, dass der Satz eine lineare Form hat und die Valenzstruktur des Satzes die Form eines verzweigten Baums mit einer Wurzel hat - einem Verb. Um dieses Problem zu lösen, werden Klammern in den Vorschlag eingefügt. Denn ohne Klammern würde die Wertigkeit „wo“ den Begriff „dort“ mit dem Begriff „Buch“ verbinden und nicht mit dem Begriff „setzen“.

    Dies kann anhand eines anderen, technischeren Beispiels näher erläutert werden. Angenommen, es gibt eine Variable, Variable1, der Sie den Wert "1" zuweisen müssen. In der natürlichen Sprache würde eine solche Anweisung folgendermaßen aussehen:
    присвоить переменной Переменная1 значение 1.


    In einer Sprache mit explizit angegebenen Valenzen sieht diese Anweisung folgendermaßen aus: In diesem Beispiel weist das Konzept der Aktion „Zuweisen“ eindeutig zwei Valenzen auf: Zuweisen von Was und Zuweisen von Was. Die Klammern hier sind notwendig, um eine Baumstruktur in einem linearen Satz definieren zu können:
    присвоить (?чему Переменная1, ?что 1).



    zuweisen
             was
                  Variable1
             was
                  1
    

    Die Übertragung von Informationen unter Verwendung solcher Konstruktionen mit einem expliziten Hinweis auf semantische Beziehungen ist ebenfalls möglich. Zum Beispiel kann ein Satz: wie folgt zerlegt werden: Wir erhalten eine Baumstruktur:
    Земля это планета солнечной системы.


    Земля ?что есть ?что планета ?чего системы ?какой солнечной.



    ist da
        was
            Die Erde
        was
            Planet
                   was?
                        das System
                               was
                                     Solar
    

    Ein weiteres Beispiel: Sie können es folgendermaßen transformieren: Wir erhalten eine Baumstruktur:
    Атом водорода имеет один электрон.


    водорода ?чего атом ?что имеет (?что электрон, ?сколько 1).



    hat
         was
             Atom
                 was?
                      Wasserstoff
         was
             Elektron
         wie viel
                 1
    

    Es stellt sich so etwas wie ein „menschlicher“ Assembler heraus, der die kommunikativen und intuitiven visuellen Funktionen einer natürlichen Sprache besitzt (da er dieselben Wörter aus einer natürlichen Sprache verwendet) und gleichzeitig einfach zu implementieren ist. Für eine Person ist es nicht so, solche vorläufigen Transformationen der Arbeit durchzuführen. In Zukunft wird es möglich sein, eine Software-Vorverarbeitung einer wirklich natürlichen Sprache mit automatischer Erkennung aller Valenzen durchzuführen. Das vorgeschlagene Verfahren führt einige zusätzliche Einschränkungen ein, die noch nicht vollständig verstanden sind, macht jedoch auch die Aufzeichnung von Anweisungen formeller.

    Jetzt auch beliebt: