Die Harlequin x Sophie Robinson-Kollektion ist gerade erschienen
May 16, 2023Entdecken Sie Jacques' Wellness
May 18, 2023So wenden Sie das Peeling an
May 20, 2023Generative Kunst: Die Künstler nutzen KI
May 22, 2023Apple befasst sich mit dem neuen WatchOS 10 eingehender mit Funktionen, flüssigen Grafiken und Interaktionen
May 24, 2023Die Zukunft der Programmierung: KI und Schnittstelle
Eric Elliott
Folgen
JavaScript-Szene
--
2
Hören
Aktie
KI-Sprachmodelle wie ChatGPT und Claude ermöglichen es jedem, Software zu erstellen. Diese Modelle können Probleme intelligent verstehen, Lösungen schaffen und die Lösungen erklären. Aber natürliche Sprache ist nicht immer die beste Art, mit KI zu kommunizieren. Wenn Sie den Überblick über komplexe Daten behalten und festlegen müssen, wie Sie auf bestimmte Weise mit diesen Daten interagieren, kann SudoLang Ihnen helfen.
Wenn Sie glauben, dass dies nur beim KI-Code hilft, denken Sie noch einmal darüber nach. Sie können jedes Programm in SudoLang erstellen und es dann in andere Sprachen wie JavaScript, Python, Rust oder C transpilieren – so können Sie diese Funktionen unabhängig von der Art der Software nutzen, die Sie erstellen.
SudoLang ist eine Programmiersprache, die für die Zusammenarbeit mit KI-Sprachmodellen wie ChatGPT, Bing Chat, Anthropic Claude und Google Bard entwickelt wurde. Es ist so konzipiert, dass es leicht zu erlernen und zu verwenden ist. Es ist auch sehr ausdrucksstark und kraftvoll.
Alle fortgeschrittenen Sprachmodelle verstehen es ohne besondere Aufforderung. Sie müssen die SudoLang-Spezifikation nicht einfügen, bevor Sie SudoLang mit Ihrer bevorzugten KI verwenden.
Weitere Informationen zur Sprache finden Sie in der SudoLang-Dokumentation.
Schnittstellenorientierte ProgrammierungMit dieser Funktion können Sie Ihr Programm strukturieren und ganz einfach festlegen, was die KI verfolgen soll und wie Sie mit ihr interagieren möchten.
Schnittstellen sind ein leistungsstarkes Werkzeug zum Kapseln verwandter Zustände, Einschränkungen, Befehle und Funktionen. Sie organisieren den Code klar, verständlich und wiederverwendbar.
Zu den Hauptmerkmalen der Schnittstellen in SudoLang gehören:
Hier ist ein einfaches Beispiel:
HelloCounter ist eine Schnittstelle mit zwei Statusvariablen: Nachricht und Anzahl. Es gibt eine Einschränkung, die den Zählwert kleiner oder gleich 10 hält. /increment ist ein Befehl, der den Zählwert um 1 erhöht.
Mal sehen, was mit ChatGPT 3.5 passiert:
Dieses Programm funktioniert auch in Claude2. Viele andere KI-Sprachmodelle sind nicht ausgereift genug, um SudoLang-Programme auszuführen. Beispielsweise vergisst Google Bard, die Einschränkungen zu respektieren, und kleinere OSS-Modelle wie LLaMA2 haben Schwierigkeiten, alle Anweisungen ordnungsgemäß zu befolgen. Im Moment empfehle ich die Verwendung von GPT-4 zum Erstellen und Ausführen komplexer SudoLang-Programme.
SudoLang unterstützt die Schnittstellenkomposition, um komplexere Strukturen zu erstellen. Dieser Ansatz fördert die Modularität, fördert die Wiederverwendung von Code und erleichtert das Nachdenken über das Programm. Hier ist ein Beispiel für die Komposition:
Die Zusammensetzung ermöglicht die Trennung der Questdaten, Story-Daten und Spielerdaten in logische Schnittstellen, während State sie in der vollständigen Spielstatusdarstellung zusammenführt.
Notiz: Hier werden einige coole Funktionen von SudoLang gezeigt. Zunächst werden Schnittstellen typisiert. Wenn Sie keine Typen für Schnittstelleneigenschaften angeben, leitet die KI diese ab. In diesem Fall teilen sich Player.State und Friends den Charaktertyp (nicht gezeigt). Wir verwenden die Schnittstellenliteral-Syntax, um einen Standard-Spielernamen bereitzustellen.
Herkömmliche klassenbasierte Sprachen wie Java oder C# verwenden Vererbung, um „is-a“ zu modellieren. Beziehungen. Aber „ist-ein“Beziehungen sind selten die ideale Methode zur Modellierung von Software und führen oft zu Verwirrung und Komplikationen.
Andererseits repräsentiert die Komposition „hat-a“ Beziehungen und ist eine Möglichkeit, einfache Komponenten zu kombinieren, um komplexere zusammengesetzte Schnittstellen zu erstellen. Die Zusammensetzung wird im Allgemeinen der Klassenvererbung vorgezogen, weil:
Dank seiner schnittstellenorientierten und kompositorischen Natur ermöglicht SudoLang flexible, modulare und wiederverwendbare Codestrukturen und bietet erhebliche Vorteile gegenüber der herkömmlichen Klassenvererbung.
Die Klassenvererbung war ein gescheitertes Experiment zur Wiederverwendung von Code, das häufig in einer erzwungenen Codeduplizierung endete, die durch die folgenden häufigen, bekannten Probleme verursacht wurde:
Aus diesem Grund verwendet SudoLang keine Klassenvererbung und der SudoLang-Linter meldet Fehler und schlägt Korrekturen vor, wenn Sie versuchen, ihn zu verwenden. Um zu verstehen, warum, tauchen wir etwas tiefer in diese Probleme ein:
Das Problem der fragilen Basisklasse: Dieses Problem entsteht in traditionellen OOP-Sprachen, wenn eine Änderung an einer Basisklasse (oder Oberklasse) unbeabsichtigt und negativ Auswirkungen auf Nachkommenklassen (oder Unterklassen) hat. Wenn eine Methode in der Basisklasse geändert wird, kann dies zu einer Reihe von Fehlern in jeder Klasse führen, die von ihr erbt.
SudoLang vermeidet dieses Problem, indem es die Komposition gegenüber der Vererbung bevorzugt. In SudoLang gibt es keine Unterklassen, die von einer Basisklasse erben; Stattdessen definieren Sie unabhängige, in sich geschlossene Schnittstellen. Jede Schnittstelle kann als Modul betrachtet werden, das seinen eigenen Zustand und sein eigenes Verhalten kapselt. Sie können dann größere Schnittstellen erstellen, indem Sie diese kleineren zusammenstellen. Auf diese Weise führen Änderungen an einer Schnittstelle nicht versehentlich dazu, dass eine andere beschädigt wird.
Das Gorilla/Bananen-Problem: Dies ist ein weiteres Problem im Zusammenhang mit der traditionellen Vererbung in OOP. Es ist ein Begriff, der von Joe Armstrong, dem Designer von Erlang, geprägt wurde und sich auf die Situation bezieht, in der man eine Banane wollte, aber ein Gorilla bekam, der die Banane hielt, und den ganzen Dschungel. Mit anderen Worten: Wenn eine Klasse von einer Basisklasse erbt, ist sie gezwungen, alle ihre Methoden und Daten zu erben, auch diejenigen, die sie nicht benötigt, was zu unnötiger Komplexität führen kann.
SudoLang geht dieses Problem erneut durch sein Interface-Kompositionsdesign an. Da es sich bei jeder Schnittstelle um ein unabhängiges Modul handelt, schließen Sie beim Zusammenstellen von Schnittstellen nur die granulare Funktionalität ein, die Sie benötigen. Dadurch haben Sie ein hohes Maß an Kontrolle über die Struktur und das Verhalten Ihres Programms, können unnötige Komplexität vermeiden und Ihre Codebasis schlank und überschaubar halten.
Vervielfältigung durch Notwendigkeit: In traditionellen OOP-Sprachen ist man manchmal gezwungen, Code zu duplizieren, um die oben genannten Probleme zu vermeiden. Um beispielsweise das Problem der fragilen Basisklasse zu vermeiden, könnten Sie sich entscheiden, keine Vererbung zu verwenden, was zu einer Codeduplizierung führt. Oder wenn Sie die Banane möchten, der Gorilla aber wirklich nicht passt, kopieren Sie die Banane und fügen sie ein.
Das Interface-Kompositionsdesign von SudoLang behebt dieses Problem ebenfalls. Da Schnittstellen zusammengestellt werden können, können Sie eine gemeinsame Funktionalität einmal in einer Schnittstelle definieren und diese Schnittstelle dann überall dort zusammenstellen, wo Sie diese Funktionalität benötigen. Dadurch können Sie Ihren Code trocken halten(Don't Repeat Yourself) ohne die Notwendigkeit einer Vererbung.
In SudoLang sind Schlüsselwörter wie „class“, „new“, „inherits“ und „extends“ verboten. Sie müssen auch keine Konstruktoren oder Factory-Funktionen explizit definieren oder Schnittstellen-/Objektlebenszyklen verwalten.
SudoLang ist einfach und intuitiv konzipiert und zielt darauf ab, einige der Komplexitäten traditioneller objektorientierter Programmiersprachen zu abstrahieren. Daher werden einige der herkömmlichen OOP-Schlüsselwörter zugunsten einer direkteren, zusammensetzbaren Struktur mit Schnittstellen übersprungen.
Klasse, neu, erbt, erweitert: Diese Schlüsselwörter werden in OOP-Sprachen verwendet, um Klassen und ihre Beziehungen zu definieren. Beispielsweise kann eine Klasse eine andere Klasse erben oder erweitern, und das Schlüsselwort new wird verwendet, um eine Instanz einer Klasse zu erstellen. Allerdings gibt es in SudoLang keine Klassen und daher ist keine Vererbung oder Instanziierung mit dem neuen Schlüsselwort erforderlich.
SudoLang verwendet stattdessen Schnittstellen, die Zustand und Verhalten kapseln und nach Bedarf zusammengestellt werden können. Dies mildert viele der Komplexitäten und Fallstricke, die mit der traditionellen klassenbasierten Vererbung und Instanziierung verbunden sind.
Konstruktoren oder Fabrikfunktionen: Viele Programmiersprachen erfordern Konstruktoren oder Factory-Funktionen, um neue Instanzen von Klassen oder Objekten zu erstellen. Sie sind für die Initialisierung des Zustands eines Objekts verantwortlich. In SudoLang definieren Sie jedoch keine expliziten Konstruktoren oder Fabriken. Stattdessen definieren Sie den Zustand innerhalb einer Schnittstelle. Wenn eine Schnittstelle erstellt oder aufgerufen wird, wird ihr Zustand automatisch von der KI entsprechend ihrer Definition initialisiert, wodurch der Code prägnanter und weniger fehleranfällig wird.
Schnittstellen-/Objektlebenszyklen: In SudoLang müssen Sie auch nicht den Lebenszyklus einer Schnittstelle oder eines Objekts verwalten, wie Sie es bei herkömmlichem OOP tun würden. Schnittstellen in SudoLang sind zustandsbehaftet und ihr Zustand wird automatisch verwaltet. Dies bedeutet, dass Sie sich keine Gedanken darüber machen müssen, wann eine Schnittstelle oder ein Objekt erstellt, aktualisiert oder zerstört werden muss, wodurch die kognitive Belastung und potenzielle Fehlerquellen reduziert werden.
Insgesamt macht der Verzicht auf diese traditionellen OOP-Elemente die Arbeit mit SudoLang einfacher und einfacher und bietet gleichzeitig die Kapselungs- und Modularitätsvorteile, die OOP bietet.
In der traditionellen objektorientierten Programmierung (OOP) sind das Ausblenden und Kapseln von Daten Schlüsselprinzipien, die zur Verwaltung der Komplexität und zur Verbesserung der Wartbarkeit und Robustheit von Code verwendet werden. Sie ermöglichen es, den internen Status eines Objekts vor externem Code zu verbergen und so sicherzustellen, dass andere Teile des Codes nicht direkt auf den internen Status eines Objekts zugreifen oder ihn ändern können. Dies macht es einfacher, über das Verhalten eines Objekts nachzudenken, da sein interner Zustand nur über eine genau definierte Schnittstelle geändert werden kann.
Alan Kay, einer der Pioniere von OOP, legte großen Wert auf das Prinzip der Kapselung. Er beschrieb Objekte als biologische Zellen oder einzelne Computer in einem Netzwerk, die miteinander kommunizieren können, aber einen eigenen lokalen Zustand haben, der für andere Objekte nicht zugänglich ist. Dadurch wurde das System insgesamt widerstandsfähiger, da sich Änderungen an einem Objekt nicht direkt auf andere auswirken würden.
SudoLang verwendet jedoch ein anderes Paradigma. Da es für die Schnittstelle mit einer KI konzipiert ist, ist das Konzept des Datenverbergens weniger anwendbar. Die KI ist ein intelligenter Agent, mit dem man argumentieren kann, und kein Mechanismus, der blind einer Reihe von Regeln folgt. Dies führt zu einem Wandel in der Art und Weise, wie wir über Datensicherheit und Datenschutz denken.
Stattdessen müssen wir darauf achten, robuste Einschränkungen dafür zu schaffen, wie auf Daten zugegriffen und sie manipuliert werden können, anstatt sie vollständig zu verbergen. Für die Informationssicherheit müssen Sie klar festlegen, auf welche Daten in einem bestimmten Kontext zugegriffen werden kann, was damit geschehen kann und wer dies tun darf.
Das bedeutet nicht, dass der Datenschutz bei SudoLang weniger wichtig ist – im Gegenteil, er ist genauso wichtig. Allerdings sind die Strategien, mit denen dies erreicht wird, unterschiedlich und spiegeln die einzigartigen Fähigkeiten und Einschränkungen der KI wider.
Denken Sie daran, dass KI intelligent und schlussfolgernd ist und daher auch manipuliert oder dazu verleitet werden kann, Daten preiszugeben oder zu ändern. Dies ist eine Form des Social-Engineering-Angriffs. Um dieses Risiko zu mindern, denken Sie daran, die Einschränkungen klar zu definieren, wie und wann die KI auf Daten zugreifen und diese bearbeiten kann, und sicherzustellen, dass diese Einschränkungen konsequent durchgesetzt werden.
Nicht alle KI-Modelle sind gut darin, Einschränkungen durchzusetzen. Im Allgemeinen benötigen Sie ein KI-Sprachmodell auf GPT-4-Niveau oder höher, um auch nur annähernd einen guten Datenschutz zu erreichen, und selbst das ist nicht absolut sicher.
Die schnittstellenorientierte Programmierung in SudoLang bietet einen erfrischenden und effektiven Ansatz für das Softwaredesign. Es trägt dazu bei, einige der mit herkömmlichem OOP verbundenen Fallstricke zu vermeiden, und bietet die erforderliche Struktur und Kontrolle zum Erstellen komplexer Anwendungen.
Der deklarative Charakter von Schnittstellen und Einschränkungen in SudoLang macht es sehr ausdrucksstark und ermöglicht Ihnen die einfache Definition komplexer Verhaltensweisen. Dies erleichtert die Verwendung im Vergleich zu herkömmlichen Sprachen mit starrem und ausführlicherem Code.
Das war's mit der Lektion, aber es gibt noch mehr zu lernen!
Ich biete 1:1-Mentoring zum Thema KI-Flüstern an, um Menschen zu helfen, die daran interessiert sind, ihre Erfahrungen mit KI zu erweitern, um komplexe Probleme zu lösen. Hier anmelden.
Was qualifiziert mich dazu? Die Verarbeitung natürlicher Sprache (Natural Language Processing, NLP) hat mich als Teenager zum Programmieren gebracht. Seit Sommer 2020 interagiere ich täglich mit LLMs und schon lange davor mit Chatbots im Allgemeinen. Ich schreibe und spreche seit Jahren über KI.
Ich bin im neuen Dokumentarfilm der Cyborg Society zu sehen, der bald erscheint.
Beruflich war ich Technologieleiter bei einem von Webby nominierten Spin-off-Video-Social-Network des Stanford Research Institute und habe KI-Modelle im großen Maßstab bei zig Millionen Benutzern eingesetzt.
Gemeinsam befassen wir uns mit KI-orientierten Benutzeroberflächen, der Zukunft der KI, verbleibenden Herausforderungen wie kontinuierlichem Lernen, der Integration unglaublicher KI-Funktionen in Verbraucherprodukte, die Sie heute versenden können, und vielem mehr.
Interessiert? Melden Sie sich hier.
Eric Elliott ist Berater für technische Produkte und Plattformen, Autor von „Composing Software“, Schöpfer von SudoLang (der KI-Programmiersprache), Mitbegründer von EricElliottJS.com und DevAnywhere.io und Mentor des Entwicklerteams. Er hat zu Software-Erfahrungen für Adobe Systems, Zumba Fitness,Das Wall Street Journal,ESPN,BBC,und Top-Künstler wie Usher, Frank Ocean, Metallica,und viele mehr.
Er genießt einen abgeschiedenen Lebensstil mit der schönsten Frau der Welt.
Schnittstellenorientierte ProgrammierungZustand:Einschränkungen:/Befehle und Methoden:Notiz:"ist ein""ist ein""hat ein"Erhöhte Flexibilität:Reduzierte Komplexität:Klarere Schnittstellen:Fördert die Wiederverwendung von Code:Das Problem der fragilen Basisklasse:Das Gorilla/Bananen-Problem:Vervielfältigung durch Notwendigkeit:TROCKENKlasse, neu, erbt, erweitert:Konstruktoren oder Fabrikfunktionen:Schnittstellen-/Objektlebenszyklen:Schnittstellenorientierte Programmierung:Zusammensetzung über Vererbung:Automatisiertes Instanzmanagement:Datenverbergung und -schutz:Social-Engineering-Angriffe:Eric ElliottAdobe Systems, Zumba Fitness,Das Wall Street Journal,ESPN,BBC,Usher, Frank Ocean, Metallica,