77 votes

Si YAML n'est pas un langage de balisage, qu'est-ce que c'est ?

Je ne vois pas en quoi YAML est moins un langage de balisage que XML. Le but d'un langage de balisage est de définir la structure d'un document, et c'est exactement ce que fait YAML (YAML est l'abréviation de YAML n'est pas un langage de balisage ).

Ce que YAML devrait plutôt signifier, c'est, Encore un autre langage de balisage .

183voto

ingydotnet Points 214

Voici la véritable histoire... :)

Clark, Oren et moi-même avons commencé à travailler sur YAML en avril 2001. Oren et Clark faisaient partie de la liste de diffusion SML, qui tentait de simplifier XML. Je venais d'écrire un langage de sérialisation de données pour Perl appelé Data::Denter. Clark m'a contacté pour me parler d'une idée appelée YAML, qui ressemblait à la syntaxe de Data::Denter. Clark avait déjà acquis yaml.org.

Après quelques mois de collaboration, j'ai fait remarquer que le langage YAML (qui signifie sans aucun doute Encore un autre langage de balisage à l'époque) n'était pas vraiment un langage de balisage (marquer les différents éléments d'un document texte) mais un langage de sérialisation (représentation textuelle de graphes de données typés/cycliques). Nous aimions tous le nom YAML, et nous l'avons donc renommé pour qu'il signifie YAML n'est pas un langage de balisage .

http://yaml.org/spec/ commence par :

YAML™ (rime avec "chameau") est un langage de sérialisation de données convivial, inter-langues et basé sur Unicode, conçu autour des structures de données natives communes des langages de programmation agiles.

Je n'aurais pas pu mieux dire :

73voto

clarkevans Points 199

Un langage de balisage suppose donc un texte de base, généralement lisible par l'homme, puis des indicateurs spéciaux ou "balisage" qui dirigent le traitement. L'idée vient d'un éditeur qui prendrait une version imprimée du manuscrit de quelqu'un et la "marquerait" pour indiquer les lignes à ajouter, les modifications à apporter, etc.

Ainsi, le SGML est un méta-langage pour la déclaration des langages de balisage, et le HTML est un langage de balisage. En 1996-7, lorsque XML est apparu sur la scène, il a été vendu comme un méta-langage SGML simplifié pour créer des langages de balisage. En XML (et en SGML), vous disposez d'éléments pour "marquer" une partie du texte, puis d'attributs qui modifient le marquage. Au fil du temps, XML a été utilisé pour bien plus que le balisage de documents, les gens l'ont utilisé pour la sérialisation des données - même s'il n'a jamais été conçu pour faire une telle chose. Bien sûr, c'était le grand problème à résoudre.

YAML et JSON sont apparus sur la scène et se sont concentrés sur les éléments suivants données la sérialisation, et non le balisage du document. Dans ces langues, il n'y a tout simplement pas de texte de base.
Par conséquent, YAML Ain't Markup Language (langage de balisage) est un terme qui se différencie assez bien de XML.

5voto

Henning Makholm Points 13132

XML a hérité de la partie "ML" de son nom de HTML et SGML, qui sont des langages de "balisage" en ce sens que ce qu'ils décrivent est un flux de texte brut accompagné de balisage des instructions telles que "cette partie du texte doit être en gras" ou "cette partie du texte est un titre". En d'autres termes, ces parties particulières du texte sont marqué comme les caractères gras ou les titres.

Plus tard, certains se sont mis à écrire du XML composé uniquement de balises et d'attributs, sans texte brut à marquer par ces balises. (Les opinions et les styles diffèrent quant à savoir s'il s'agit d'une utilisation appropriée de XML). Utilisé de cette manière, le XML devient un langage permettant d'écrire des données structurées en arborescence.

YAML n'est pas un langage de balisage car son modèle de données contient sólo la structure arborescente, sans notion de texte linéaire sous-jacent auquel la structure arborescente s'applique. Il n'y a rien à marquer ici - ou, pour le dire autrement, les données représenté par un flux YAML n'est pas une balise. En revanche, les données représenté par une balise XML est ou, du moins, selon certains points de vue, est censé l'être. (Dans les deux cas, le représentation si ces données contiennent des balises, comme des points de suspension et des indentations en YAML ou des "=" et des guillemets en XML, mais ce n'est pas le sujet).

2voto

EdoDodo Points 5480

Voici une citation de une page sur YAML :

Je suppose que la toute première question qui vient à l'esprit des lecteurs est la suivante : "pourquoi le nom YAML ? le nom YAML ?" Il existe un certain nombre d'outils qui ont joliment adopté des acronymes de la forme "YA*", "YAML", etc. des acronymes de la forme "YA*", pour signifier "Yet Another XXX". Dans la course à l'armement Dans la course à l'armement de l'esprit open-source, YAML renonce à son acronyme implicite, se contentant de la récursivité "YAML". YAML Ain't Markup Language" (YAML n'est pas un langage de balisage). Il y a un YAML fait ce que font les langages de balisage, mais sans nécessiter de balisage.

Le nom a été choisi parce qu'il nécessite beaucoup moins de balisage que d'autres langages traditionnels, tels que XML. Il se distingue par le fait qu'il est davantage axé sur les données que sur le balisage.

-6voto

Kit Ho Points 4632

Je ne vois pas en quoi YAML est moins un langage de balisage que XML.

L'utilisation de YAML au lieu de XML présente quelques avantages. Tout d'abord, il est plus lisible par l'homme. Contrairement à la structure de données XML, nous devons définir et donner un nom de balise à chaque élément de données. Les développeurs se sentiraient encombrés par le code XML et les utilisateurs ont du mal à comprendre les documents XML. En fait, XML est destiné à la communication entre machines, et non à la communication entre utilisateurs et machines. Étant donné que YAML est facilement lisible par l'homme, vous pouvez l'utiliser pour que les utilisateurs puissent lire/modifier la source de données et l'utiliser pour communiquer avec un programme informatique.

Voici un exemple montrant que leurs structures sont différentes.

XML Examples:
<busNo>101
    <busStop>ABC
           <busFee>5.4</busFee>
    </busStop>
    <busStop>CUHK
           <busFee>5.4</busFee>
    </busStop>
    <busStop>HKU
           <busFee>5.4</busFee>
    </busStop>
    <busStop>XYZ
           <busFee>5.4</busFee>
    </busStop>
</busNo>

YAML Examples:
--- #bus no
101  : [ABC:5.4, HKU:5.4, CUHK:5.4, XYZ:5.4]

Le meilleur exemple d'utilisation de YAML est celui du fichier de configuration du programme. Bien sûr, vous pouvez analyser votre propre format de fichier de configuration en XML et le passer dans votre programme. Mais vous pouvez utiliser YAML à la place. De plus, le développement est plus rapide, en particulier pour le développement web. YAML est conçu pour les langages de script tels que Python, Perl, Ruby, etc. YAML est conçu pour traduire facilement les structures communes aux différents langages mentionnés ci-dessus.

En conclusion, YAML est conçu pour une lecture humaine, ce qui en fait moins un langage de balisage que XML.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X