Gibt es irgendwelche Ultra-High-Level-Sprachen? [geschlossen]

20

Historisch gesehen ist eine HLL so etwas wie C, Fortran oder Pascal und eine VHLL so etwas wie Ruby oder Python. Ich kenne die Begriffe 4GL, 5GL, DSL und LOP, und diejenigen, die es nicht sind, sollten Wikipedia lesen, um die Definitionen zu finden. Ich suche UHLLs.

Meine Frage ist: Gibt es irgendwelche Computersprachen, die eine andere Größenordnung produktiver sind, und arbeitet jemand daran?

Produktiver bedeutet, dass weniger Code verfasst wurde und weniger Programmierer Zeit haben, um ein Ergebnis zu erzielen, weniger Fehler und weniger Debugging, eine engere konzeptionelle Verbindung zwischen Code und Anforderungen, weniger Aufwand für Änderungen und Wartung.

Die Hauptdomäne, die mich interessiert, sind allgemeine Geschäfts- und Verbraucheranwendungen mit einer grafischen Benutzeroberfläche oder einem Browser-Front-End, Datenpersistenz und Verbindungen zu anderen Systemen wie Drucken und E-Mail. Andere Leute könnten sich vielleicht woanders konzentrieren.

Ich erkenne, dass einige dieser Sprachen domänenspezifisch sein können und dass sie kaum mehr als die Konfigurationsfähigkeit einer großen und fähigen Anwendung sind. Excel-Tabellen fallen in diese Kategorie.

Ich erkenne, dass einige dieser Sprachen allgemein erscheinen, aber immer noch eng gefasst und für viele Probleme ungeeignet sind. Beispielsweise ist Matlab möglicherweise keine gute Wahl für ein Programm, das sich hauptsächlich mit Benutzerinteraktion und Textdaten befasst.

Ich kenne einige der Funktionen, die in einer UHLL enthalten sein könnten, analog zu VHLL. Ich würde erwarten, eine oder mehrere der folgenden zu finden (und fühle mich frei, der Liste hinzuzufügen):

  • Eine Zeichnung eines GUI-Formulars ist das Programm für ein GUI-Formular
  • Eine Tabelle mit Zeilen, Spalten und Überschriften ist das Programm für eine Tabelle in einer Datenbank
  • Die deklarative Logik legt fest, was wann ohne IF-Anweisungen zu tun ist
  • Operationen an Datensätzen ohne FOR-Schleifen
  • Nicht-sequentielle Ausführung, z. B. datengesteuert, Mustervergleich, Tree Walking

Die Motivation für diese Frage ist, dass ich es zunehmend satt habe, relativ einfache Geschäftsanforderungen in große Mengen Code zu übersetzen, um den Anforderungen des Computers gerecht zu werden. Bei der Frage geht es wirklich darum, andere da draußen zu finden, die meinen Schmerz teilen und daran arbeiten, das Sprachniveau zu verbessern und den Computer dazu zu bringen, mehr von der harten Arbeit zu machen. Dies war ein Hauptaugenmerk in den 1970er und 1980er Jahren, aber passiert es immer noch?

Dies sind einige Vorschläge zur Beantwortung meiner Frage, die hier bereitgestellt werden, um die mir bekannten Sprachen zusammenzufassen oder aufzuzählen, und die meiner Ansicht nach nicht ausreichen.

Es gibt viele Sprachen, die HLL oder VHLL sind und einzelne Funktionen enthalten, die zu einer höheren Ebene gehören. Ich habe die meisten davon benutzt (oftmals schlecht). Sie beinhalten

  • Lisp mit seinen Makros und seiner Fähigkeit, sich selbst zu verändern
  • Haskell, mit Datenabhängigkeit und Mustererkennung
  • SQL, das sich mit Zeilen und Tabellen befasst
  • Rebol, das scheint klug, aber ich verstehe es nicht wirklich
  • APL (und J) mit seinen mehrdimensionalen Arrays und ultrakompakten Operatoren
  • C # mit LINQ
  • AWK / Perl / Python / Ruby mit wunderbaren Sammlungen und Regexen

