IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le langage de balisage extensible XML serait bien mieux que YAML, d'autant que YAML ne sert à rien, d'après Carl Johnson

Le , par Jade Emy

10PARTAGES

6  2 
Le langage de balisage extensible ou XML est un métalangage informatique de balisage générique dont l'objectif initial est de faciliter l'échange automatisé de contenus complexes entre systèmes d'informations hétérogènes (interopérabilité). Tandis que YAML permet de représenter des informations plus élaborées que le simple CSV en gardant cependant une lisibilité presque comparable. La syntaxe du flux YAML est relativement simple, efficace, moins verbeuse que du XML.

Cependant, dans le podcast Go Time, Carl Johnson déclare que XML est meilleur que YAML. De son point de vue épicé, XML est meilleur que YAML, parce qu'il y a des situations où XML est approprié, mais il n'y a aucune situation où YAML est approprié.

Parlons d'abord de XML

XML a eu une très mauvaise réputation. La raison pour laquelle il a eu cette mauvaise réputation est que les gens l'utilisaient pour des choses pour lesquelles il n'aurait jamais dû être utilisé. XML signifie Extensible Markup Language (langage de balisage extensible). Et si vous l'utilisez comme un langage de balisage extensible, c'est en fait très bien.

Disons que vous travaillez sur quelque chose et que vous vous dites : "Je fais un nouveau type de livre, et j'ai besoin d'annoter tous les versets de la Bible, et d'avoir les titres des chapitres et tout ça." C'est très bien pour ça. C'est vraiment bien quand vous avez un document, que certaines choses sont en italique, que d'autres sont en langue étrangère, qu'il y a des sous-titres et tout le reste. C'est vraiment bien pour ça.

Ce n'est pas bon si c'est comme : "Je dois configurer ce serveur et le serveur doit savoir si cette valeur est vraie ou fausse." Non, ce n'est pas bon. Ne faites pas ça. Ce n'est pas une bonne utilisation de XML.

Mais XML peut être utilisé à certaines fins. Et je pense que le fait que maintenant tout le monde écrive React... et qu'ils l'écrivent avec JSX... et que JSX est fondamentalement juste du XML en ligne... je pense que cela montre qu'il y a des cas où XML est plutôt bon.

YAML d'un autre côté

Je pense que YAML n'est jamais bon. Il y a toujours quelque chose de mieux que YAML ! Nous sommes enfin arrivés à Go 1.21 et j'en suis très heureux. Et vous savez pourquoi ? Parce que YAML m'a toujours mordu le derrière avec Go 1.20. Demandez-moi pourquoi.

Eh bien, quand vous dites dans votre fichier de test : "testez ceci contre Go 1.20". Il interprète cela comme Go 1.2. C'est ainsi qu'à deux ou trois reprises, j'ai eu un repo où je me suis dit : "Ces tests ne passent pas. Pourquoi mes tests ne passent-ils pas ? Je viens de passer à Go 1.20." Et c'était comme : "Oh, non. J'ai décidé que c'était Go 1.2 " Et donc YAML va toujours vous faire ça...

De meilleurs choix

Je comprends pourquoi les gens utilisent YAML, mais il y a de meilleurs choix. Vous pouvez utiliser TOML. Vous pouvez utiliser CUE. Vous pouvez utiliser beaucoup de choses. J'aime la façon dont Caddy le fait. Avec Caddy, le langage canonique que Caddy comprend est JSON, mais ils ont des adaptateurs.

Ainsi, si vous voulez écrire du YAML, vous pouvez le faire. Mais Caddy prend ce YAML et le transforme en JSON dans les coulisses. Il existe également un langage Caddy spécifique. Vous pouvez donc lui donner le langage Caddy et il le transforme en JSON dans les coulisses. Vous pouvez également lui donner une configuration NGINX et il la transformera en JSON dans les coulisses. Si vous disposez des cycles et du temps nécessaires, c'est probablement la meilleure solution pour la plupart des gens...

Mais quand la seule façon de le faire est YAML, c'est comme : "Non... !" C'est trop sujet aux erreurs, il y a trop de choses... Il faut toujours tout citer.

Et puis...

