Nemerle: Compile time serializer generation - возможно?
От: EvilChild Ниоткуда  
Дата: 16.02.06 19:20
Оценка:
Позволяют ли выразительные возможности Nemerle сделать сериализацию a-la .NET
(т.е. помечаем поля атрибутами и т.д.), но чтобы код класса, выполняющего
сериализацию/десериализацию создавался на этапе компиляции?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Nemerle: Compile time serializer generation - возможно?
От: Vermicious Knid  
Дата: 16.02.06 19:57
Оценка: 7 (2) +2
Здравствуйте, 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 - возможно?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 19:59
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Позволяют ли выразительные возможности Nemerle сделать сериализацию a-la .NET

EC>(т.е. помечаем поля атрибутами и т.д.), но чтобы код класса, выполняющего
EC>сериализацию/десериализацию создавался на этапе компиляции?

А в чем проблема?
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[2]: Nemerle: Compile time serializer generation - возможн
От: EvilChild Ниоткуда  
Дата: 16.02.06 20:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>А в чем проблема?


Проблемы нет.
Просто стандартная сериализация порой напрягает своей неторопливостью,
но как сделать это средствами C# я не знаю (может ты в курсе?), а по описанию Nemerle
показалось, что это естественная для него задача — вот и спрсоил тех, кто в теме.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Nemerle: Compile time serializer generation - возможн
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.02.06 20:20
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Проблемы нет.

EC>Просто стандартная сериализация порой напрягает своей неторопливостью,

Форматтеры имеются ввиду?

EC>но как сделать это средствами C# я не знаю (может ты в курсе?)


Да вобщем тоже ничего секретного — кодогенерация динамических методов в рантайме.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[4]: Nemerle: Compile time serializer generation - возможн
От: EvilChild Ниоткуда  
Дата: 16.02.06 20:26
Оценка:
Здравствуйте, AndrewVK, Вы писали:

EC>>но как сделать это средствами C# я не знаю (может ты в курсе?)


AVK>Да вобщем тоже ничего секретного — кодогенерация динамических методов в рантайме.

Речь идёт о compile time.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Nemerle: Compile time serializer generation - возможн
От: WolfHound  
Дата: 16.02.06 20:49
Оценка: +1
Здравствуйте, EvilChild, Вы писали:

AVK>>Да вобщем тоже ничего секретного — кодогенерация динамических методов в рантайме.

EC>Речь идёт о compile time.
Да какая разница когда их сгенерировать? Главное что работать они будут с одной и тойже скоростью.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Nemerle: Compile time serializer generation - возможн
От: EvilChild Ниоткуда  
Дата: 16.02.06 21:00
Оценка:
Здравствуйте, WolfHound, Вы писали:

EC>>Речь идёт о compile time.

WH>Да какая разница когда их сгенерировать? Главное что работать они будут с одной и тойже скоростью.
Хотелось бы избавиться от накладных расходов на создание serializer'а в run time.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Nemerle: Compile time serializer generation - возможн
От: WolfHound  
Дата: 16.02.06 21:13
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Хотелось бы избавиться от накладных расходов на создание serializer'а в run time.

1 раз создал и закешировал. В чем проблема то?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: Nemerle: Compile time serializer generation - возможн
От: vdimas Россия  
Дата: 16.02.06 21:50
Оценка: 2 (1)
Здравствуйте, EvilChild, Вы писали:

EC>>>Речь идёт о compile time.

WH>>Да какая разница когда их сгенерировать? Главное что работать они будут с одной и тойже скоростью.
EC>Хотелось бы избавиться от накладных расходов на создание serializer'а в run time.

сделай создание суррогатов как часть post-build step, а полученную динамическую сборку сохрани и потом подгрузи во время работы.
Re[4]: Nemerle: Compile time serializer generation - возможн
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 03:10
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Да вобщем тоже ничего секретного — кодогенерация динамических методов в рантайме.


на этапе компиляции?


Смотри выделенное жирным и цитату.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Nemerle: Compile time serializer generation - возможн
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 03:10
Оценка: 1 (1) +1
Здравствуйте, WolfHound, Вы писали:

WH>Да какая разница когда их сгенерировать? Главное что работать они будут с одной и тойже скоростью.


1. Время на генерацию будет потрачено в компайлтайме.
2. Можно обойтись без лишней косвенности часто возникающей при генерации в рантайме.
3. Контролировать процесс кодогенерации в компайлтайме не допуская рантайм-ошибок.
4. Получить более простой и читабельный код. Все же макросы куда более выскоуровневое средство чем генерация кода и темболее эмит.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Nemerle: Compile time serializer generation - возможн
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.02.06 11:07
Оценка:
Здравствуйте, EvilChild, Вы писали:

AVK>>Да вобщем тоже ничего секретного — кодогенерация динамических методов в рантайме.

EC>Речь идёт о compile time.

Тогда примерно так, как работает утилитка sgen.
... << RSDN@Home 1.2.0 alpha rev. 642>>
AVK Blog
Re[8]: Nemerle: Compile time serializer generation - возможн
От: EvilChild Ниоткуда  
Дата: 17.02.06 18:15
Оценка:
Здравствуйте, 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 - возможн
От: EvilChild Ниоткуда  
Дата: 17.02.06 18:15
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Тогда примерно так, как работает утилитка sgen.

Про неё знаю, вопрос в том как получить то, что она делает на этапе компиляции,
чтобы этот код стал частью сборки, для классов которой, это всё генерится.
Насколько я понимаю средствами C# это сделать нереально.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Nemerle: Compile time serializer generation - возможн
От: EvilChild Ниоткуда  
Дата: 17.02.06 18:20
Оценка:
Здравствуйте, 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 - возможн
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.02.06 20:08
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Ты всё верно отквотил, но так и не понял — 1 раз создал это накладные расходы в run time.


При желании сборку можно и на диск скинуть.
... << RSDN@Home 1.2.0 alpha rev. 642 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[7]: Nemerle: Compile time serializer generation - возможн
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 17.02.06 20:08
Оценка:
Здравствуйте, 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>>
AVK Blog
Re[9]: Nemerle: Compile time serializer generation - возможн
От: WolfHound  
Дата: 17.02.06 20:35
Оценка:
Здравствуйте, EvilChild, Вы писали:

EC>Ты всё верно отквотил, но так и не понял — 1 раз создал это накладные расходы в run time.

Фигня это, а не затраты... особенно если сериализовать нужно много... а если мало то тогда чем стандартная сериализация не устраивает?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Nemerle: Compile time serializer generation - возможн
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.02.06 21:19
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Тогда примерно так, как работает утилитка sgen.


Хороший пример. Открой ее в Рефлекторе и погляди... это не хилый объем рукопашного кода. И это только для одной задачи. Плюс эту утилиту нужно как-то подуключить в процесс компиляйии...

В итоге получаем нехилый геморой для решения казалось бы примитивной задачи.

По-моему, макросы здесь были бы куда более удобным решением. И код бы был короче, и интеграция удобнее.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.