Les langages spécifiques à un domaine, communément appelés petit langage ou langages orientés problèmes, se spécialisent dans un domaine problématique particulier et n'inclut pas de nombreuses fonctionnalités que l'on trouve dans les langages conventionnels. Par exemple, SQL est un petit langage pour décrire les opérations des bases de données. Les expressions régulières sont un petit langage pour la mise en correspondance de textes. Dhall est un petit langage pour la gestion de la configuration, et ainsi de suite.
« La plupart des logiciels d'aujourd'hui ressemblent beaucoup à une pyramide égyptienne avec des millions de briques empilées les unes sur les autres, sans aucune intégrité structurelle, mais simplement réalisées par la force brute et des milliers d'esclaves », extrait de A Conversation with Alan Kay. Pour Ekeroth, nous avons un réel problème dans la communauté du génie logiciel : la complexité croissante d'une application s'accompagne d'une augmentation de la taille de son code source.
Cependant, notre capacité à comprendre les grandes bases de code reste largement fixe. Selon The Emergence of Big Code, une enquête réalisée en 2020 par Sourcegraph, la majorité des personnes interrogées ont déclaré que la taille de leur base de code était à l'origine d'un ou plusieurs des problèmes suivants :
- difficulté à intégrer les nouvelles recrues ;
- le code se casse à cause d'un manque de compréhension des dépendances ;
- les modifications du code deviennent plus difficiles à gérer.
La plupart des personnes interrogées dans le cadre de l'enquête de Sourcegraph ont estimé que leur base de code avait été multipliée par 100 à 500 au cours des dix dernières années. À titre d'exemple concret, le noyau Linux comptait au départ environ 10 000 lignes de code en 1992. Vingt ans plus tard, il pèse environ 30 millions de lignes.
Lorsqu'on examine les logiciels actuels, il est essentiel de noter la prolifération de langages de programmation, de dépôts, de systèmes de contrôle de version, d'architectures, de services, de dispositifs pris en charge, d'outils et d'API différents qui contribuent à la complexité et au volume du code.
Selon certains analystes, un run-time pour un petit langage convivial qui fait correspondre des requêtes HTTP à des requêtes SQL peut être beaucoup plus rapide qu'un langage qui fait la même chose en mettant ensemble des API. « Un moteur d'exécution personnalisé peut analyser une chaîne de requête HTTP directement en code opérationnel SQLite, tandis que le développeur JS écrit du code qui nécessite des ordres de grandeur de mémoire et de temps CPU supplémentaires. » La manière dont les organisations de développement créent du code a nettement évolué. « C'est l'ère du Big Code », écrit sourcegraph.
- Volume : augmentation exponentielle de la quantité de code ;
- Variété : complexité croissante des langages, des outils et des processus utilisés pour fournir des logiciels ;
- Vélocité : cycles de livraison accélérés, ce qui signifie que le code change plus rapidement et qu'il est délivré pratiquement tous les jours ;
- Valeur : la réimagination des modèles et pratiques d'entreprise grâce à des logiciels de haute qualité.
Le développement serait beaucoup plus complexe aujourd'hui qu'il y a 10 ans, révèle l'enquête de sourcegraph. Les équipes de développement sont confrontées à de nombreuses difficultés en raison de la complexité croissante. Si l'entreprise devient de plus en plus complexe, sa base de code suivra, puisque le développement est le miroir de l'entreprise et de ses processus clés. Lorsqu'on a interrogé les acteurs du développement logiciel sur la complexité de leurs logiciels, 77 % ont répondu qu'ils étaient beaucoup plus complexes aujourd'hui qu'il y a dix ans.
Les langages généraux apportent des satisfactions
« Les petits langages sont l'avenir de la programmation », les gens avancent cet argument depuis les années 80 et peut-être même avant. Toutefois, certains développeurs ont une expérience contraire. Les tâches de programmation sont des « espaces vastes », pleines d'interactions potentielles entre les fonctionnalités. De plus, le code écrit dans un langage spécifique au domaine doit être compris par d'autres personnes. Il faut alors s'investir massivement dans une documentation et des outils appropriés.
Les spécialistes qui travaillent dans différents domaines tels que la finance ou l'assurance utilisent les « langages généraux » pour améliorer par exemple leurs performances grâce à l'automatisation. L'automatisation de toutes les activités ennuyeuses et répétitives telles que l'affichage, la copie, le renommage, le téléchargement de fichiers vers un serveur, le téléchargement de sites Web ou l'analyse des données peut être réalisée à l'aide de ces langages.
Aujourd'hui, presque tous les programmes sont développés à l'aide de ces langages. Nous pouvons développer une variété d'applications en utilisant des langages tels que : le Java, Python, C# et bien plus. Ils sont utilisés pour développer des applications de bureau, des sites Web, des logiciels système, des logiciels utilitaires et bien d'autres encore.
Source : Christoffer Ekeroth's blog
Et vous ?
Trouvez-vous pertinente l'analyse de Christoffer Ekeroth ?
« Les petits langages sont l'avenir de la programmation », pourquoi cette affirmation pose-t-elle problème ?
Voir aussi :
Unison : un langage de programmation qui propose une nouvelle approche de la programmation distribuée, il est statiquement typé et purement fonctionnel
Java, Python, Kotlin et Rust connaissent une croissance rapide, mais JavaScript reste le langage de programmation le plus populaire, selon une enquête de SlashData