La spécification YAML a toutes ces fonctionnalités que personne n'utilise jamais, parce qu'elles sont vraiment déroutantes et difficiles, et qu'on peut inclure des documents à l'intérieur d'autres documents, avec des références et tout ça... Et c'est du genre : "Oh, mec, je n'ai pas envie de faire ça ! Oh, mec, je ne veux pas avoir à comprendre tout ça."

Et si on ne fait pas attention, ça peut être : "Oh ouais, les trois premiers trucs que je lui ai donnés ont compris ça, mais le troisième a utilisé un analyseur qu'ils ont trouvé à l'arrière d'un camion, et il ne l'a pas compris." et c'est comme : "Oh, mec..."

YAML... jamais approprié. XML est parfois approprié.
Source : Carl Johnson

Et vous ?

Pensez-vous que cette avis est crédible ou pertinent ?
Quel est votre avis sur le langage YAML ?

Voir aussi :

Le langage C ne sera-t-il jamais battu en termes de rapidité d'exécution et de faible consommation d'énergie ? Voici les résultats d'une étude sur 27 langages de programmation les plus populaires

Kubernetes exposé : Un Yaml près du désastre, 72% des installations sont non sécurisées et exposées aux attaques

« Les formules Excel sont le langage de programmation le plus utilisé », d'après Microsoft qui annonce donc LAMBDA
Pour la création des fonctions personnalisées à partir des formules Excel

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Pyramidev
Expert éminent https://www.developpez.com
Le 26/09/2023 à 23:55
Citation Envoyé par Carl Johnson
Well, when you say in your test file:

“test this against Go 1.20”

It interprets that as Go 1.2. 😭🤣
Avec YAML, quand on écrit une chaîne de caractères, souvent, on peut omettre les guillemets. Mais on peut alors se faire avoir par surprise si les guillemets étaient nécessaires. C'est ce que Colm O'Connor, l'auteur de StrictYAML, nomme The Norway Problem.

Hélas, les formats les plus populaires pour représenter une arborescence lisible par un humain sont souvent nuls.

XML et YAML sont tous les deux des usines à gaz remplies de failles de sécurité. Par exemple, ils sont tous les deux vulnérables à la billion laughs attack. Quand un fichier XML ou YAML est une entrée utilisateur, il faut utiliser un parseur qui n'accepte qu'un sous ensemble de XML ou YAML pour éviter les problèmes. En pratique, j'avoue apprécier la concision de YAML malgré ses défauts.

JSON a ses qualités, mais il y a plusieurs standards qui coexistent. Nicolas Seriot avait écrit un article à ce sujet : Parsing JSON is a Minefield 💣.

Pour les configurations, TOML n'est pas mal. Le problème de JSON est qu'on ne peut pas ajouter des commentaires.
5  1 
Avatar de TJ1985
Membre chevronné https://www.developpez.com
Le 03/10/2023 à 9:41
Il y a fort, fort longtemps, dans un endroit fort, fort lointain, il nous arrivait de définir un langage propre à l'accomplissement d'un type de tâches spécifiques. Une grammaire restreinte, un vocabulaire précis, tout ce qui n'y entrait pas était rejeté.
Bon, nous étions vêtu de peaux de bêtes, chacun de nous devait maîtriser chaque aspect de sa vie depuis la couture des chaussons jusqu'à l'allumage du feu. Ce genre de truc ne nous posait donc pas vraiment problème. Seul souci, impossible de laisser sa trace au plafond de la caverne, nous étions anonymes, noyés dans l'obscurité de ces âges lointains, sans le plus petit réseau social pour faire notre pub.
Groumpf !
4  0 
Avatar de Daïmanu
Membre émérite https://www.developpez.com
Le 26/09/2023 à 15:31
Il y a des situations où XML est approprié, mais aucune où YAML n'est pas approprié
Oui, XML est beaucoup plus complet, mais au détriment de la lisibilité. Pour une configuration simple, je préfère utiliser YAML.

Si vraiment on a un risque que `version: 1.20` soit interprété comme `version: 1.2`, je vois pas pourquoi on ne pourrait pas utiliser de guillemets.

On n'utilise pas toutes les fonctionnalités de YAML
je pense que c'est applicable à beaucoup d'outils et de langages, cet argument n'est pas spécifique.