Diese Sprachen haben zu viele Low-Level-Features, um UHLL zu sein. Der Programmierer muss noch viele einfache Konstrukte für jedes nützliche Programm schreiben.

Es gibt RAD / 4GL-Pakete. Ich habe einige verwendet:

  • dBase / Foxpro
  • Dataflex / Powerflex (mein Produkt)
  • Zugriff
  • PowerBuilder

Und vieles mehr habe ich nicht benutzt. Meist ist die Sprache bestenfalls HLL, aber das Paket enthält ein Framework und privilegierte Verbindungen zwischen Sprache und Paket, sodass Anwendungen schnell erstellt werden können. Ich bin mir nicht sicher, warum dieser Ansatz zu Ende ging, aber UHLL ist dies auf jeden Fall nicht.

Es gibt unformatierte Frameworks / Bibliotheken. Ich habe ein paar verwendet:

  • Schienen
  • Java awt und Swing
  • .NET Windows Forms, WPF und ASP.NET.

Dies ist derzeit Stand der Technik. Sie lassen den Programmierer fest im Sumpf der Implementierungssprache gefangen und setzen sich auf Schritt und Tritt mit Komplexität auseinander. Dies ist keine UHLL, aber eine UHLL könnte möglicherweise auf einer dieser aufgebaut werden.

Es gibt Designtools wie UML und das Toolset von Rational, die ich nicht gut kenne. Soweit ich sehen kann, helfen sie dabei, geschäftliche Anforderungen zu artikulieren, können aber den Programmierschritt niemals ersetzen. Ich möchte keine Programmierer eliminieren, sondern nur mehr pro Zeiteinheit und Aufwand erledigen.

Nachdem ich also alle Konkurrenten eliminiert habe, die ich mir vorstellen kann, hoffe ich, dass jemand anderes einen besseren Kandidaten liefern kann.

Late Edit: Ich glaube ich habe eine Antwort: Wolfram Language. http://www.wolfram.com/wolfram-language/

david.pfx
quelle
2
@Phoshi - die letzten drei Punkte werden auch von SQL abgedeckt. Nur nicht auf DWIM-Weise (mach was ich meine).
kdgregory
10
Eine Zeichnung eines GUI-Formulars IST das Programm für ein GUI-Formular. Sicher, aber wo ist der Code, der das Klicken auf Schaltflächen, das Aktualisieren der Benutzeroberfläche usw. verarbeitet? Haben Sie schon einmal mit den Formular-Designern von Visual Studio zusammengearbeitet? Sie schreiben immer noch Code unter die Decke, aber normalerweise muss sich der Entwickler diesen nie ansehen. Sie entwickeln nur die Form "visuell". Mit Ausnahme von benutzerdefiniertem Code wie den Körpern von Ereignishandlern ... Eine Tabelle mit Zeilen, Spalten und Überschriften ist das Programm für eine Tabelle in einer Datenbank. Was ist mit allen Triggern, Indizes und Einschränkungen für die Datenbanktabelle?
FrustratedWithFormsDesigner
3
@FrustratedWithFormsDesigner: Und doch bist du ... frustriert.
Robert Harvey
4
@ Robert Harvey: Ja. Aber nicht so frustriert, als müsste ich den gesamten Code selbst schreiben. ;)
FrustratedWithFormsDesigner
7
Was kann eine höhere Sprache (wie "die abstrakteste") sein als ein DSL, das auf eine bestimmte Problemdomäne zugeschnitten ist? Natürlich gibt es einige Sprachen, die speziell für den effizienten Aufbau solcher DSLs entwickelt wurden.
SK-logic

Antworten:

33

