Historiquement, un HLL est quelque chose comme C, Fortran ou Pascal et un VHLL est quelque chose comme Ruby ou Python. Je connais les termes 4GL, 5GL, DSL et LOP, et ceux qui ne le sont pas devraient lire Wikipedia pour les définitions. Je recherche des UHLL.
Ma question est: existe-t-il des langages informatiques qui sont d'un autre ordre de grandeur plus productifs, et quelqu'un y travaille-t-il?
Plus productif signifie moins de code créé et moins de temps de programmation pour obtenir un résultat, moins de bogues et moins de débogage, un lien conceptuel plus étroit entre le code et les exigences, moins d'efforts pour modifier et maintenir.
Le domaine principal qui m'intéresse est les applications commerciales et grand public, avec une interface graphique ou un navigateur, une persistance des données et des connexions à d'autres systèmes tels que l'impression et le courrier électronique. D'autres personnes pourraient bien se concentrer ailleurs.
Je reconnais que certaines de ces langues peuvent être spécifiques à un domaine et qu'elles peuvent être un peu plus que la capacité de configuration d'une application large et capable. Les feuilles de calcul Excel entrent dans cette catégorie.
Je reconnais que certaines de ces langues peuvent sembler générales, mais peuvent néanmoins être de portée étroite et inadaptées à de nombreux problèmes. Par exemple, Matlab peut ne pas être un bon choix pour un programme qui traite principalement de l'interaction avec l'utilisateur et des données textuelles.
Je connais certaines des fonctionnalités qui pourraient être dans un UHLL, par analogie avec VHLL. Je m'attendrais à trouver un ou plusieurs des éléments suivants (et n'hésitez pas à ajouter à la liste):
- Un dessin d'un formulaire GUI EST le programme pour un formulaire GUI
- Une table contenant des lignes, des colonnes et des en-têtes EST le programme d'une table dans une base de données
- La logique déclarative indique ce qui doit être fait et quand, sans instructions IF
- Opérations sur des ensembles de données, sans boucles FOR
- Exécution non séquentielle, par exemple pilotée par les données, correspondance de modèles, marche dans les arbres
La motivation de la question est que je suis de plus en plus fatigué du travail acharné de traduire des exigences commerciales relativement simples en grandes quantités de code pour répondre à ce que l'ordinateur veut ou a besoin. La question est vraiment de trouver d'autres personnes qui partagent ma douleur et travaillent à élever le niveau des langues et à faire en sorte que l'ordinateur fasse plus de travail. C'était un objectif majeur dans les années 1970 et 1980, mais est-ce toujours le cas?
Ce sont des suggestions de réponses à ma question, fournies ici pour résumer ou énumérer les langues que je connais, et qui, à mon avis, sont insuffisantes.
Il existe de nombreuses langues HLL ou VHLL qui contiennent des fonctionnalités individuelles appartenant à un niveau supérieur. J'en ai utilisé la plupart (souvent mal). Ils incluent
- Lisp, avec ses macros et sa capacité à s'auto-modifier
- Haskell, avec dépendance des données et correspondance de modèles
- SQL, qui traite des lignes et des tables
- Rebol, qui semble intelligent mais je ne comprends pas vraiment
- APL (et J), avec ses tableaux multidimensionnels et ses opérateurs ultra-compacts
- C # avec LINQ
- AWK / Perl / Python / Ruby avec de merveilleuses collections et expressions régulières intégrées
Ces langues ont trop de fonctionnalités de bas niveau pour être UHLL. Le programmeur doit encore écrire de nombreuses constructions de bas niveau pour tout programme utile.
Il existe des packages RAD / 4GL. J'en ai utilisé:
- dBase / Foxpro
- Dataflex / Powerflex (mon produit)
- Accès
- PowerBuilder
Et bien plus que je n'ai pas utilisé. La plupart du temps, la langue est au mieux HLL, mais le package contient un cadre et des connexions privilégiées entre la langue et le package afin que les applications puissent être construites rapidement. Je ne sais pas pourquoi cette approche s'est essoufflée, mais en tout cas UHLL ce n'est pas le cas.
Il existe des frameworks / bibliothèques bruts. J'en ai utilisé quelques-uns:
- Rails
- Java awt et swing
- Windows Forms .NET, WPF et ASP.NET.
Il s'agit actuellement de l'état de l'art. Ils laissent le programmeur fermement piégé dans le bourbier du langage d'implémentation, traitant de la complexité à chaque tour. Ce n'est pas UHLL, mais une UHLL pourrait éventuellement être construite au-dessus de l'un d'eux.
Il existe des outils de conception, comme UML et le jeu d'outils de Rational, que je ne connais pas bien. Autant que je puisse voir, ils aident à articuler les exigences métier mais ne peuvent jamais remplacer l'étape de programmation. Je ne veux pas éliminer les programmeurs, faites simplement plus de travail par unité de temps et d'efforts.
Donc, après avoir éliminé tous les prétendants, je pense, j'espère que quelqu'un d'autre pourra fournir un meilleur candidat.
Édition tardive: Je pense avoir une réponse: Wolfram Language. http://www.wolfram.com/wolfram-language/