Storicamente un HLL è qualcosa come C, Fortran o Pascal e un VHLL è qualcosa come Ruby o Python. Conosco i termini 4GL, 5GL, DSL e LOP e coloro che non lo sono dovrebbero leggere Wikipedia per le definizioni. Sto cercando UHLL.
La mia domanda è: ci sono linguaggi informatici là fuori che sono un altro ordine di grandezza più produttivi e qualcuno ci sta lavorando?
Più produttivo significa meno codice creato e meno tempo per i programmatori per ottenere un risultato, meno bug e meno debug, collegamento concettuale più stretto tra codice e requisiti, meno sforzi per modificarli e mantenerli.
Il dominio principale che mi interessa sono le applicazioni business e consumer di uso generale, con una interfaccia grafica o un front-end del browser, la persistenza dei dati e le connessioni ad altri sistemi come la stampa e l'e-mail. Altre persone potrebbero benissimo concentrarsi altrove.
Riconosco che alcune di quelle lingue potrebbero essere specifiche del dominio e potrebbero essere poco più che la capacità di configurazione di un'applicazione ampia e capace. I fogli di calcolo di Excel rientrano in questa categoria.
Riconosco che alcune di quelle lingue potrebbero apparire generali, ma potrebbero essere di portata limitata e inadatte a molti problemi. Ad esempio, Matlab potrebbe non essere una buona scelta per un programma che si occupa principalmente di interazione dell'utente e dati testuali.
Conosco alcune delle funzionalità che potrebbero essere presenti in una UHLL, per analogia con VHLL. Mi aspetto di trovare uno o più dei seguenti (e sentiti libero di aggiungere alla lista):
- Un disegno di un modulo GUI È il programma per un modulo GUI
- Una tabella contenente righe, colonne e intestazioni È il programma per una tabella in un database
- La logica dichiarativa dice cosa dovrebbe essere fatto e quando, senza istruzioni IF
- Operazioni su set di dati, senza loop FOR
- Esecuzione non sequenziale, ad es. Data driven, pattern matching, tree walking
La motivazione della domanda è che sono sempre più stufo del duro lavoro di tradurre requisiti aziendali relativamente semplici in grandi quantità di codice per soddisfare ciò che il computer vuole o ha bisogno. La domanda è davvero di trovare altri là fuori che condividono il mio dolore e stanno lavorando per aumentare il livello delle lingue e convincere il computer a fare di più del duro lavoro. Questa era una delle principali priorità negli anni '70 -'80, ma sta ancora accadendo?
Queste sono alcune risposte suggerite alla mia domanda, fornite qui per riassumere o enumerare le lingue che conosco e che a mio avviso non sono all'altezza.
Esistono molte lingue che sono HLL o VHLL e contengono caratteristiche individuali che appartengono a un livello superiore. Ho usato la maggior parte di loro (spesso male). Loro includono
- Lisp, con le sue macro e la capacità di auto-modificarsi
- Haskell, con dipendenza dei dati e pattern matching
- SQL, che si occupa di righe e tabelle
- Rebol, che sembra intelligente ma non capisco davvero
- APL (e J), con i suoi array multidimensionali e operatori ultracompatti
- C # con LINQ
- AWK / Perl / Python / Ruby con meravigliose collezioni e regex integrate
Queste lingue hanno troppe funzionalità di basso livello per essere UHLL. Il programmatore deve ancora scrivere molti costrutti di basso livello per qualsiasi programma utile.
Esistono pacchetti RAD / 4GL. Ne ho usati alcuni:
- dBase / Foxpro
- Dataflex / Powerflex (il mio prodotto)
- Accesso
- PowerBuilder
E molto altro che non ho usato. Principalmente la lingua è HLL nella migliore delle ipotesi, ma il pacchetto contiene un framework e connessioni privilegiate tra lingua e pacchetto in modo che le applicazioni possano essere costruite rapidamente. Non sono sicuro del motivo per cui questo approccio ha esaurito il vapore, ma in ogni caso UHLL non lo è.
Esistono framework / librerie non elaborati. Ne ho usati alcuni:
- Rails
- Java e swing
- .NET Windows Forms, WPF e ASP.NET.
Questi sono attualmente lo stato dell'arte. Lasciano il programmatore saldamente intrappolato nel fango del linguaggio di implementazione, affrontando la complessità ad ogni angolo. Questo non è UHLL, ma è possibile concepire un UHLL sopra uno di questi.
Esistono strumenti di progettazione, come UML e il set di strumenti di Rational, che non conosco bene. Per quanto posso vedere, aiutano a articolare i requisiti aziendali ma non possono mai sostituire la fase di programmazione. Non voglio eliminare i programmatori, ma solo fare di più per unità di tempo e impegno.
Quindi, avendo eliminato tutti i contendenti che posso pensare, spero che qualcun altro possa fornire un candidato migliore.
Modifica tardiva: penso di avere una risposta: Wolfram Language. http://www.wolfram.com/wolfram-language/