Re[9]: Требуются примеры макросов уровня выражения создающих
От: WolfHound  
Дата: 07.01.11 13:08
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Это какие-то фантазии имеющие мало общего с реальностью и мало понятные. Что такое "type of count int" я так и не понял. Какой-то ОКамл.

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

VD>В подобных случаях все будет очень просто. Нужно просто применять не один, а два макроса. Один синтаксический, другой обычный. Код будет примерно таким:

Блин. Ты сравни колличество кода.
А вот эту магию вообще никто не поймет.
  def typedExpr = typer.TypeExpr(expr);
  def ty = typedExpr.Type.Hint;

  if (ty.HasValue)

Что тут происходит? Императив какойто.
При том что мой вариант декларативный.

VD>Скажу больше. Это совершенно надуманный пример, так как для конструкции my_array(3) нет смысла вводить новый синтаксис, так что можно было бы спокойно обойтись обычным макросом.

Это вообще к делу не относится.
Все что изменится это то что вместо пользовательского правила отработает стандартное.

VD>Короче, пример надуманный. Так как типы в нем не порождаются, то и проблем он вызвать не может.

VD>Но даже на таком простом примере ты уже на фантазировал черти чего.
Это ты наговнокодил черт знает чего.
Весь твой императив никто никогда не поймет.
Если ты думаешь что мой вариант не ясен то это не так. Ziaw все понял.

VD>Это четко демонстрирует, что все разговоры о концепциях очень быстро разбиваются о реальность, если их не подкреплять скрупулезным (детальным) планом реализации.

Нет.
Это четко демонстрирует что прежде чем спорить нужно понять о чем вообще разговор.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: Требуются примеры макросов уровня выражения создающих
От: WolfHound  
Дата: 07.01.11 13:08
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Идея очень нравится. Только не очень понятно, как описать макру возвращающую тип который требуется создать. Конструктор анонимного типа или viewmodel в nrails. До создания этого типа полная типизация невозможна, создание типа до проведения частичной типизации тоже выглядит невозможным.

У меня есть несколько вариантов но надо еще подумать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: Требуются примеры макросов уровня выражения создающих
От: WolfHound  
Дата: 07.01.11 13:08
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>У меня тоже последнее время крутятся мысли вокруг фшарповских typeproviders.

typeproviders частный случай и тривиально реализуются через этот механизм.

Z>Например затем, чтобы прочитать актуальную версию изменившейся схемы или свежие данные. Но основная мысль понятна, IsModfiedSince ей в помощь.

Ну так этот IsModfiedSince и не даст перечитывать базу чаще чем нужно.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Требуются примеры макросов уровня выражения создающи
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.01.11 15:39
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, VladD2, Вы писали:


VD>>Таких поставщиков можно просто оформлять отдельными проектами. Перекомплил проект, получил обновление метаданных. В рамках проекта могут и более сложные макры работать которые могут отслеживать изменения в СУБД хоть по таймеру, хоть как. Ну, и при изменении тупо махать список типов.

WH>И какими же механизмами будут пользоваться эти самые "более сложные макры"?
WH>В какой момент они будут цепляться к СУБД?

Это уже их проблемы. По таймеру, например, можно проверять изменение БД.

WH>Как на это будт реагировать интелисенс внутри проекта?


Ему то что? Скажут перечитать проект, перечитает. Если сборка сигнализирует о своем изменении, интеллисенс обязан отреагировать.

WH>Я уж не говорю про то что вместо одной строчки появился целый проект на пустом месте.


Что-то я ни разу не видел, чтобы описание ORM занимало одну строчку.

WH>Ты бы хоть для разнообразия попытался понять о чем я говорю, а не начинал с ходу спорить со своим воображением.


Ты бы лучше для разнообразия сам бы разок этот самый ORM наладил. Тогда понял бы что говорить об одной строчке в таком вопросе смешно. Автоматический мапинг только в тестах прокатывает. Посмотри на то как мапинг выглядит в Nemerle on Rails. Там как раз отдельный проект и используется (если не ошибаюсь).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Требуются примеры макросов уровня выражения создающи
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.01.11 15:50
Оценка:
Здравствуйте, WolfHound, Вы писали:

