Никак не могу въехать в дурацкий термин "серализация" (пардон, нечаянно пропустил, но исправлять уже не стал — это ясное указание моего подсознания на эту проблему )
Почему нерпеменно новый термин? И так же ежу понятно, что при записи на внешнее устройство байты пишутся. В чем фишка-то?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
LaptevVV wrote:
> Никак не могу въехать в дурацкий термин "серализация" (пардон, нечаянно пропустил, но исправлять уже не стал — это ясное указание моего подсознания на эту проблему ) > Почему нерпеменно новый термин? И так же ежу понятно, что при записи на внешнее устройство байты пишутся. В чем фишка-то?
Здравствуйте, MaximE, Вы писали:
ME>LaptevVV wrote:
>> Никак не могу въехать в дурацкий термин "серализация" (пардон, нечаянно пропустил, но исправлять уже не стал — это ясное указание моего подсознания на эту проблему ) >> Почему нерпеменно новый термин? И так же ежу понятно, что при записи на внешнее устройство байты пишутся. В чем фишка-то?
ME>http://en.wikipedia.org/wiki/Serialization
Читаем:
Serialization is the process of taking an in memory data structure of an object and encoding it into a serial (hence the term) sequence of bytes.
А ДО ооп было не так же разве? Но никто не называл процесс вывода сериализацией.
Если я пишу:
struct A { int a; float b: } a;
fwrite (&a, 1, sizeof(a), file);
это не сериализация разве? Но никто ж ее так не называет?
Или дело в том, что имеются ввиду контейнеры, которые часто вместо значений хранят указатели. Тогда для вывода надо сначала слазить за значением, а потом уж выводить. А при вводе — наоборот: сначала память выделить, а потом уж читать?
Ы?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
LVV>struct A { int a; float b: } a;
LVV>fwrite (&a, 1, sizeof(a), file);
LVV>
LVV>это не сериализация разве? Но никто ж ее так не называет?
Нет, вот если бы твоя структура определяла методы (не буду говорить для чего),
а потом объявлялись её потомки, которые эти методы наследовали и переопределяли бы.
Вся фишка в том что используя сериализацию своих данных в наследниках от чужих, уже
сделаных классов, гарантируется правильные загрузка и сохранение как данных предка,
о которых вы ничего не знаете, так и ваших данных, причем в один поток,
и с неизвестным вам форматом записи.
Здравствуйте, bugmonster, Вы писали:
B>Здравствуйте, LaptevVV, Вы писали:
LVV>>
LVV>>struct A { int a; float b: } a;
LVV>>fwrite (&a, 1, sizeof(a), file);
LVV>>
LVV>>это не сериализация разве? Но никто ж ее так не называет?
B>Нет, вот если бы твоя структура определяла методы (не буду говорить для чего), B>а потом объявлялись её потомки, которые эти методы наследовали и переопределяли бы. B>Вся фишка в том что используя сериализацию своих данных в наследниках от чужих, уже B>сделаных классов, гарантируется правильные загрузка и сохранение как данных предка, B>о которых вы ничего не знаете, так и ваших данных, причем в один поток, B> и с неизвестным вам форматом записи.
Ага, в предке должны быть определены методы вроде save и load. Эти методы я могу явно вызывать в методах-наследниках, чтобы гарантированно правильно записать часть предка.
Ы?
В этом случае мы говорим о сериализации, поскольку наследник о записи предка на диск нифига не знает.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
<> LVV>В этом случае мы говорим о сериализации, поскольку наследник о записи предка на диск нифига не знает.
По большому счёту, не имеет значения, работаем мы с ООП или нет.
Некоторая сущность предметной области имеет 2 представления: в памяти (модель) и в хранилище (образ).
Свёртывание/развёртывание модели в образ и обратно — и есть сериализация.
Хранилище — это преимущественно последовательная (serial) и компактная форма, со своим адресным пространством, которое может быть подобно адресному пространству памяти (смещения от начала файла), а может и не быть (файл на некотором языке разметки; ассоциативные хранилища; и т.п.)
Модель, помимо сохраняемых (persistent) свойств и связей, имеет состояние — свойства и связи времени исполнения. Копировать их в хранилище — не нужно, а порой и нельзя (чтобы образы одной модели были одинаковы).
Полиморфизм при сериализации — проявляется в двух моментах.
Движок хранилища оперирует некоторыми примитивами (например, пишет/читает серии байтов, или базовый набор типов).
Во-первых, информация модели должна быть декомпозирована до обратимой последовательности примитивов, причём для разных моделей эта последовательность может различаться: например, варьируется число компонентов модели; некоторые свойства взаимозависимы; и т.п.
Во-вторых, движок предметной области может поддерживать разнообразие не только количества и связей, но и типов компонентов.
Образ должен содержать дополнительную информацию, позволяющую движку предметной области однозначно восстанавливать количество, связи и типы компонентов модели.
Вот. Заметьте: наговорил кучу слов, но ни разу не упомянул про объекты
Здравствуйте, Кодт, Вы писали:
LVV>>В этом случае мы говорим о сериализации, поскольку наследник о записи предка на диск нифига не знает.
К>По большому счёту, не имеет значения, работаем мы с ООП или нет.
[] К>Вот. Заметьте: наговорил кучу слов, но ни разу не упомянул про объекты
А зачем тогда такой странный термин придумали? всегда делали совершенно то же самое, но при этом не говорили, что это сериализация. И только с появлением ООП возник этот термин.
Ы?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>>>В этом случае мы говорим о сериализации, поскольку наследник о записи предка на диск нифига не знает.
К>>По большому счёту, не имеет значения, работаем мы с ООП или нет. LVV>[] К>>Вот. Заметьте: наговорил кучу слов, но ни разу не упомянул про объекты LVV>А зачем тогда такой странный термин придумали? всегда делали совершенно то же самое, но при этом не говорили, что это сериализация. И только с появлением ООП возник этот термин.
А слово "маршалинг" придумали вообще в DCOM. Хотя и раньше вовсю маршалировали...
Скорее всего, именно в ООП с его инкапсуляцией и полиморфизмом тонкие места сериализации вылезли в полный рост, и разработчикам пришлось взглянуть на эту задачу более системно.