53 votes

Pourquoi devrais-je utiliser un format de fichier lisible par l'homme?

Pourquoi devrais-je utiliser un format de fichier lisible par l'homme, de préférence à un binaire? Est-il jamais une situation où ce n'est pas le cas?

EDIT: J'ai eu cela comme une explication initialement lors de l'affichage de la question, mais ce n'est pas notre propos d'aujourd'hui:

Au moment de répondre à cette question, j'ai voulu renvoyer le demandeur à une norme, ALORS la réponse sur le pourquoi l'utilisation d'un format de fichier lisible par l'homme est une bonne idée. Ensuite, j'ai cherché pour l'un, et ne pouvait pas en trouver un. Alors, voici la question

76voto

Nick Fortescue Points 18829

Il dépend

La bonne réponse est: cela dépend. Si vous écrivez des données audio/vidéo par exemple, si vous avez un pied de biche en un format lisible par l'homme, il ne sera pas très lisible! Et les documents word sont un exemple classique où les gens ont voulu ils ont été lisible, donc plus souple, et en se déplaçant à XML MS, va dans ce sens.

Beaucoup plus important que binaire ou texte n'est qu'un standard ou non standard. Si vous utilisez un format standard, alors les chances sont vous et à la prochaine les gars de ne pas avoir à écrire un analyseur, et c'est une victoire pour tout le monde.