VD>>Это какие-то фантазии имеющие мало общего с реальностью и мало понятные. Что такое "type of count int" я так и не понял. Какой-то ОКамл.

WH>Если не понял спроси, а не начинай спорить со своим воображением.
WH>Это хинты типизатору.
WH>Если не нравится синтакс его всегда можно переделать.

Ага. Фантазии на вольную тему с жутким синтаксисом.

VD>>В подобных случаях все будет очень просто. Нужно просто применять не один, а два макроса. Один синтаксический, другой обычный. Код будет примерно таким:

WH>Блин. Ты сравни колличество кода.

Дык не с чем сравнивать. Фантазии против реального кода.

WH>А вот эту магию вообще никто не поймет.

WH>
WH>  def typedExpr = typer.TypeExpr(expr);
WH>  def ty = typedExpr.Type.Hint;

WH>  if (ty.HasValue)
WH>

WH>Что тут происходит? Императив какойто.

Я дополнил ваши фантазии хоть чем-то реалистичным. Если вы уж на основе типов решили что-то делать, то не плохо бы ради разнобразия эти типы хотя бы проанализировать.

А то ваша задача и без макросов решатется на раз. А в макросах Н1 решается путем подстановки деволтного значения которому задается не связанный тип, что занимает где-то 5 знаков, а никак не макрос на пол экрана.

WH>При том что мой вариант декларативный.


Фантазии у тебя там написаны, а не варинт. Ничего общего с реальностью. Это не только не взлетит, но еще и не нужно никому.

VD>>Скажу больше. Это совершенно надуманный пример, так как для конструкции my_array(3) нет смысла вводить новый синтаксис, так что можно было бы спокойно обойтись обычным макросом.

WH>Это вообще к делу не относится.

Ну, да решаем задачу которую решать то не надо и получаем горы кода.

VD>>Короче, пример надуманный. Так как типы в нем не порождаются, то и проблем он вызвать не может.

VD>>Но даже на таком простом примере ты уже на фантазировал черти чего.
WH>Это ты наговнокодил черт знает чего.
WH>Весь твой императив никто никогда не поймет.

Ты похоже помещался на борьбе с императивом. Начинаешь видеть его там где его и нет вовсе. Там нет ни присвоений, ни вызовов не функциональных.

WH>Если ты думаешь что мой вариант не ясен то это не так. Ziaw все понял.


Что он мог понять? Ты сам то не понял что написал . Изобрел какой-то ОКамл без малейшей нужды.
На фиг компилятору твои подсказки? Да еще в таком ужасном виде? Он все типы и так выведет.

VD>>Это четко демонстрирует, что все разговоры о концепциях очень быстро разбиваются о реальность, если их не подкреплять скрупулезным (детальным) планом реализации.

WH>Нет.
WH>Это четко демонстрирует что прежде чем спорить нужно понять о чем вообще разговор.

Да понял я все. Ты спустись от фантазий к реалиям. И поймешь, что все сильно сложнее.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Требуются примеры макросов уровня выражения создающи
От: WolfHound  
Дата: 07.01.11 16:31
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Ага. Фантазии на вольную тему с жутким синтаксисом.

Тема вполне конкретная.
Типизированные макросы.
А синтаксис можно мень как угодно.
Я вообще не понимаю что ты к нему докапался в очередной раз.

VD>Дык не с чем сравнивать. Фантазии против реального кода.

N2 одни сплошные фантазии.

VD>Фантазии у тебя там написаны, а не варинт. Ничего общего с реальностью. Это не только не взлетит, но еще и не нужно никому.

Ты опять критикуешь то в чем даже не попытался разобраться.

VD>Что он мог понять? Ты сам то не понял что написал . Изобрел какой-то ОКамл без малейшей нужды.

VD>На фиг компилятору твои подсказки? Да еще в таком ужасном виде? Он все типы и так выведет.
Откуда он их выведет если для того чтобы их вывести нужно сгенерировать код который можно сгенерировать только на основе выведенных типов?

VD>Да понял я все. Ты спустись от фантазий к реалиям. И поймешь, что все сильно сложнее.

