Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Результаты опроса: Бинарные файлы (объекты сериализации) устарели?
1) Только текст 2 18.18%
2) Только бинарка 0 0%
42 (пояснить в посте) 9 81.82%
Голосовавшие: 11. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы
Старый 30.06.2012, 01:38   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Бинарные файлы

Определимся с терминологией. Под бинарным файлом здесь я понимаю такой способ организации (накладывающей особенности на операции чтения/записи) хранения информации в файле, при которой данные представляют собой, по сути дамп памяти. Иными словами, переменная
int x=123456;
при записи в бинарный файл, занимает ровно 4 байта (т.е. sizeof(int) ) и при открытии целевого файла блокнотом не читается в "человеческом" восприятии.
При записи той же переменной в текстовый (не бинарный) файл, переменная займёт 6 байт (при ASCII-кодировании), каждый из которых будет кодировать одну цифру.
Для Blitz basic: бинарный режим - функции типа ReadInt/WriteInt, текстовый - WriteLine.

Плюсы бинарного режима: возможность сэкономить на памяти и стандартизировать требования к её размерам; возможность сохранять произвольные разнородные данные простой запись куска памяти.
Минусы: возможность потратить память (например, если сохраняемые числа в диапазоне [0..999] для int) и полностью утратить возможность к стандартизации (разные архитектуры и платформы); невозможность сохранять данные простой записью куска памяти (разный порядок байт внутри переменной в зависимости от архитектуры, выравнивания и полный хаос со структурами, беготня, спотыкания и ещё большая непереносимость с директивами #pragma pack; адресация членов объекта через указатели, приводящая к необходимости написания отдельных методов его сохранения).

Получается, что бинарные файлы - это хак. Его переносимость весьма условна.
В то же время, используя текстовый формат, мы по сути, перекладываем обязанности по загрузке\выгрузке (трансляции из файла\в файл ) на функции типа atoi\itoa, работающие на более высоком уровне абстракции: медленнее, но зато без оглядки на "аппаратные" особенности.

Речь даже не только о файлах, но о любой сериализации (ту же структурку по сети кинуть - как кодировать?).

Опрос открытый

Спасибо всем кто осилил излияния и дочитал до конца.
Просьба сильно не пинать, если где-то заблуждаюсь
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 01:53   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Бинарные файлы

оффлайн данные для игры необходимо хранить в бинарном виде, максимально близком к его представлению в памяти. иное не нужно.
данные, нужные для редактирования в процессе разработке лучше иметь в более универсальном читабельном виде - по крайней мере опыт использования редактируемых данных в бинарном виде у меня негативный.
по сети слать хз, я работу с сетью писал для проекта, в котором протокол был 100% стандартизирован, а скорость критична, так что были бинарные структуры.
(Offline)
 
Ответить с цитированием
Эти 6 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
cahekp (01.07.2012), Dzirt (30.06.2012), impersonalis (30.06.2012), SBJoker (30.06.2012), shybovycha (30.06.2012), St_AnGer (30.06.2012)
Старый 30.06.2012, 01:54   #3
jimon
 
Сообщений: n/a
Ответ: Бинарные файлы

в практическом понимании : бинарный файл это любой файл для редактирования содержимого которого нужно использовать hex (или специфический) редактор

в теоретическом понимании : любой файл = бинарный файл, те это синонимы, но если внутри бинарных файлов данные представлены в текстовой кодировке (ASCII, UTF-8, UTF-16) и тд, то данные называют текстовыми данными, но файл по прежнему бинарный (ведь в utf есть нехитрый такой хак чтобы определить порядок битов в байте, собсно отсюда текст это данные, но никак не файл)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (30.06.2012)
Старый 30.06.2012, 01:55   #4
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Бинарные файлы

Вообще то при чтении можно задавать порядок байт в слове, тем самым обойти апаратные отличия в кодировании чисел.

Увлечение переносимостью и читабельностью файлов привело к созданию монстров типа XML, на парсинг которых уходит огромное количество процессорного времени.

Обоим типа записи быть, это можно заметить по тому что многие программы имеют как бинарный так и текстовый тип файла. Например DWG и DXF.

А вообще тип записи выбирается исходя из конкретных задач. Например конфигурационные файлы, для которых скорее всего небудет создан редактор, лучше делать текстовыми для правки их любым текстовым процессором. А например файлы сохранения игры, лучше реализуются бинарным способом.
__________________
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
cahekp (01.07.2012), impersonalis (30.06.2012), Mr_F_ (30.06.2012), Taugeshtu (30.06.2012)
Старый 30.06.2012, 01:58   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Сообщение от jimon Посмотреть сообщение
в практическом понимании : бинарный файл это любой файл для редактирования содержимого которого нужно использовать hex (или специфический) редактор

в теоретическом понимании : любой файл = бинарный файл, те это синонимы, но если внутри бинарных файлов данные представлены в текстовой кодировке (ASCII, UTF-8, UTF-16) и тд, то данные называют текстовыми данными, но файл по прежнему бинарный (ведь в utf есть нехитрый такой хак чтобы определить порядок битов в байте, собсно отсюда текст это данные, но никак не файл)
вот специально для таких хитрых я и написал длинное вступление. Спасибо, конечно, за философское уточнение, ещё можно рассказать, что все данные это 0 и 1, а потом спустится ещё ниже - к непрерывным аналоговым сигналам... по теме же - ни слова
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 02:01   #6
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Бинарные файлы

Скажем так. Всё зависит от задачи.

Если данные летят по сети и их реально много, то однозначно бинарные.

Для хранения на диске примерно так:
Если данные достаточно однотипны (например тайловая карта) то тут быстрее и удобнее писать её бинарно.
Ежели данные разнообразные - неравномерные, то проще текстом.
Упакованные данные конечно в бинарном виде.
Данные в которых только текст как ни странно в текстовом виде

Хотя текст и есть бинарные данные, но я твою мысль понял
Кстати, а если в текстовом виде байты чрез запятую написать это текстовый формат или нет?

Сугубо личное мнение.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (30.06.2012)
Старый 30.06.2012, 02:02   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Сообщение от SBJoker Посмотреть сообщение
Вообще то при чтении можно задавать порядок байт в слове, тем самым обойти апаратные отличия в кодировании чисел.
Пожалуйста, подробнее (цпп).
Опять-таки проблема со структурами остаётся. Можно конечно, сначала всё разбирать до базовых типов, а сохранять уже отдельно их...

Сообщение от Randomize Посмотреть сообщение
Если данные летят по сети и их реально много то однозначно бинарные.
согласен полностью, но с сожалением.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 02:08   #8
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Бинарные файлы

Сообщение от impersonalis Посмотреть сообщение
согласен полностью, но с сожалением.
Почему? Текст пожалуй нужен только для наглядности.
Текст это тоже самое только человекочитаемо.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 02:14   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Сообщение от Randomize Посмотреть сообщение
Почему? Текст пожалуй нужен только для наглядности.
Текст это тоже самое только человекочитаемо.
Текст - лишён ряда недостатков, которых не лишены другие типы данных (для jimon: да, я намеренно упрощаю формулировку, чтобы её можно было прочитать в течение дня; да - противопоставление некорректно). Т.е. на одной машине - big-endian, на другой - little-endian, но текстовое представление этого числа - одинаковое (цифры слева-направо по убыванию степеней). Т.е. текст - своеобразный интерфейс.
Организация структур - усмотрение компилятора, директивы управления этим процессом делают код менее портабельным и модульным.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 02:26   #10
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Бинарные файлы

Текст - лишён ряда недостатков, которых не лишены другие типы данных (для jimon: да, я намеренно упрощаю формулировку, чтобы её можно было прочитать в течение дня; да - противопоставление некорректно). Т.е. на одной машине - big-endian, на другой - little-endian, но текстовое представление этого числа - одинаковое (цифры слева-направо по убыванию степеней). Т.е. текст - своеобразный интерфейс.
что-то мне подсказывает, что конвертнуть big endian в little endian быстрее, чем парсить человекочитаемый текст.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
impersonalis (30.06.2012), SBJoker (30.06.2012)
Старый 30.06.2012, 02:38   #11
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Сообщение от Mr_F_ Посмотреть сообщение
что-то мне подсказывает, что конвертнуть big endian в little endian быстрее, чем парсить человекочитаемый текст.
безусловно (я об этом писал выше). Осталось только продумать соответствующую отметку в файле. И не забыть её при загрузке учесть. А ещё и код написать, который сам будет определять специфику архитектуры, на которой он выполняется (думаю, это реально, но как, лично я - не знаю).
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 02:39   #12
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Бинарные файлы

зависит от задачи

почти всегда хватает бинарных. конфиги там всякие - удел текстовых.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
impersonalis (30.06.2012)
Старый 30.06.2012, 02:40   #13
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Бинарные файлы

Сообщение от HolyDel Посмотреть сообщение
зависит от задачи

почти всегда хватает бинарных. конфиги там всякие - удел текстовых.
и как обойти проблемы совместимости?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 02:42   #14
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Бинарные файлы

Бывает важно экономить.
Бывает важна человекочитаемость/скорость разработки.
бывает подо что-то уже есть готовый велосипед.
Так что "только то" либо "только это" ответить нельзя.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 02:47   #15
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Бинарные файлы

а где вообще конкретно такие проблемы с совместимостью встречались?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (30.06.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:42.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com