J'ai bien entendu ses arguments, mais je ne suis pas convaincu.
3  0 
Avatar de Zefling
Expert confirmé https://www.developpez.com
Le 26/09/2023 à 18:15
Autant utiliser des fichiers Json. Quand je tombe sur des fichiers Yaml ça me gave, il suffit de faire une erreur d'indentation et ça casse tout. Bien sûr c'est pas forcément simple de voir le problème. Et plus la configuration est grande, plus je trouve ça horrible.
Pour des fichiers des quelques lignes ça va, et plus ça grandi, plus j'ai vraiment envie d'utiliser autre chose.
4  1 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 26/09/2023 à 16:53
Citation Envoyé par Daïmanu Voir le message
Oui, XML est beaucoup plus complet, mais au détriment de la lisibilité. Pour une configuration simple, je préfère utiliser YAML.
Ça tombe bien, il ne parle absolument pas de XML pour ce cas d'utilisation !
2  0 
Avatar de Madmac
Membre extrêmement actif https://www.developpez.com
Le 28/09/2023 à 15:03
Citation Envoyé par Daïmanu Voir le message
Effectivement il ne le dit pas ouvertement, mais c'est tout le flou quand il dit que YAML ne sert à rien. Du moins c'est comme ça que je le comprends.
YAML est un bon outil de transfert de base de données ou pour sérialiser des objets. Et XML est excellent pour faire des trucs comme HTML. Ils ont tous les deux leur force et faiblesses. Le problème est que certains pensent qu'un des deux puisse être utiliser comme une solution universelle.
1  0 
Avatar de popo
Expert confirmé https://www.developpez.com
Le 04/10/2023 à 9:19
Citation Envoyé par Zefling Voir le message
Ça c'est un gros problème. L'absence de commentaires rend le format non utilisable dans certains cas.
Le sujet est sur YAML et non JSON.
Et en YAML, un commentaire est introduit avec un #.

Mais juste pour ma culture personnelle, peux-tu préciser dans quel cas l'absence de commentaire est un problème en JSON ?
1  0 
Avatar de popo
Expert confirmé https://www.developpez.com
Le 04/10/2023 à 13:53
Citation Envoyé par Pyramidev Voir le message
Par exemple, si on bidouille un fichier de configuration pour éviter un bogue, alors il peut être pertinent de laisser sur place un commentaire pour expliquer pourquoi on a mis tel champ avec telle valeur.
La bidouille ne devrait jamais être une raison valable selon moi.

Et même dans ce cas, il n'y a aucune raison de laisser un commentaire sur le fichier en lui-même.
La place d'un tel commentaire est dans la zone prévue à cet effet lors du push avec ton gestionnaire de versions.

Et, de toute manière, un fichier de configuration est, par définition, normé.
Remplace ceci { "parameter1" : "value" } par ceci { "_parameter1" : "a tiny text to explain the change", "parameter1" : "other" } et tu obtiendras le même résultat que si tu avais mis un commentaire.
1  0 
Avatar de popo
Expert confirmé https://www.developpez.com
Le 04/10/2023 à 15:41
Citation Envoyé par Pyramidev Voir le message
Si on explique la bidouille uniquement dans le message du commit et pas dans un commentaire du fichier de configuration, alors on augmente les chances que l'explication ne sera pas lue par les prochaines personnes qui mettront à jour le fichier de configuration.
Toutes mes excuses, j'étais parti du principe que la fameuse bidouille était temporaire.
Si on ne corrige jamais le bug et qu'on laisse la bidouille, il y a effectivement des chances que l'information se perde.

Citation Envoyé par Pyramidev Voir le message
Si le programme qui lit le fichier de configuration accepte et ignore les champs inconnus, alors on peut en effet se servir de ces champs come des zones de commentaire. C'est effectivement une solution de contournement possible, même si je trouve ça un peu moche.
C'est effectivement moche, tout comme le fait de mettre une bidouille.
C'est le même principe, c'est sensé être temporaire.
1  0 
Avatar de Daïmanu
Membre émérite https://www.developpez.com
Le 26/09/2023 à 17:16
Citation Envoyé par dourouc05 Voir le message
Ça tombe bien, il ne parle absolument pas de XML pour ce cas d'utilisation !
Effectivement il ne le dit pas ouvertement, mais c'est tout le flou quand il dit que YAML ne sert à rien. Du moins c'est comme ça que je le comprends.
0  0