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/