Fast alle Kriterien, die Sie auflisten, wurden bereits in 4GL / RAD-Tools wie MS Access, Sybase Power Builder, Oracle Forms, Ruby-on-Rails (als moderneres Beispiel für Web-Apps) und vielen anderen ausprobiert (siehe Wikipedia für eine sehr lange Liste von Anbietern). Tatsächlich können mit diesen Tools relativ einfache Geschäftsanforderungen sehr schnell in eine Art Programm umgewandelt werden. Aus diesem Grund bewerben die meisten Anbieter von RAD-Tools ihre Produkte so, dass jeder den Eindruck hat, bereits eine UHLL in Ihrem Sinne erfunden zu haben.

Der Haken ist, sobald Sie den Boden der Anforderungen verlassen, die " relativ einfach " sind, und sobald Sie mit diesen Umgebungen geschriebene Programme warten und weiterentwickeln müssen, werden Sie bemerken, dass Sie leicht an die Grenzen stoßen und die Nachteile von ihnen bemerken , oder dass das Implementieren von Anforderungen mit ihnen keineswegs einfacher ist als mit jedem anderen "VHLL", das Sie sich vorstellen. IMHO gibt es eine gute Chance, dass diese alle Effizienzverbesserungen töten, die Sie in Version 1.0 hatten, wenn Sie weiter zu Version 1.1, 1.2 und 1.3 Ihres Programms gehen.

Wenn Sie Software für komplexe Anforderungen erstellen möchten, benötigen Sie eine komplexe Programmierumgebung. Es gibt immer noch keine Silberkugel , wir haben uns im Laufe der Jahre nur allmählich verbessert und nicht die "Größenordnung" der Produktivität mit einer aktuellen Programmiersprache im Vergleich zu ihren Vorgängern (zumindest in den letzten 30 Jahren, was in etwa der Zeit ist) der Vergangenheit, als Brooks Artikel veröffentlicht wurde).

Doc Brown
quelle
9
+1 für relatively simple. Tatsächliche Geschäftslogik neigt dazu, sehr schnell Spaghetti zu machen.
Bobson
1
+1 für sobald Sie den Boden verlassen. Für mich sind sie oft sehr ähnlich wie "baue ein Blog in 5 Minuten (ohne Code zu schreiben)!" Geben Sie Werbung ein. Es ist großartig, bis Sie etwas implementieren müssen, das einem echten Programm ähnelt, und dann plötzlich, was Sie für eine einfache Sache hielten, nicht mehr. Vielleicht sind sie großartig und ich verstehe sie einfach nicht - aber das Marketing macht es wirklich schwer zu glauben, dass es nicht nur ein größeres Chaos ist, je weiter Sie gehen.
BrianH
Ja, ich weiß. Ich habe Code in den meisten dieser 4GLs und in einigen anderen geschrieben. Diejenigen, die ich verwendet habe, skalieren, aber sie tun dies, weil sie eine eingebettete nicht sehr gute HLL enthalten, wie z. B. VBA. Und alle haben Grenzen und als geschlossene Produkte können Sie diese Grenzen nicht ändern. Ja, Fred Brooks hat recht, eine UHLL würde also eine ganze Waffenkammer an Kugeln brauchen.
david.pfx
Ich nenne das den "Dreamweaver-Effekt". UHLLs sind nur ultra-undichte Abstraktionen
Charles Salvia
14

Die höchste Programmiersprache, die ich kenne, ist APL . Für die Darstellung aller erforderlichen Symbole ist eine spezielle Tastatur erforderlich. Schauen Sie sich dieses Video an , in dem der Autor eine vollständige Implementierung von Conways Game of Life in etwa sieben Minuten schreibt.

Die eigentliche Frage ist natürlich: "Ist das praktisch?" Kann ich weltweit genügend APL-Programmierer finden, um ein Unternehmen auf diese Weise zu unterstützen? Läuft APL auf Handys und Tablets? Muss ich wirklich allen Softwareentwicklern neue Tastaturen kaufen?

