Jusqu'à présent, je ne connais pas les différences TOUCHE entre ces trois. Quand quelqu'un me pose des questions à ce sujet, je leur dis seulement que C # est un langage de programmation, HTML et XML sont des langages de balisage, et JavaScript et VBScript sont des langages de script. Mais quelles sont les principales différences qui les distinguent les unes des autres?
Permettez-moi d'essayer de trouver une ligne de démarcation entre ces trois types de langage. Bien sûr, il y aura de nombreuses exceptions et contre-exemples, car ce n'est que mon avis.
Un langage de balisage est utilisé pour contrôler la présentation des données, comme "représenter ces noms d'utilisateurs sous forme de liste à puces ou de tableau".
Un langage de script est utilisé pour arbitrer entre les programmes afin de générer des données. Cela est particulièrement vrai pour les langages de script Shell comme bash, mais si vous y réfléchissez, également Python ou Perl est venu du besoin d'accomplir des tâches sous UNIX sans écrire un programme en C. Le programme qui vous contrôlez la plupart du temps dans ces langues est l'interprète de la langue elle-même, qui accomplit des tâches générales pour vous. Les autres programmes typiques avec lesquels vous interagissez sont les serveurs de base de données ou les serveurs Web.
Pour revenir à la métaphore de la liste des utilisateurs, dans un langage de script, vous demandez à la base de données "donnez-moi tous les noms d'utilisateurs", puis demandez au serveur Web "d'envoyer cette liste d'utilisateurs à ce demandeur".
Un langage de programmation est utilisé pour transformer les données. Il le fait en créant des instructions CPU qui réécrivent les données d'entrée dans la sortie; nous espérons que la sortie souhaitée. Des exemples de transformation de données consistent à calculer une somme à partir d'un certain nombre d'additifs, ou à résoudre un système d'équations différentielles à partir d'un ensemble de conditions, ou à écrire et lire à partir d'une structure arborescente de manière cohérente compte tenu d'une séquence de requêtes éventuellement simultanées .
Pour revenir à la métaphore de la liste d'utilisateurs, dans un langage de programmation, vous écrivez comment parcourir une table d'enregistrements, extraire de chaque enregistrement le champ "nom" et les renvoyer tous au demandeur.
Notez que les langages de script sont un sous-ensemble des langages de programmation, c'est-à-dire qu'un langage peut être à la fois "script" et "programmation": Python est régulièrement utilisé pour "arbitrer entre les programmes", et aussi pour "transformer les données ". Il existe d'autres langages comme Java qui sont rarement utilisés pour" arbitrer entre les programmes ", non pas parce que cela est impossible mais parce qu'ils ne sont pas conçus pour rendre cela facile. La caractéristique clé d'un scripting le langage est qu'il peut orchestrer d'autres programmes, tout comme un script donne le signal à un acteur pour commencer sa partie.
Un langage de balisage est un langage utilisé pour représenter des données structurées. Par exemple, HTML permet de spécifier qu'une partie du document est un titre ou une autre partie est une liste, par rapport à un document texte plat.
Les langages de balisage ne sont pas considérés comme des langages de programmation¹.
La différence avec les langages de programmation n'est pas toujours évidente. Par exemple, XSLT est un langage complet de Turing², mais est basé sur XML qui est un langage de balisage.
Wikipedia lui-même fait des efforts importants pour éviter de qualifier XSLT en tant que langage de programmation ou langage de balisage. Il indique seulement qu'il s'agit d'un langage déclaratif et qu'il utilise des "techniques d'optimisation trouvées dans les langages de programmation fonctionnels et les langages de requête de base de données".
Un langage de script est un langage de programmation qui est interprété plutôt que compilé, ce qui signifie que les langages de script représentent un sous-ensemble de tous les langages de programmation.
Il n'est pas toujours évident de savoir si un langage de programmation est un langage de script, comme il n'est pas toujours évident de savoir si un langage est compilé ou interprété. Par exemple, PHP may doit être compilé en bytecode intermédiaire³ puis traduit en code machine par le compilateur JIT, tout en étant toujours considéré comme un langage de script⁴.
Voir aussi: Splitting Meta-Hairs par Steven Lott.
¹ "XML n'est pas un langage de programmation". Voir XML en 10 points .
² "XSLT est un langage complet de Turing" Voir XSLT sur Wikipedia
³ "HHVM compile Hack et PHP en un bytecode intermédiaire. Ce bytecode est ensuite traduit dynamiquement en code machine x64 à l'exécution par un compilateur juste à temps (JIT)." Voir HHVM .
⁴ Langages de script dans Liste des langages de programmation par type sur Wikipedia.
Pour produire tout type de taxonomie, vous devez d'abord vous poser quelques questions:
En règle générale, lorsque l'on entend une question comme celle que vous avez posée, la réponse attendue fait plusieurs hypothèses. Par exemple, il est naturel de supposer que puisque toutes ces langues sont des langues, elles doivent former une hiérarchie sous un concept plus général de langue, ou qu'elles partagent l'espace de toutes les langues, ou qu'elles sont des sous-ensembles les unes des autres.
Malheureusement, rien de ce qui précède ne semble être vrai. Peut-être que seuls les langages de programmation ont une définition la plus commune. Les langages de programmation sont des langages qui codent des programmes. L'encodage signifie qu'un mot dans la langue peut être interprété comme un programme (une séquence d'actions). Les langages de programmation informatique en sont un sous-ensemble. Exemples de langages de programmation non informatiques: une liste d'épicerie, interprétée comme des instructions pour un acheteur dans un supermarché, l'ADN interprété en transcrivant des peptides, un disque musical analogique servant de programme à un magnétophone.
Les langages de programmation informatique sont donc ceux qui programment les ordinateurs.
Ne sont pas bien définis. Il est possible d'interpréter ce que ce terme signifie. Historiquement, il semblerait que les langages de programmation qui n'avaient pas de compilateur pour produire du code machine aient été appelés de cette façon. Selon les normes actuelles, cela placerait tous les langages de programmation populaires sans assembleurs dans cette catégorie. Même les langages dits de bas niveau comme C nécessitent un runtime avec des procédures préexistantes, donc les binaires obtenus en compilant un programme C ne sont pas entièrement du code machine, mais appellent aussi de temps en temps le runtime.
Ne sont pas bien définis. Chaque fois que le terme est utilisé, l'intention semble être de décrire un langage de programmation avec un lexique très limité, principalement utilisé pour générer une image visuelle ou audio. Il peut être difficile de voir XML comme une programmation, mais si vous regardez le balisage Man ou TexInfo, vous verrez que les caractères "spéciaux" sont en fait des instructions de l'interpréteur.
Il est également possible de donner une interprétation "programmation" pour le langage XML, quelque chose qui pourrait aller comme ceci:
< := put interpreter in the reading node mode
! := if reading node, start CData/Comment mode
else if not in read text mode, signal error
-- := if in start CData/Comment mode, start comment
else if in comment, put in end comment mode
else if in end comment mode, signal error
...
Conclusion: cette division à ce jour ne semble pas très significative, elle ne peut que vous donner une certaine intuition quant au type de langage auquel vous êtes confronté, mais elle ne vous fournira pas de définition rigoureuse.
Les trois concepts se chevauchent quelque peu, vous pouvez donc obtenir des arguments sans fin si XSLT est un langage de programmation ou si Python est un langage de script ou non.
A langage de balisage est un langage qui représente données structurées dans un format textuel, HTML est le plus connu, mais il existe de nombreux formats à des fins diverses, comme SVG pour les graphiques , WSDL pour décrire les interfaces de service Web, resx pour les fichiers de ressources en .net, etc. Une règle d'or est qu'un langage de balisage ne décrit pas un processus ou un algorithme (comme le fait un langage de programmation) mais qu'il s'agit de données pures. Mais c'est également une idée fondamentale de CS qu'il n'y a aucune différence fondamentale entre le code et les données. Certains langages de balisage comme XSLT ont des boucles et des conditions comme un "vrai" langage de programmation, et certains langages de programmation comme Prolog sont des données presque pures sans processus spécifié dans le code. Et LISP brouille tellement la ligne qu'il traite son propre code comme un format de données structuré.
Quant à la distinction entre langage de programmation et langage de script, il s'agit d'une distinction historique presque obsolète aujourd'hui. Autrefois, nous avions compilé des programmes autonomes écrits en C par exemple, puis nous avions des langages de script comme des scripts Shell ou Word Basic, qui étaient interprétés et conçus pour manipuler d'autres programmes et outils. Aujourd'hui, la ligne est assez floue avec beaucoup de compromis, car nous avons différents niveaux de compilation et d'interprétation (compilation de bytecode, compilation JIT, etc.), et diverses API indépendantes du langage. La distinction n'est donc pas si utile.
Un langage de balisage est utilisé pour décrire les données plutôt que la logique. Une utilisation typique d'eux est de décrire la mise en forme de documents, HTML est conçu pour cela par exemple. Mais ils sont parfois également utilisés comme formats de données généraux, XML est un langage de balisage qui est souvent utilisé pour décrire simplement les données.
La différence entre les langages de programmation et de script est très floue, les deux ont tendance à être complètes en ce que vous pouvez résoudre tous les problèmes de calcul avec eux. Il existe quelques "conseils" généraux que vous pouvez rechercher pour voir si un langage est un langage de programmation ou non.
Mais au final, si un langage est un langage de script ou un langage de programmation, c'est plus une question de convention que de critères stricts. Même les conseils ci-dessus ne sont que des tendances, vous trouverez des langages de programmation qui remplissent tous les critères d'un langage de script mais qui sont toujours considérés comme des langages de programmation.