Все сложно по тому что нет строгой системы.
Мелкософты при создании .НЕТ пользовались твоими принципами и получили делегаты, войд и еще кучу всякого бреда на ровном месте.
Иногда нужно остановиться и подуцмать о том как сделать лучше, а не чутка добавить сахору к тому что уже есть.
Ибо если продолжить в томже духе то N2 будет отличатся от N1 примерно также шарп от жабы. А ведь можно сделать намного лучше.
Но для этого тебе надо перестать орать и подумать о том что предлагают.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[11]: Требуются примеры макросов уровня выражения создающи
От: WolfHound  
Дата: 07.01.11 16:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ему то что? Скажут перечитать проект, перечитает. Если сборка сигнализирует о своем изменении, интеллисенс обязан отреагировать.

Еще раз. Что ты будешь делать внутри этой сборки?
Сборки которые на нее ссылаются меня сейчас не волнуют.

WH>>Я уж не говорю про то что вместо одной строчки появился целый проект на пустом месте.

VD>Что-то я ни разу не видел, чтобы описание ORM занимало одну строчку.
Я не говорил про мапинг. Я говорил про чтение метаданных.
Это нужно делать в том же проекте где описан маппинг.
И чтение метаданных это одна строчка.
И таки интелисенс нужен в этом же проекте, а не в каком то другом.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: Требуются примеры макросов уровня выражения создающи
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.01.11 17:26
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Я не говорил про мапинг. Я говорил про чтение метаданных.

WH>Это нужно делать в том же проекте где описан маппинг.
WH>И чтение метаданных это одна строчка.

Мапинг как раз имеет смысл выделять в отдельный проект. При его сборке и читать метаданные. А уж в другом спокойно писать запросы и т.п. Так, собственно, сейчас и делается.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Требуются примеры макросов уровня выражения создающи
От: WolfHound  
Дата: 07.01.11 17:39
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Мапинг как раз имеет смысл выделять в отдельный проект. При его сборке и читать метаданные. А уж в другом спокойно писать запросы и т.п. Так, собственно, сейчас и делается.

Пятидесятый раз: Какми средствами ты будешь обеспечивать интелисенс в проекте с маппингом?
Самый простой и концептуально правильный способ получить метаданные это представиь БД как виртуальный исходник и распарсить его в АСТ читалкой базы данных.
А все таймеры и прочую ерунду должна взять на себя интеграция. Ибо повторять это все в каждом макросе который будет ходить во внешние источники данных дурь редкостная.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[14]: Требуются примеры макросов уровня выражения создающи
От: catbert  
Дата: 07.01.11 20:12
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Самый простой и концептуально правильный способ получить метаданные это представиь БД как виртуальный исходник и распарсить его в АСТ читалкой базы данных.


Что-то я этого простого способа не понимаю. Если БД это виртуальный исходник, где код? В БД сохраняется или как?
Re[15]: Требуются примеры макросов уровня выражения создающи
От: WolfHound  
Дата: 07.01.11 21:01
Оценка:
Здравствуйте, catbert, Вы писали:

C>Что-то я этого простого способа не понимаю. Если БД это виртуальный исходник, где код? В БД сохраняется или как?

Код это метаданные БД.
"Парсер" это хрень которая цепляется к БД, читает метаданные и генерит по ним аст.
Для остального кода разници между текстовым файлом и вот такм вот "исходником" нет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: Требуются примеры макросов уровня выражения создающи
От: Ziaw Россия  
Дата: 08.01.11 12:18
Оценка:
Здравствуйте, VladD2, Вы писали:

WH>>Я не говорил про мапинг. Я говорил про чтение метаданных.

WH>>Это нужно делать в том же проекте где описан маппинг.
WH>>И чтение метаданных это одна строчка.

VD>Мапинг как раз имеет смысл выделять в отдельный проект. При его сборке и читать метаданные. А уж в другом спокойно писать запросы и т.п. Так, собственно, сейчас и делается.


А зачем вводить такие ограничения? Костыли для интелисенса? Он у нас изначально инвалидом задумывается что-то? Виртуальные исходники вообще для очень разных задач могут применяться, маппинг в бд один из частных случаев?
Re[10]: Требуются примеры макросов уровня выражения создающи
От: Ziaw Россия  
Дата: 08.01.11 12:26
Оценка:
Здравствуйте, WolfHound, Вы писали:

Z>>У меня тоже последнее время крутятся мысли вокруг фшарповских typeproviders.