Vous trouverez ci-après certaines opinions raisons pour lesquelles vous pourriez voulez choisir l'un sur l'autre, si vous devez écrire votre propre format (et de l'analyseur).

Pourquoi utiliser lisible par l'homme?

  1. Le gars à côté. Envisager le maintien de développeur en regardant votre code de 30 ans ou de six mois à partir de maintenant. Oui, il devrait avoir le code source. Oui, il doit avoir les documents et les commentaires. Mais il a très probablement ne sera pas. Et d'avoir été ce gars-là, et avait de sauvetage ou de convertir des anciennes, extrêmement précieux, objets de données, je vais vous remercions de faire quelque chose que je peux il suffit de regarder et de comprendre.
  2. Permettez-moi de le lire ET de l'ÉCRIRE avec mes propres outils. Si je suis un utilisateur d'emacs que je peux utiliser. Ou Vim, ou le bloc-notes ou ... Même si vous avez créé d'excellents outils ou des bibliothèques, ils risquent de ne pas fonctionner sur ma plate-forme, ou même de courir plus. Aussi, je peux alors créer de nouvelles données avec mes outils.
  3. L'impôt n'est pas un grand - stockage est gratuit. Presque toujours de l'espace sur le disque est libre. Et si elle n'est pas, vous le saurez. Ne vous inquiétez pas à propos de quelques crochets ou des virgules, généralement, il ne fera pas beaucoup de différence. Prématuré d'optimisation est la racine de tous les maux. Et si vous êtes vraiment inquiet, il suffit d'utiliser un standard de l'outil de compression, et puis vous avez un petit format lisible par l'homme - n'importe qui peut décompresser.
  4. L'impôt n'est pas un grand - ordinateurs sont rapides. Il pourrait être plus rapide à analyser binaire. Jusqu'à ce que vous avez besoin pour ajouter une colonne supplémentaire, ou un type de données, ou de soutenir à la fois l'héritage et les nouveaux fichiers. (même si cela est atténué avec le Protocol Buffers)
  5. Il y a beaucoup de bons formats existent. Même si vous n'aimez pas XML. Essayez CSV. Ou JSON. Ou .les propriétés. Ou encore XML. Beaucoup d'outils existent pour l'analyse de ces déjà dans beaucoup de langues. Et il ne faut que 5 minutes pour écrire de nouveau si mystérieusement tout le code source est perdu.
  6. Diffs devenir facile. Lorsque vous vérifiez dans le contrôle de version, il est beaucoup plus facile de voir ce qui a changé. Et l'afficher sur le Web. Ou votre iPhone. Binaire, vous savez que quelque chose a changé, mais vous comptez sur les commentaires pour vous dire ce que.
  7. Fusionne devenir facile. Vous obtenez toujours des questions sur le web demandant comment faire pour ajouter un PDF à un autre. Cela n'arrive pas avec le Texte.
  8. Plus facile à réparer si elle est endommagée. Essayez et réparation corrompu document texte vs corrompue d'une archive zip. J'en ai assez dit.
  9. Chaque langue (et de la plate-forme) pouvez lire ou écrire. Bien sûr, le binaire est la langue maternelle d'ordinateurs, de sorte que chaque langue soutien binaire. Mais beaucoup de le classique petit outil de langages de scripts fonctionnent beaucoup mieux avec les données de texte. Je ne peux pas penser à une langue qui fonctionne bien avec le binaire et pas avec du texte (assembleur peut-être) mais pas l'inverse. Et cela signifie que vos programmes peuvent interagir avec d'autres programmes que vous n'avez même pas pensé, ou qui ont été écrit de 30 ans avant le vôtre. Il y a des raisons de Unix a été un succès.

Pourquoi pas, et utiliser les binaires à la place?

  1. Vous pourriez avoir un grand nombre de données - téraoctets peut-être. Et puis d'un facteur 2 pourrait vraiment d'importance. Mais l'optimisation prématurée est toujours la racine de tout mal. Comment au sujet de l'utilisation d'un humain maintenant, et de convertir plus tard? Il ne prendra pas beaucoup de temps.
  2. Le stockage pourraient être libres, mais la bande passante n'est pas (Jon Skeet dans les commentaires). Si vous jettent des fichiers à travers le réseau, alors la taille peut vraiment faire une différence. Même largeur de bande et de disque peut être un facteur limitant.
  3. Vraiment exigeantes en performances du code. Binaire peut être sérieusement optimisé. Il ya une raison, les bases de données n'ont normalement pas leur propre format de texte brut.
  4. Un format binaire pourrait être la norme. Donc, utiliser PNG, MP3 ou MPEG. Il rend la prochaine les gars travail plus facile (pour au moins les 10 prochaines années).
  5. Il ya beaucoup de bons formats binaires là. Certains sont des normes mondiales pour ce type de données. Ou peut-être un standard pour les périphériques matériels. Certains sont de la sérialisation standard cadres. Un excellent exemple est Google Protocol Buffers. Un autre exemple: Bencode
  6. Plus facile à intégrer binaire. Certaines données déjà binaire, et vous avez besoin afin de l'incorporer. Cela fonctionne naturellement dans les formats de fichiers binaires, mais semble laid et est très inefficace dans la lisible par l'homme, et généralement les empêche d'être lisible par l'homme.
  7. Délibérée de l'obscurité. Parfois, vous ne voulez pas qu'il est évident que vos données sont en train de faire. Le chiffrement est mieux que accidentel de la sécurité par l'obscurité, mais si vous êtes de cryptage vous pourriez faire ainsi binaire et être fait avec elle.

Discutable

  1. Plus facile à analyser. Les gens ont prétendu qu'à la fois le texte et binaire sont plus facile à analyser. Maintenant, clairement le plus facile à analyser, c'est quand votre langue ou la bibliothèque prend en charge l'analyse, et ceci est vrai pour certaines binaire et certains des formats lisibles par l'homme, donc, n'a pas vraiment de soutien. Les formats binaires peuvent clairement être choisis de sorte qu'ils sont faciles à analyser, mais peut donc lisible par l'homme (pensez CSV ou largeur fixe) donc je pense que ce point est discutable. Certains formats binaires peuvent être simplement jetés dans la mémoire et est, donc, cela pourrait être dit pour être le plus facile à analyser, en particulier, si les chiffres (et pas seulement les chaînes de caractères sont impliqués. Cependant, je pense que la plupart des gens diraient lisible par l'homme de l'analyse syntaxique est plus facile à déboguer, comme il est plus facile de voir ce qui se passe dans le débogueur (légèrement).
  2. Plus facile à contrôler. Oui, il est plus probable que quelqu'un va coder les données de texte dans l'éditeur, ou va gémir quand un format Unicode fonctionne et l'autre ne l'est pas. Avec des données binaires qui est moins probable. Toutefois, les personnes et le matériel peut encore marquer des données binaires. Et vous pouvez (et devriez) préciser l'encodage de texte pour lisible par l'homme, de données, soit flexible ou fixe.

À la fin de la journée, je ne pense pas que ce soit peut vraiment prétendre à un avantage ici.

Autre chose

Êtes-vous sûr que vous voulez vraiment d'un fichier? Avez-vous envisagé une base de données? :-)

Crédits

Beaucoup de cette réponse, c'est la fusion ensemble des trucs d'autres ont écrit dans d'autres réponses (vous pouvez les voir là). Et surtout un grand merci à Jon Skeet pour ses commentaires (ici et hors ligne) de suggérer des façons de l'améliorer.

26voto

Jon Skeet Points 692016

Il dépend entièrement de la situation.

Les avantages d'un format lisible par l'homme:

  • Vous pouvez le lire dans ses "indigènes" format
  • Vous pouvez l'écrire vous-même, par exemple pour les tests unitaires - ou même pour de vrai contenu, en fonction de ce qu'il est pour

Probable avantages d'un format binaire:

  • Plus facile à analyser (en termes de code)
  • Plus rapide à analyser
  • Plus efficace en termes d'espace
  • Plus facile à contrôler à tout moment vous avez besoin de texte là, vous pouvez vous assurer qu'il est codé en UTF-8, et la longueur de préfixe etc)
  • Plus facile d'inclure opaque binaire efficace des données (images, etc - avec un format de texte, vous seriez obtenir en base64)

N'oubliez pas que vous pouvez toujours mettre en œuvre un format binaire, mais de produire des outils permettant de convertir dans un format lisible par l'homme. C'est ce que le Protocole de Tampons cadre de l' - c'est en fait assez rare IME à besoin d'analyser une version texte d'un protocole de tampon, mais c'est vraiment pratique de pouvoir l'écrire sous forme de texte.

EDIT: Juste au cas où cela finit par être accepté de répondre, vous devez également garder à l'esprit la remarque faite par starblue: lisible par les formes sont beaucoup mieux pour la comparaison. Je soupçonne il serait possible de concevoir un format binaire qui est approprié pour la comparaison (et où lisible par l'utilisateur diff pourraient être générés), mais out-of-the-box existantes sur les diff outils sera mieux pour le texte.

17voto

starblue Points 29696

Le contrôle de version est plus facile avec les formats de texte, car les modifications peuvent être facilement visualisées et fusionnées.

En particulier, MS-Word nous fait du chagrin à cet égard.

7voto

dirkgently Points 56879
  • Format ouvert - pas de jonglerie binaire
  • Lisibilité :)
  • Échange entre plates-formes
  • Aide au débogage
  • Facilement analysé (et facilement converti dans n'importe quel format)

Un point important: vous écrivez un analyseur une fois, mais vous lisez la sortie plusieurs fois. Cela tend à faire pencher la balance en faveur de HRF.

6voto

Joonas Pulakka Points 20361

Une raison majeure est que si quelqu'un a besoin de lire les données, disons, dans 30 ans, un format lisible par l'homme peut être compris. Le binaire est beaucoup plus difficile.

Si vous avez des ensembles de données volumineux de nature binaire (par exemple, des images), ils ne peuvent évidemment pas être stockés sous une forme autre que binaire. Mais même dans ce cas, les métadonnées pourraient (et devraient!) Être lisibles par l’homme.

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