Langage spécifique au domaine
Les exemples de langages spécifiques au domaine comprennent HTML, Logo pour le dessin au crayon, les langages de description de matériel Verilog et VHDL, MATLAB et GNU Octave pour la programmation matricielle, Mathematica, Maple et Maxima pour les mathématiques symboliques, Specification and Description Language pour les systèmes réactifs et distribués, les formules et macros de tableur, SQL pour les requêtes de bases de données relationnelles, Les grammaires YACC pour la création d’analyseurs syntaxiques, les expressions régulières pour spécifier les lexers, le Generic Eclipse Modeling System pour la création de langages de diagramme, Csound pour la synthèse de sons et de musique, et les langages d’entrée de GraphViz et GrGen, des logiciels utilisés pour la disposition et la réécriture de graphes, Hashicorp Configuration Language utilisé pour Terraform et d’autres outils Hashicorp, Puppet a également son propre langage de configuration.
JeuMaker LanguageEdit
Le langage de script GML utilisé par GameMaker Studio est un langage spécifique au domaine ciblant les programmeurs novices pour pouvoir facilement apprendre la programmation. Bien que le langage serve de mélange de plusieurs langages, notamment Delphi, C++ et BASIC, il manque de structures, de types de données et d’autres caractéristiques d’un langage de programmation à part entière. De nombreuses fonctions intégrées sont » sandboxées » dans le but de faciliter la portabilité. Le langage sert principalement à faciliter la prise en main du langage par n’importe qui et le développement d’un jeu.
Langage de balisage ColdFusionEdit
Le langage de script associé à ColdFusion est un autre exemple de langage spécifique à un domaine pour les sites Web axés sur les données.Ce langage de script est utilisé pour tisser ensemble des langages et des services tels que Java, .NET, C++, SMS, email, serveurs de messagerie, http, ftp, exchange, services de répertoire et systèmes de fichiers pour une utilisation dans les sites Web.
Le langage de balisage ColdFusion (CFML) comprend un ensemble de balises qui peuvent être utilisées dans les pages ColdFusion pour interagir avec les sources de données, manipuler les données et afficher la sortie. La syntaxe des balises CFML est similaire à la syntaxe des éléments HTML.
Erlang OTPEdit
L’Erlang Open Telecom Platform a été conçu à l’origine pour être utilisé à l’intérieur d’Ericsson comme un langage spécifique à un domaine. Le langage lui-même offre une plate-forme de bibliothèques pour créer des machines à états finis, des serveurs génériques et des gestionnaires d’événements qui permettent rapidement à un ingénieur de déployer des applications, ou des bibliothèques de support, qui ont été montrées dans les benchmarks de l’industrie pour surpasser d’autres langages destinés à un ensemble mixte de domaines, tels que C et C++. Le langage est maintenant officiellement open source et peut être téléchargé sur leur site web.
FilterMeisterEdit
FilterMeister est un environnement de programmation, avec un langage de programmation qui est basé sur C, dans le but spécifique de créer des plug-ins de filtres de traitement d’images compatibles avec Photoshop ; FilterMeister fonctionne comme un plug-in Photoshop lui-même et il peut charger et exécuter des scripts ou les compiler et les exporter en tant que plug-ins indépendants.Bien que le langage FilterMeister reproduise une partie importante du langage C et de la bibliothèque de fonctions, il ne contient que les fonctionnalités qui peuvent être utilisées dans le contexte des plug-ins Photoshop et ajoute un certain nombre de fonctionnalités spécifiques uniquement utiles dans ce domaine spécifique.
MediaWiki templatesEdit
La fonction Template de MediaWiki est un langage spécifique au domaine intégré dont l’objectif fondamental est de soutenir la création de modèles de page et la transclusion (inclusion par référence) de pages MediaWiki dans d’autres pages MediaWiki.
Utilisations en génie logicielEdit
Les langages spécifiques au domaine ont suscité beaucoup d’intérêt pour améliorer la productivité et la qualité du génie logiciel. Le langage spécifique au domaine pourrait éventuellement fournir un ensemble robuste d’outils pour une ingénierie logicielle efficace. De tels outils commencent à faire leur chemin dans le développement de systèmes logiciels critiques.
La boîte à outils de réduction des coûts logiciels en est un exemple. Cette boîte à outils est une suite d’utilitaires comprenant un éditeur de spécification pour créer une spécification des exigences, un navigateur de graphe de dépendance pour afficher les dépendances des variables, un vérificateur de cohérence pour attraper les cas manquants dans les formules bien formées de la spécification, un vérificateur de modèle et un vérificateur de théorèmes pour vérifier les propriétés du programme par rapport à la spécification, et un générateur d’invariants qui construit automatiquement des invariants basés sur les exigences.
Un développement plus récent est la programmation orientée langage, une méthodologie intégrée d’ingénierie logicielle basée principalement sur la création, l’optimisation et l’utilisation de langages spécifiques au domaine.
MétacompilateursEdit
Complémentaire à la programmation orientée langage, ainsi qu’à toutes les autres formes de langages spécifiques au domaine, se trouve la classe d’outils d’écriture de compilateurs appelés métacompilateurs. Un métacompilateur n’est pas seulement utile pour générer des analyseurs syntaxiques et des générateurs de code pour les langages spécifiques au domaine, mais un métacompilateur compile lui-même un métalangage spécifique au domaine conçu spécifiquement pour le domaine de la métaprogrammation.
En plus de l’analyse syntaxique des langages spécifiques au domaine, les métacompilateurs sont utiles pour générer une large gamme d’outils d’ingénierie et d’analyse logicielle. La méthodologie du métacompilateur se retrouve souvent dans les systèmes de transformation de programmes.
Les métacompilateurs qui ont joué un rôle important à la fois dans l’informatique et dans l’industrie informatique comprennent Meta-II, et son descendant TreeMeta.
Unreal Engine avant la version 4 et autres jeuxEdit
Unreal et Unreal Tournament ont dévoilé un langage appelé UnrealScript. Celui-ci permettait de développer rapidement des modifications par rapport à son concurrent Quake (utilisant le moteur Id Tech 2). Le moteur Id Tech utilisait du code C standard, ce qui signifiait que le C devait être appris et correctement appliqué, alors qu’UnrealScript était optimisé pour la facilité d’utilisation et l’efficacité. De même, le développement de jeux plus récents a introduit leurs propres langages spécifiques, un exemple plus commun est Lua pour le scriptage.
Moteurs de règles pour l’automatisation des politiquesEdit
Divers moteurs de règles commerciales ont été développés pour automatiser les politiques et les règles commerciales utilisées dans le gouvernement et l’industrie privée. ILOG, Oracle Policy Automation, DTRules, Drools et d’autres fournissent un support pour les DSL visant à prendre en charge divers domaines de problèmes. DTRules va jusqu’à définir une interface pour l’utilisation de plusieurs DSL au sein d’un ensemble de règles.
L’objectif des moteurs de règles métier est de définir une représentation de la logique métier de manière aussi lisible que possible pour l’homme. Cela permet aux experts en la matière et aux développeurs de travailler avec et de comprendre la même représentation de la logique métier. La plupart des moteurs de règles fournissent à la fois une approche pour simplifier les structures de contrôle de la logique métier (par exemple, en utilisant des règles déclaratives ou des tables de décision) couplée à des alternatives à la syntaxe de programmation en faveur des DSL.
Les modélisateurs statistiquesEdit
Les modélisateurs statistiques ont développé des langages spécifiques au domaine tels que R (une implémentation du langage S),Bugs, Jags et Stan. Ces langages fournissent une syntaxe pour décrire un modèle bayésien et génèrent une méthode pour le résoudre à l’aide de la simulation.
Générer un modèle et des services vers plusieurs langages de programmationEdit
Générer une manipulation d’objets et des services basés sur un langage de description d’interface pour un langage spécifique au domaine, comme JavaScript pour les applications web, HTML pour la documentation, C++ pour le code haute performance, etc. Ceci est réalisé par des frameworks inter-langages tels que Apache Thrift ou Google Protocol Buffers.
GherkinEdit
Gherkin est un langage conçu pour définir des cas de test pour vérifier le comportement d’un logiciel, sans spécifier comment ce comportement est implémenté. Il est destiné à être lu et utilisé par des utilisateurs non techniques en utilisant une syntaxe en langage naturel et une conception orientée ligne. Les tests définis avec Gherkin doivent ensuite être implémentés dans un langage de programmation général. Ensuite, les étapes d’un programme Gherkin agissent comme une syntaxe d’invocation de méthodes accessible aux non-développeurs.
Autres exemplesRédaction
Les autres exemples marquants de langages spécifiques à un domaine comprennent :
- Emacs Lisp
- Game Description Language
- OpenGL Shading Language
- Gradle
- ActionScript
.