Позволяют ли выразительные возможности Nemerle сделать сериализацию a-la .NET
(т.е. помечаем поля атрибутами и т.д.), но чтобы код класса, выполняющего
сериализацию/десериализацию создавался на этапе компиляции?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Nemerle: Compile time serializer generation - возможно?
Здравствуйте, EvilChild, Вы писали:
EC>Позволяют ли выразительные возможности Nemerle сделать сериализацию a-la .NET EC>(т.е. помечаем поля атрибутами и т.д.), но чтобы код класса, выполняющего EC>сериализацию/десериализацию создавался на этапе компиляции?
Да, позволяют(хотя почему a-la .NET? Nemerle ведь язык для .NET). В случае Nemerle сами атрибуты могут являться макросами и генерировать такой код. Вот здесь как раз есть примитивная реализация такой сериализации.
Правда среди встроенных макросов такой сериализации нет, но есть реализация ряда смежных задач.
Например есть макросы Record, LexigraphicCompareTo(генерирует CompareTo используя информацию о полях), StructuralHash(аналогично для GetHashCode), ProxyPublicMembers.
Re: Nemerle: Compile time serializer generation - возможно?
Здравствуйте, EvilChild, Вы писали:
EC>Позволяют ли выразительные возможности Nemerle сделать сериализацию a-la .NET EC>(т.е. помечаем поля атрибутами и т.д.), но чтобы код класса, выполняющего EC>сериализацию/десериализацию создавался на этапе компиляции?
А в чем проблема?
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
AVK>А в чем проблема?
Проблемы нет.
Просто стандартная сериализация порой напрягает своей неторопливостью,
но как сделать это средствами C# я не знаю (может ты в курсе?), а по описанию Nemerle
показалось, что это естественная для него задача — вот и спрсоил тех, кто в теме.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, AndrewVK, Вы писали:
EC>>но как сделать это средствами C# я не знаю (может ты в курсе?)
AVK>Да вобщем тоже ничего секретного — кодогенерация динамических методов в рантайме.
Речь идёт о compile time.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, EvilChild, Вы писали:
AVK>>Да вобщем тоже ничего секретного — кодогенерация динамических методов в рантайме. EC>Речь идёт о compile time.
Да какая разница когда их сгенерировать? Главное что работать они будут с одной и тойже скоростью.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, WolfHound, Вы писали:
EC>>Речь идёт о compile time. WH>Да какая разница когда их сгенерировать? Главное что работать они будут с одной и тойже скоростью.
Хотелось бы избавиться от накладных расходов на создание serializer'а в run time.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, EvilChild, Вы писали:
EC>Хотелось бы избавиться от накладных расходов на создание serializer'а в run time.
1 раз создал и закешировал. В чем проблема то?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, EvilChild, Вы писали:
EC>>>Речь идёт о compile time. WH>>Да какая разница когда их сгенерировать? Главное что работать они будут с одной и тойже скоростью. EC>Хотелось бы избавиться от накладных расходов на создание serializer'а в run time.
сделай создание суррогатов как часть post-build step, а полученную динамическую сборку сохрани и потом подгрузи во время работы.
Re[4]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, WolfHound, Вы писали:
WH>Да какая разница когда их сгенерировать? Главное что работать они будут с одной и тойже скоростью.
1. Время на генерацию будет потрачено в компайлтайме.
2. Можно обойтись без лишней косвенности часто возникающей при генерации в рантайме.
3. Контролировать процесс кодогенерации в компайлтайме не допуская рантайм-ошибок.
4. Получить более простой и читабельный код. Все же макросы куда более выскоуровневое средство чем генерация кода и темболее эмит.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, EvilChild, Вы писали:
AVK>>Да вобщем тоже ничего секретного — кодогенерация динамических методов в рантайме. EC>Речь идёт о compile time.
Здравствуйте, vdimas, Вы писали:
EC>>Хотелось бы избавиться от накладных расходов на создание serializer'а в run time.
V>сделай создание суррогатов как часть post-build step, а полученную динамическую сборку сохрани и потом подгрузи во время работы.
Можно подробнее о суррогатах? — мне незнаком такой термин в данном контексте.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, AndrewVK, Вы писали:
AVK>Тогда примерно так, как работает утилитка sgen.
Про неё знаю, вопрос в том как получить то, что она делает на этапе компиляции,
чтобы этот код стал частью сборки, для классов которой, это всё генерится.
Насколько я понимаю средствами C# это сделать нереально.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, WolfHound, Вы писали:
EC>>Хотелось бы избавиться от накладных расходов на создание serializer'а в run time. WH>1 раз создал и закешировал. В чем проблема то?
Ты всё верно отквотил, но так и не понял — 1 раз создал это накладные расходы в run time.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, EvilChild, Вы писали:
AVK>>Тогда примерно так, как работает утилитка sgen. EC>Про неё знаю, вопрос в том как получить то, что она делает на этапе компиляции, EC>чтобы этот код стал частью сборки, для классов которой, это всё генерится.
ТОгда если только Phoenix, но я его еще внимательно не смотрел и как это будет выглядеть в реале представляю плохо.
EC>Насколько я понимаю средствами C# это сделать нереально.
Только C# нет, не реально. Иначе зачем был бы нужен Nemerle?
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
Здравствуйте, EvilChild, Вы писали:
EC>Ты всё верно отквотил, но так и не понял — 1 раз создал это накладные расходы в run time.
Фигня это, а не затраты... особенно если сериализовать нужно много... а если мало то тогда чем стандартная сериализация не устраивает?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Nemerle: Compile time serializer generation - возможн
Здравствуйте, AndrewVK, Вы писали:
AVK>Тогда примерно так, как работает утилитка sgen.
Хороший пример. Открой ее в Рефлекторе и погляди... это не хилый объем рукопашного кода. И это только для одной задачи. Плюс эту утилиту нужно как-то подуключить в процесс компиляйии...
В итоге получаем нехилый геморой для решения казалось бы примитивной задачи.
По-моему, макросы здесь были бы куда более удобным решением. И код бы был короче, и интеграция удобнее.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.