Re: Использование метаданных в программах на языке C++
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 01.09.05 14:30
Оценка: 1 (1) +4
Здравствуйте, Владислав Юдин, Вы писали:

ВЮ>Статья:

ВЮ>Использование метаданных в программах на языке C++
Автор(ы): Владислав Юдин
Дата: 22.05.2005
Цель данной статьи — показать, что метаданные это мощный механизм, требующий выделения в отдельный компонент, который хотелось бы видеть в стандартной библиотеке С++.


Сейчас прочитал статью два раза. Первый раз -- бегло, по диагонали. Ничего не понял. Второй раз внимательнее, начал что-то понимать, но к средине статьи опять понимание куда-то исчезло. Посему решил высказать свое первое впечатление.

Сама статья, имхо, очень тяжело читается. В основном, это сплошной навороченный шаблонный код, местами разбавленный односложными фразами, слабо проясняющими назначение кода и его смысл. Имхо, это больше похоже на результат прохода doxygen-а по самописной библиотеке, чем на попытку объяснить полезность метаинформации на шаблонах C++.

ВЮ>Аннотация:

ВЮ>Цель данной статьи — показать, что метаданные это мощный механизм, требующий выделения в отдельный компонент, который хотелось бы видеть в стандартной библиотеке С++.

Имхо, удалось показать, что метаданные на шаблонах это слишком мощный (я бы даже сказал overkill) механизм. Что-то на нем очень круто как-то делается. Только вот что делается, почему это делается именно так, и стоило ли это делать именно так -- для меня остается загадкой. Вот серьезно, я не понял, почему на примере сериализации структур делается вывод о полезности метаинформации. Лично у меня приведенный код не вызывает желания им пользоваться, даже в виде вот такого макросного описания:
META(SPoint, 2)
  ATTR_TYPES AVersion ATTR_VALUES 3 ATTR_END
  META_ENTRY(0)
    ATTR_TYPES AName, AXMLAttribute ATTR_VALUES "x", true ATTR_END
    META_ENTRY_INFO(int, x)
  META_ENTRY(1)
    ATTR_TYPES AName ATTR_VALUES "y" ATTR_END
    META_ENTRY_INFO(int, y)
META_END


Поэтому, если задачей было показать необходимость подобного механизма в стандартной библиотеке C++, то, имхо, эта задача достигнута не была. Чесно говоря я вообще не понял, что за компонент должен быть в стандарной библиотеке и что этот компонент должен делать.

... << RSDN@Home 1.1.4 stable rev. 510>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.