Wenn Sie wirklich eine Produktivitätssteigerung wünschen, ist Ihre beste Wette wahrscheinlich eine Lisp-Variante. Clojure wird auf der JVM ausgeführt und verfügt über einen .NET-Port. Ich sage das, weil die Leute es bereits getan haben. Die Orbitz-Suchmaschine läuft auf Lisp, und Paul Graham führte mit Lisp ein ganzes Unternehmen, das ihm einen erheblichen Vorteil gegenüber seinen Konkurrenten verschaffte (die alle Java verwendeten).

Beachten Sie, dass je höher Ihre Programmiersprache ist, desto mehr von der eigentlichen Hardware entfernt ist und desto wahrscheinlicher Leistungsprobleme auftreten. Wenn Sie nicht über wirklich ausgefeilte Compiler verfügen, werden Sie möglicherweise von Zeit zu Zeit leistungskritische Teile Ihrer Anwendung in leistungsfähigeren Sprachen niedrigerer Ebene codieren.

Und es gibt immer noch die Frage, ob eine kritische Masse an Entwicklern vorhanden ist, die sich mit der Sprache auskennen. Trotz aller Warzen werden Sie nie Probleme haben, einen Java-Programmierer zu finden.


Beachten Sie, dass sich die gängigen Sprachen noch weiterentwickeln. Linq wurde speziell entwickelt, um datengesteuertes Programmieren aussagekräftiger zu machen. Die C # -Sprache wurde um mehrere neue Funktionen erweitert, damit Linq funktioniert. Sie alle haben mit der Verbesserung der Entwicklerproduktivität zu tun.

Lesen Sie weiter und
übertreffen Sie die Durchschnittswerte

Robert Harvey
quelle
Linq ist ein hervorragendes Beispiel für die Art von Code, die ich meine. Ich liebe es, Ifs und Loops als Whens und Selects in einer einzigen Zeile zu schreiben. Irgendwelche anderen Beispiele?
david.pfx
1
@ david.pfx: C # ist für diese Partei ziemlich spät und ich finde seine Syntax rückwärts (es verwendet SQL-Schlüsselwörter, aber die Reihenfolge ist anders, wo alle anderen die SQL-Reihenfolge und einfachere Schlüsselwörter / Symbole verwenden). Die Art und Weise, wie sie es in SQL kompilieren können, ist jedoch besser als die meisten Sprachen.
Jan Hudec
4
@ david.pfx: So ziemlich jede funktionale Sprache mit Listenverständnis kann das tun, was Linq tut.
Robert Harvey
7

Ich denke, Sie haben ein wenig auf einen Übergang hingewiesen, der die Existenz von Ultra-High-Level-Sprachen einschränkt. Irgendwann identifizieren wir sie nicht mehr als Programmiersprachen.

Das beste Beispiel für dieses spezifische Phänomen, das ich kenne und das hier möglicherweise von großem Interesse ist, ist Unified Modeling Language . In der Tat gibt es spezielle Software-Anwendungsstacks, die speziell für Ihre Anforderungen entwickelt wurden. Es erfüllt viele Ihrer Anforderungen, aber nicht unbedingt in der Art, wie Sie denken. Trotzdem ist es äußerst lehrreich für diese Situation, da ich mich ähnlich gefühlt habe und meine Erfahrung (die folgt) die Art und Weise, wie ich über dieses Problem denke, verändert hat.

Ich persönlich werde hier sprechen von IBM Rational Software Architect , die ein Versuch ist wirklich Ultra - High - Level - Entwicklung ermöglichen. Das Ziel ist, dass Sie das philosophische Geschäftskonzept als Objekt erstellen können, z. B. als Akteur oder Klasse, die Entitätsattribute vergeben, Verbindungen definieren, definieren, wie Informationen während der Bearbeitung durch das System fließen können, und dies tun alle mit einer GUI.

Sie können z. B. ein DataStore-Objekt, einen Akteur, ein Formular oder einige relevante Klassen (wie z. B. Customer usw.) ziehen, mithilfe von Diagrammen und dergleichen Verbindungslinien zwischen Objekten zeichnen und boom: Wenn Sie fertig sind, veröffentlichen Sie ein Arbeitsprogramm. (dies ist offensichtlich extrem vereinfacht)