WH>typeproviders частный случай и тривиально реализуются через этот механизм.

Просто принцип действия очень похож, у меня тоже в эту сторону мысли были.

Z>>Например затем, чтобы прочитать актуальную версию изменившейся схемы или свежие данные. Но основная мысль понятна, IsModfiedSince ей в помощь.

WH>Ну так этот IsModfiedSince и не даст перечитывать базу чаще чем нужно.

Брр, это был ответ на "зачем перечитывать базу данных если connectionString не изменился". Про IsModfiedSince я именно это и имел ввиду.
Re[12]: Требуются примеры макросов уровня выражения создающи
От: Аноним  
Дата: 08.01.11 15:33
Оценка: -1 :)
Делегаты вообще создавались для событий то потом их уже за уши притянули к функциональному программированию.
Re[11]: Требуются примеры макросов уровня выражения создающи
От: WolfHound  
Дата: 08.01.11 15:58
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Брр, это был ответ на "зачем перечитывать базу данных если connectionString не изменился". Про IsModfiedSince я именно это и имел ввиду.

Ну вырывай слова из контекста.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Требуются примеры макросов уровня выражения создающих ти
От: BogdanMart Украина  
Дата: 31.05.11 20:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>По сему нам нужны наиболее реалистичные примеры (usecase-ы) макросов уровня выражения которым требуется порождать (менять, удалять) новые типы (члены типов).


Не знаю. может что то подобное и писали но воот пример:

public Figase() : void
{
  when (1 == 2) // это я шутю... )
    throw exception FigaseException("Описание");  // тут генерируется внешне видимый класс для исключения
}


Зачем вообще такое надо?
Очень часто приходить использовать стандартные исключения, но иногда удобно создать свой тип. Хотя бывает что лень и выбрасывать просто Exception. А с такой штукой можно будет улудшить качество кода.

Ну то не суть важно, просто просили юзкейс.
Re[8]: Требуются примеры макросов уровня выражения создающих
От: Danchik Украина  
Дата: 01.06.11 08:45
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, VladD2, Вы писали:


VD>>Что-то у них совсем уродское ГУИ. Напоминает ГУЙ к древнему CVS. Почему они просто не содрали ГУЙ с Тортилы для SVN (с учетом особенностей, конечно)?

VD>>Ладно. Вопрос риторический .

Z>А какой там гуй глобально отличается? Вобщем-то они все и содрали. Только потом еще сделали одно большое окно в котором можно делать все не вылезая из него. Мне удобно


Есть у меня принцип: не нравится программа визуально — внутри полный трындец. Имхо чуствуется безалаберность. Работает в 90%.
Тем кто создавал TortoiseHg надо было MS Guidelines начитаться и курить до полного просветления.
Один только этот скриншот убил наповал


Z>Тортила для свн она постарше будет, и работает только в винде, с гуем у нее по любому будет получше.

Ага TortoiseHg будет работать и под иксами Щас
И что надо сразу писать у...но, а потом когда постареем, все само и поправится?
Re[9]: Требуются примеры макросов уровня выражения создающих
От: Аноним  
Дата: 01.06.11 09:59
Оценка:
macro MakeAssignmentMacro(expr)
{
    <[ def MakeAssignmentMacro(ref expr){expr=42;}
       def MakeAssignmentMacro(ref expr){expr="42";}
       def MakeAssignmentMacro(ref expr) error("требеется или строка или число")
       MakeAssignmentMacro($expr);
 ]>
}


так не проще?
Re[2]: Требуются примеры макросов уровня выражения создающих
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.06.11 16:53
Оценка:
Здравствуйте, BogdanMart, Вы писали:

BM>Не знаю. может что то подобное и писали но воот пример:


BM>
BM>public Figase() : void
BM>{
BM>  when (1 == 2) // это я шутю... )
BM>    throw exception FigaseException("Описание");  // тут генерируется внешне видимый класс для исключения
BM>}
BM>


Вот это точно в лес. Типы надо декларировать, чтобы потом можно было бы проверять их использование. Генерация типов из методов приведет к тому, что или их нельзя будет использовать в других методах, или придется типизировать все тела методов на каждый чих, так как в противном случае создать IDE для такого языка будет нереально. Плюс появляется зависимость от порядка компиляции методов, что просто недопустимо.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.