Здравствуйте, WolfHound, Вы писали:
WH>Вот оветь на такой вопрос? Если С++ почти мертв как ты утверждаешь то почему МС вкладывает в развитие С++ компилятора кучу денег? Я не могу оценить изменения фреймворка но могу оценить изменения в С++ компиляторе и у меня такой чувство что вложения в него измеряются мегабаксами как минимум.
Здравствуйте, Nose, Вы писали:
AVK>>Кому как. Написателям библиотек например очень часто приходиться N>Разработчик этой библиотеки отлично прочитает такой код. Достатоно привыкнуть,
Привыкнуть можно к примеру каждый день добираться до работы пешком, проходя километров десять. Однако почему то подавляющее большинство пользуется транспортом.
N>он не так страшен, хотя очень не похож на классический код c++
VD>
VD>О том и нечь что нет! Ни в коем случе не устривает. Это мазохизм.
Что именно тебя тут пугает? Угловые скобки не нравятся, предпочитаешь квадратные?
VD>Да и этот код использует ртти (как я понимаю).
Неправильно понимаешь. Вся генерация кода делается в компил-тайме.
VD>Вот такой стиль намного лучше:
VD>
VD>[Serialize]
VD>class TestA
VD>{
VD> public TestA(CWnd wnd) {}
VD> public string m_Server;
VD> public string m_ProcessName;
VD>};
VD>[Serialize]
VD>class TestC : TestA
VD>{
VD> public TestC(CWnd wnd) : bsae(wnd)
VD>};
VD>...
VD> TestC с = new TestC(xxx);
VD> ... // Что-то тварим с объектом...
VD> // Это весь код необходимый для сериализации!
VD> MemoryStream ms = new MemoryStream(1024);
VD> BinaryFormatter bf = new BinaryFormatter();
VD> bf.Serialize(ms, ds);
VD>
Угу, только у класса TestC есть десяток членов, которые сериализовать не надо. По этому атрибут [Serializable] придется для каждого члена указывать, во вторых — для каждого члена, вовлеченного в другие операции (у меня это — DoDataExchange), придется другие атрибуты добавлять. Получится еще страшнее, чем у меня.
VD>Собственно главное код сериализации который в самом конце. Вот это красиво. К сожелению не так быстро как хотелось бы, но красиво.
Собственно, код сериализации сидит в библиотеке — в обоих случаях.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, VladD2, Вы писали:
_>>REGISTER_CLASS("CategoryInfo", CategoryInfo) _>> REGISTER_MEMBER("CategoryID", CategoryID) VD>А что теперь если содержимое запроса изменится?
В исходном примере та же проблема — структура данных отдельно, select отдельно, и имена дублируются. Мы в таких случаях передаем в Command вместо списка полей специальную пиндюшку, которая внутри превращается в список, но с COUNT и прочими вычисляемыми полями это, конечно, не поможет.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Да фиг с ней, с сериализацией. Вопрос не в сериализации самой по себе. Предположим, что речь идёт не о сериализации,
Нет, ну почему же? Это хороший пример демонстрирующий приемущества наличия полноценной информации.
ГВ> а о чём-то ещё, что так же, как и сериализация, строится по прнципу вызова специфического кода для каждого поля объекта.
Еще раз повторяю. Отойди от привычный тебе концепций. В дотнете богатство информации о типах позволяет во многих случаях писать универсальный код. В том числе и для сериализации.
ГВ> Ну, к примеру, визуализация.
Визуализация слишком абстрактный термин.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Это означает только то, что в .Net предусмотрен базовый механизм для сериализации. И что? А если речь пойдёт не о ней?
Ошибаешся. В дотнете предусмотрена полноценная информация о типах позволяющая создать универсальный код.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Ну нет, почему же? Если сопоставление метаинформации реализуется для его дальнейшего использования, то чтение будет удобным. По-моему, это очевидно.
Тогда попробуй предствить, что вся метаинформация делается именно для того, чтобы ее читали.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Что-то ты странное говоришь. Что ты подразумеваешь под словом "дыра"?
Думаю, ты и сам понимаешь. Дыры — это отсуствие в языке/рантайме простых конструкций решающих стоящие перед тобой задачи. Например, когда стоит задача вызывать метод у абстрактного объекта... или когда стоит задача сделать что-то на сосновании описания типа.
Все примеры приведенные в том посте делаются на Шарпе элегантно и просто. При этом Шарп ведь не обладает такими мощными средствами самомодификации. Мысль ясна?
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Nose, Вы писали:
N>Я и не спорю. Есть такой недостаток у обобщенного кода. Но принимая во внимание его полезность (хотя для меня сейчас — она теоретическая ), это не фатальный недостаток. А читать его все-таки можно привыкнуть.
Можно. Но очень не хочется. А такие примитивы как делегаты хочется иметь на уровне языка. Все же не ясно почему я должен часами смотреть на компиляцию базовых вщей.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
AVK>Шарп по идеологии весьма серьезно отличается от плюсов, максимум что можно использовать это похожий синтаксис. С шарпом я таких наблюдений не проводил, но зачастую для получения качественного кода на джаве новичков приходится учить меньше, нежели зубров, писавших на плюсах и дельфи.
Это уже снобизм и шовинизм. Мне почему-то знание С++ не мешает писать на шарпе. Я еще и С знаю. И на нем много писал. Этак мы дойдем, что все кто знают старые зыки на новые уже могзги переглючить не могут.
Принцыпы программирования одни и те же. Есть различия которые нжно осозновать и учитывать. Только и всего.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>А про невозможность работы шаблонов с приметивами — это они сильно дурака сваляли. Если МС не сваляет так же, то дотнет будет делать Яву по скорости из любого положения.
У сана вобще очень странная политика, больше похожая на политику комитета по плюсам. Они с радостью стандартизируют библиотеки, причем выделяя на доведение этих библиотек своих спецов, но вот когда дело заходит об изменении языка и jvm то они упираются рогом. Если бы не МС то они наверное так бы никаких изменений в jvm и язык вносить не стали бы, хотя кое что напрашивается еще с древних версий. Возможно что виновато в этом то что сану приходится писать 3 jvm, а не одну, как МС.
Здравствуйте, VladD2, Вы писали:
AVK>>Боксить тока надо ручками. Что же касается перфоманса, то в отличие от С++ и джава и дотнет должны производить кастинг в рантайме даже для совместимых типов, поскольку неясно что тебе в итоге могут подсунуть, поэтому шаблоны избавляют от определенной части этого кастинга и тем самым увеличивают эффективность полиморфных алгоритмов.
VD>Снижают ты хотел сказать. Полиморфизм и без шаблонов неплохо работал. Грамотная реализация шаблонов как раз могла бы избавить от лишних кастов и боксингов.
Ну я именно это и хотел сказать. Т.е. то что путем замены полиморфных алгоритмов шаблонами можно повысить эффективность за счет уменьшения количества кастингов.
Здравствуйте, <Аноним>, Вы писали:
А>Так что для сохранения настроек такая технология подходит очень хорошо, а для сохранения реальных данных (по крайней мере в моем случае) как то не катит
А для сохранения реальных данных предназначена не сериализация, а СУБД.
Здравствуйте, Геннадий Васильев, Вы писали:
AVK>>Атрибуты без rtti невозможны в принципе ГВ>Если такие же, как в .Net, то да. Но они не всегда такие и нужны. А реализовать сопоставление метаинформации экземпляру можно и без rtti.
При объектном подходе информацию как-то привычнее представлять классами. Метаинформация ничем не волшебнее.