In der Tat wurde eine komplexe GUI erstellt, eine sehr gründliche Implementierung / Interpretation von UML. Anschließend wird sie in Java / C # / VB-Code mit vollständigen XML-Dokumenten kompiliert, die die UML-Grafikinformationen enthalten, und sie werden auch implementiert / aktiviert Round-Trip-Engineering, mit dem Sie zwischen Modell und Code hin- und herwechseln können, um die Dinge sowohl auf einer sehr hohen philosophischen Ebene als auch auf einer sehr niedrigen Ebene plattformspezifischen Codes zu steuern.

Es ist alles, was Sie wollen und mehr, und Sie geben nichts im Austausch auf! Recht?

Warum wird es nicht von allen benutzt?!?!

... na ja, das ist die Sache. Was Sie tatsächlich erreichen, ist ein monolithisches Unterfangen, alles beinhaltet eine Menge beweglicher Teile und Magie, alles wird - oder wird manchmal auch nicht - durch eine Änderung an einer von vielen verschiedenen Stellen (in der GUI, XML, unterer Ebene) beeinflusst Code, UML-Modelle, die selbst in vielen verschiedenen Modellebenen erstellt / definiert / verwaltet werden).

Es ist alles sehr cool, damit zu spielen, aber es ist ... wie man es ausdrückt ... es hat eine extrem hohe Lernkurve, ist auf mehrere Disziplinen ausgelegt und man muss es wirklich als eine völlig neue Sache betrachten erlaubt wenig - sehr wenig - Generalisierbarkeit für andere Fähigkeiten, die Sie bereits haben.

Und das Fazit ist - selbst dann, wenn Millionen und Abermillionen von Dutzenden von Unternehmen und einigen sehr großen Namen in das Projekt gesteckt werden, haben Sie immer noch Code im C-Stil auf der ausführbaren Ebene, der manchmal direkt bearbeitet werden muss , weil einige Dinge die Übersetzung zwischen objektorientierten Klassenbeschreibungen und UML einfach nicht auf Programmier- / Maschinenebene bringen und die Automatisierung einfach nicht vollständig sein kann.

Meine Erfahrung war, dass es eine unglaublich komplizierte Art war, Gerüste zu erzeugen. Das ist wahrscheinlich das Grausamste, was ich jemals über solch ein immenses technologisches Unterfangen sagen werde, aber genau das habe ich davon bekommen.

Von den Leuten in der Industrie, mit denen ich gesprochen habe, haben sie leider dasselbe gesagt. Sie hatten das Gefühl, dass sie über Monate und Monate eine Menge Arbeit in der Erstellung von Dokumentationen, unzähligen Diagrammen, Modellen, Besprechungen und Analysen geleistet haben. Dann haben sie alles rausgeschmissen und das Entwicklerteam hat einfach den Code dafür geschrieben und ihn oft einfach als Noch behandelt Eine andere Spezifikationsmappe (die niemand mehr liest). Jetzt verwenden sie nur Java und eine spezielle Diagramm- / Visualisierungssoftware sowie Agile, und das ist das Ende dieser Geschichte.

Vielleicht ist das unfair und es funktioniert, wenn Sie es richtig machen. Vielleicht, aber von Beratern und Professoren, mit denen ich gesprochen habe, gaben sie an, viele Stunden in speziellen mehrwöchigen Entwicklungsworkshops verbracht zu haben, um das System zu erlernen, weitere Schulungen zu absolvieren und buchstäblich Jahre damit zu verbringen, zu lernen, wie man es herstellt arbeiten und was wohin geht.

