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?
-
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.
-
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.
-
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.
-
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)
-
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.
-
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.
-
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.
-
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.
-
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?
-
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.
-
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.
-
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.
-
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).
-
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
-
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.
-
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
-
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).
-
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.