Смерть бинарным форматам
May 7th, 2009 Posted in ТехнологииПочти у любой программы есть необходимость сохранять данные, будь это настройки пользователя или проектный файл. Формат данных каждый программист выбирает на свой вкус, но чаще всего это будет ini файл, XML или двоичный формат, имеющий встроенную поддержку в языке программирования.
Мой призыв к программистам будет лаконичен. Коллеги, используйте форматы данных, понятные человеку, а не машине. Несколько часов, потраченные на написание класса записи/чтения окупятся сторицей многократно.
Самый простой вариант - изменение настроек в конфигурационном файле. Со структурой ini файла разберется и ребенок, а поменять одну строку в текстовом файле по-всякому быстрее, чем запускать программу и пробираться сквозь частокол диалогов к заветной опции.
Если программа работает из командной строки или сервисом - плюсов еще больше. Изменения в конфиг файле могут быть сделаны внешним скриптом перед запуском основного приложения. Чем больше вариантов использования программы - тем больше шансов, что она приживется.
Ну и один из самых важных моментов - совместная работа над одним проектом нескольких человек. Текстовый формат дает спокойно вносить изменения многим людям одновременно, а заботы по слиянию берет на себя source control система.
Бинарные форматы достались нам как наследство от тех времен, когда компьютеры были большими, а количество байт оперативной памяти было меньше количества волос на голове программиста. Ситуация давно изменилась, и не только потому, что программист успел полысеть. Оставим бинарные форматы для хранения графики, музыки и видео и двинемся стройными рядами в светлое, human readable будущее.
PS. Идейным спонсором поста послужил старый Robohelp, в котором мы с 2000 года ваяем хелп. Все было хорошо, пока не потребовалось работать над одним проектом двум авторам. Как вы уже догадались, файл проекта в Robohelp хранится в каком-то двоичном формате, заставляя SVN вздрагивать при каждом коммите. Видимо пришла пора переходить на что-то более свежее.

9 Responses to “Смерть бинарным форматам”
By Gregory on May 8, 2009
“Коллеги, используйте форматы данных, понятные человеку, а не машине.”
давайте лучше использовать форматы понятные и человеку и машине
А по существу – да, тексовый формат особенно в конфигах это хорошо. Но важно помнить, что текст должен быть понятным. Попадались конфиги, которые хот и текстовые но все-равно ничего не понятно.
By Dmitriy on May 8, 2009
“Robohelp. Видимо пришла пора переходить на что-то более свежее”
Переходите на DocBook.
By Sans on May 8, 2009
Заголовок “Смерть бинарным форматам” я бы поменял , а то слишком много всего охватывает.
Пpедставил себе jpg формат или backup или базу данных в каком-нить XML формате и стало плохо.
Надо все таки формулировку делать более точную, а то получается похоже на заголовки и бульварного чтива, да не обидется на меня автор.
By Сергей Корнилов on May 8, 2009
Sans,
согласен
Во мне, судя по всему, умирает нереализовавшийся журналист из желтой прессы.
By Sans on May 8, 2009
ха-ха
ну вот обидел художника 
пеши исчё
By df on May 12, 2009
> Robohelp хранится в каком-то двоичном формате, заставляя SVN вздрагивать при каждом коммите.
Так может svn сменить, раз он такой дрожащий?
К двоичному формату нужно прилагать утилиту конверсии в тектовый человеко-читаемый и обратно.
Тогда хранить можно текстовый как исходник, а работать с двоичным.
By Сергей Корнилов on May 12, 2009
@df,
буду рад увидеть конвертер JPEG в текст и обратно.
By Sans on May 12, 2009
О какой сумме собственно идёт речь, за такой конвертер ?
By flashnik on May 15, 2009
@df
>Так может svn сменить, раз он такой дрожащий?
Так произвольный бинарный формат никто ПРАВИЛЬНО не смержит.
>К двоичному формату нужно прилагать утилиту конверсии в тектовый человеко-читаемый и обратно.
Тогда хранить можно текстовый как исходник, а работать с двоичным.
Двумя руками за!