Aber vielleicht haben alle Programmierer die Schuld, dass sie sich einfach weigern, das System so gut zu akzeptieren, und dass es doch überhaupt nichts mit Computerprogrammierung zu tun hat. Vielleicht widersetzen sich reine Code-Programmierer einfach dem Ersetzen ihrer Jobs, wie die Kerzenmacher und Weber von früher, und lehnen es daher ab, nur ihre eingeschränkte Aufgabe der Implementierung nach Spezifikation zu erledigen, und dies lässt alle anderen so frustriert werden, dass sie es herauswerfen und schlechte Dinge sagen. und es war fast perfekt.

Aber ... ich denke, dass es etwas Wahres daran gibt, aber ich denke, dass es meistens nicht wirklich gut funktioniert. Ich denke, es dreht sich um etwas, das die meiste Zeit nicht wirklich so schwer ist (Computerprogrammierung), und es wird noch schwieriger, bis zu dem Punkt, dass es großartig wäre, wenn es funktioniert, aber heiliger Mist, Sie haben lange Zeit mit nichts zu tun zeigen, damit es dorthin kommt!

Vielleicht würde es nur in einem Unternehmen mit mehr als tausend Mann Teams funktionieren, und vielleicht sind wir einfach noch nicht da.

Ich weiß nicht.

Eine Untersuchung darüber, was bei diesem Ansatz für Ultra High Level Languages ​​richtig und was falsch ist - und ich denke, dass UML in eine solche Überlegung einbezogen werden muss - muss wirklich Dinge wie Rational Software Architect berücksichtigen, um ein Problem zu vermeiden potenzielle Narren Besorgung.

Oder wir müssen einfach noch 20-50 Jahre harte Arbeit leisten. Ich bin nicht mehr optimistisch, dass eine Programmiersprache die Einschränkung ist.

Und wenn Programmiersprachen vorher die Einschränkung waren, gaben uns Verbesserungen eine mögliche Größenordnung. Wenn sie keine solche Einschränkung mehr darstellen, ist es viel wahrscheinlicher, dass Innovationen nicht in der Lage sind, eine solche Reihenfolge der Verbesserung zu erreichen. Aber ich kann die Zukunft nicht sagen! Ich gehe also davon aus, dass der Rest nicht "in Arbeit" ist, sondern sicherlich "zu früh, um es zu sagen".

BrianH
quelle
Denken Sie wirklich, Codierung zu beseitigen? Ich sehe keine Aussicht darauf, dass Geschäftsanforderungen direkt in Code übersetzt werden, bis Computer so intelligent sind wie wir.
david.pfx
1
Ich hatte das zweifelhafte Vergnügen, mit Rhapsody zusammenzuarbeiten (ich frage mich, warum IBM ein ähnliches Tool gekauft und zwei ähnliche Anwendungssätze unter der Marke IBM Rational geführt hat), und meine Erfahrung daraus ist, dass es nicht skalierbar ist. Mehrere Personen, die an demselben Codeteil arbeiten, sind ein gut untersuchtes und gelöstes Problem, aber mehrere Personen, die an demselben UML-Teil arbeiten, funktionieren einfach nicht.
Jan Hudec
"Warum wird es nicht von allen verwendet?!?!" - weil es schlechte Ergebnisse liefert. Dies ist ein Pferd, das in einem Zentimeter seines Lebens ausgepeitscht wurde. UML ist ein Fehlschlag.
Duffymo
1

Wenn Sie eine Weile darüber nachdenken, besteht eine höhere Programmierstufe im Wesentlichen darin, kleinere Teile zusammenzustellen, die leicht verfügbar und bewährt sind. Bis zu dem Punkt, an dem Ihr Programm sehr einfach ist, Code von verschiedenen Bibliotheken zu kleben. Vielleicht ist der Kleber eine sehr ausdrucksstarke DSL. Sie können dies in nahezu jeder Programmiersprache tun.

Ich persönlich beginne immer mehr zu spüren, dass die Lösung für die Kompositionsfähigkeit - im Gegensatz zu dem, was Sie vielleicht instinktiv empfinden - nicht in der objektorientierten Programmierung zu finden ist. Dieses Paradigma sowie die zwingende Programmierung bieten Programmierern zu viel Freiheit, was es wiederum zu schwierig macht, Code zu schreiben, der leicht wiederverwendbar ist.

Ich denke vielmehr, dass funktionale Programmierung Grundelemente liefert, die für die Kompositionsfähigkeit viel besser geeignet sind. Mit reinen funktionalen Programmiersprachen können Sie auch keine Funktionen definieren, die Nebenwirkungen haben, wodurch Fehler nicht nur reduziert oder entdeckt werden, sondern auch einfacher aufgebaut werden können (sie können zu einem größeren System zusammengestellt werden).

Wenn Sie sich für funktionale Programmierung interessieren, werfen Sie vielleicht einen Blick auf moderne funktionale Sprachen wie Haskell . Ich denke, dass das Parsec- Modul eine schöne High-Level-DSL (es ist eine Combinator-Bibliothek im Fachjargon genannt) zum Parsen bietet. Es gibt auch funktionale reaktive Programmierframeworks für Haskell, mit denen Sie leistungsstarke GUIs mit wenigen Codezeilen erstellen können.

Matthias P.
quelle
1
-1 für die Beantwortung einer Ja / Nein-Frage ohne Ja oder Nein zu sagen. (Und das spezifische Vokabular in der Frage des OP zu ignorieren.)
DougM
Eigentlich halte ich das für richtig. Die UHLL dient nicht dazu, bereits vorhandene Funktionen zu implementieren, sondern sie auf eine Weise zu kombinieren, über die auf der unteren Ebene nicht mehr nachgedacht werden kann. Kennst du welche? Haskell ist es nicht.
david.pfx
Vielen Dank für Ihre positive Antwort. Eigentlich habe ich nur darüber nachgedacht, die Antwort zu löschen, da ich DougM zustimme. Ich habe nicht vorgeschlagen, dass es Haskell selbst ist, sondern ich denke, dass die Verwendung von Combinator-Bibliotheken in funktionalen Programmiersprachen (wie Haskell) die Möglichkeit ist, fertige Komponenten zu kombinieren.
Matthias P.
0

Ich würde erwarten, dass Lua, wie sie vom Spiel zum Schreiben ihrer Quests und Schnittstellen verwendet wird, diese Kriterien erfüllt. Es gibt auch ähnliche domänenspezifische Sprachen (und Dienstprogramme zum Erstellen von Karten), mit denen Level-Designer schnell und einfach sagen können, "wenn der Spieler mit Bob spricht, starte Bobs epische Quest".

Ich kenne ein paar weitere esoterische Sprachen, die sich darauf konzentrieren, Code so zu verschieben, dass er beschreibt, was vor sich geht, und nicht, wie es getan werden soll. Einige konzentrieren sich auf einen sehr aussagekräftigen, logikbasierten Ansatz. Einige konzentrieren sich auf die reaktive Programmierung, um dies zu erreichen. Einige konzentrieren sich auf Schauspieler, um dies zu tun (insbesondere für Dinge, die parallelisierbar sein müssen). Einige konzentrieren sich darauf, die Syntax einfach natürlicher zu gestalten - mit der Behauptung, dass natürliche Syntax zu weniger Fehlern führt, die durch die Übersetzung zwischen natürlicher Sprache und Code verursacht werden.

Keines ist wirklich vielversprechend, wenn es darum geht, eine Größenordnung mehr Produktivität für den einfachen Entwickler zu erreichen.

Telastyn
quelle
1
Wäre lua nicht besser als Sprache für die Codierung von Details auf niedriger Ebene geeignet, die außerhalb der Reichweite der UHLL liegen?
david.pfx
0

Ich denke, REBOL kann alle Ihre Kriterien erfüllen. Sie können relativ anspruchsvolle GUI-Apps in mehreren Codezeilen erstellen - die "Spezialität" ist jedoch die DSL-Erstellung.

dronar
quelle