Здравствуйте, DarkGray, Вы писали:
WH>>Дело в том что "обратную задачу" ни кто ни когда не решает. WH>>Всегда решают только "прямую".
DG>в немерле может и не решают, а в других системах решают.
Дай угадаю — это при генерации кода текстовыми генераторами вроде T4?
Ну, так даже для них есть средства — #pragma line. Неудобно, конечно, но проблему решить можно.
В прочем, текстовая генерация есть текстовая генерация.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, mrTwister, Вы писали:
VD>>А то, что это как раз то что невозможно положить в обычную библиотеку потому, но слишком специфично чтобы встраивать в язык. По этому ты никогда не увидишь средств автоматизирующих DependencyProperty и INotifyPropertyChange. Меж тем в виде макроса эти проблемы автоматизируются на раз. Вот здесь можно найти пример автоматизации DependencyProperty.
T>Какое это имеет отношение к Type providers?
Дык их тоже можно было бы положить в мако-библиотеку... при наличии макросов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Кэр, Вы писали:
Кэр>Забавно смотреть, как он показывал как он пишет строго-типизированный код к WMI, а потом показывает, как это было бы в старом стиле и для этого использует интеллисенс нового подхода, как подсказку
с гидрой по имени WMI продолжается! На этот раз в бой брошены функциональные языки. Но сдается мне, что это еще не конец. У гидры на одну отрубленную голову отростает две.
Здравствуйте, WolfHound, Вы писали:
Кэр>>Для интеллисенса и компиляции. Конкретно этот вызов я бы предположил что используется для вызова несуществующих методов/свойств несуществующих типов. WH>И что это если не кодогенерация?
Что-то другое Я код не генерю и этим процессом не управляю. И очень рад этому факту. Мне реально все равно, как вы называете этот процесс внутри компилятора и почему вам так хочется выделить именно его.
Кэр>>В этом случае — нам не стоит использовать слово "кодогенерация". Ибо это процесс подготовки исходников перед процессом запуски компилятора. А макросы — это один из видов кодогенерации. WH>Не надо играть словами. WH>Генерация кода она и есть генерация кода. WH>А кто и в каком виде этим занимается дело десятое.
Весь смысл термина заключается именно в том, кто и чем занимается. В классике кодогенерация — это как раз генерирование исходников перед компиляцией.
WH>Кстати если подходить к макросам немерла с твоих позиций то они кодогенерацией не занимаются... ибо с исходником ничего не делают.
Мне довольно все равно как классифицировать макросы Немерле, так как я их не использую.
Кэр>>Код получается слишком гибкий. WH>Я не знаю что такое слишком гибкий код. Это субъективно. WH>За то я знаю что такое в 10 раз меньше кода. И это как ни крути объективно.
Архиватор еще лучше код жмет. С тем же уровнем объективности. Поддержку среды разработки, плагинов вроде Решарпера, плагинов к самому Решарперу, хорошую поддержку компилятора никто не отменял. А вы махаете флагом — а ну все побежали на Немерле с C# — у нас все здорово. JetBrains уже выпускает версию Решарпера с поддержкой Немерле? Или может вам надо спуститься на грешную землю и понять все-таки кто для вас является целевой аудиторией?
Кэр>>Когда семантика кода при одном и том же синтаксисе начинает очень сильно зависеть от подключенных макросов (а также их версии). WH>И чем это отличается об библиотеки классов? WH>Хорошо подумай прежде сем ответить.
Уже ответил выше. Поддержка тулами. Я очень легко могу управлять подключениями библиотек. В случае с макросами возможных side-effect'ов становится в разы больше. В общем случае это большая проблема, потому что резко увеличивает область, которую нужно проверять, когда что-то идет не так.
Кэр>>Мне абсолютно неинтересно смотреть на решения до того, как была сформулирована проблема, которая вроде как решена данным кодом. WH>Тебя в гугле забанили?
Великолепно, если вы так все задачи ставите и проблемы формулируете — то это мощный подход. Даже обсуждать дальше не буду.
Кэр>>Об этом я писал в абзаце выше, который вы разодрали на цитаты. Я повторю еще раз — мне не жалко. Но вы, я думаю, еще раз меня не услышите. Так вот — прежде чем втирать людям решение, надо показать проблему, которая решается. Это идеально. Это то, чтобы было при переходе от ассемблера к С, от С к С++, от С++ к C#. Менее идеально — показать людям, что проблема есть, а потом показать как она будет решена. Я об этом давно говорил Владу — он меня тоже не услышал. WH>Ну так мы показываем. WH>Но они просто игнорируются.
Да ни черта вы не показываете. Можете дальше ходить с обиженным видом кругами и говорить, что проблема в окружающем мире, а не в вас. Окружающий мир и не такие трагедии переживал.
Кэр>>И не вижу критичных проблем, которые они должны решить. WH>Ну да. Сократить код раз в 10 это конечно нихрена не критично.
10 раз взято с потолка. Отсутствии поддержки языка тулами — вот это критично. Были бы достойные причины отказаться от тулов и выиграть в чем-то другом — уже отказывались бы по все миру и использовали Немерле.
Кэр>>И не могу добиться внятного ответа от ведущих макросоводов этого форума. Начинают тыкать кодом на Немерле и кричать как это компактно. Причем каждый пример кода — о каком-то парсинге, о каком-то интеллисенсе, о каких-то грамматиках. Они мне все нафиг не нужны в моей работе. WH>Проблема в том что я понятия не имею о твоей работе. WH>И как следствие не могу сказать где ты в своей работе можешь использовать макросы. WH>Вот тут
я приводил пример ДСЛя который можно сделать для разработки интерактивных ВЕБ приложений. WH>Но ты сейчас опять скажешь что тебе это не надо. WH>Мы просто не в состоянии найти примеры для каждого ибо вас очень много.
Ну вот именно. Значит цель и задачи под эту цель надо формулировать по-другому. Найдите проблему, которая хорошо решается с помощью Немерле и которая приносит конкретную пользу, как веб-фреймворк и попытайтесь его продвинуть. Если получится — значит что-то за языком возможно стоит. Если нет — ну что же. Есть много технологий, которые себя не оправдали. Ну или апологетов, которые не оправдали технологию.
Кэр>>Забавный вы. Вы похоже тоже верите, что МС опять обманул весь мир. WH>Нет. WH>Я просто понимаю что для огромного числа людей все инструменты на которых не стоит лычка мегакорпорации отстой по определению.
А ну да, да. Все люди идиоты, а Микрософт их всех обманул.
Кэр>>Сделайте язык — который имеет внятную нишу и внятное применение — и будет у вас аудитория. WH>Так она у нас есть. WH>И получает существенные преимущества перед конкурентами.
И какова аудитория Немерле? Пальцев на руках хватит, чтобы пересчитать? Его за пределами RSDN никто и не знает по сути.
Кэр>> Посмотрите на пример Ruby. WH>И что я там должен увидить?
Пример языка, который нашел свою нишу и получил свою аудиторию. То чего не может никак сделать Немерле.
Кэр>>А если МС был неправ — то МС подтянется, если сможет. WH>Не сможет.
Точно. Пора бежать продавать последние акции MS — конец он уже близок.
Кэр>>Если не сможет — МС умрет и кто-то другой будет делать популярные средства разработки. WH>Этот зомби еще очень долго будет всех пугать.
Фуф. Ну хоть прямо сразу бежать продавать акции не надо.
Кэр>>И никакой теории заговора. WH>Ты не понял. Я не про заговор. Я про банальную глупость.
Ага, я тоже. Но вы можете тратить свое время как вам будет угодно
Здравствуйте, Кэр, Вы писали:
Кэр>Что-то другое Я код не генерю и этим процессом не управляю.
За то управляет тот кто пишет type provider?
Кэр>И очень рад этому факту. Мне реально все равно, как вы называете этот процесс внутри компилятора и почему вам так хочется выделить именно его.
Я просто называю вещи своими именами.
А тсвои попытки назвать белое черным ни к чему хорошему не приведут.
Сам же запутаешься.
WH>>Кстати если подходить к макросам немерла с твоих позиций то они кодогенерацией не занимаются... ибо с исходником ничего не делают. Кэр>Мне довольно все равно как классифицировать макросы Немерле, так как я их не использую.
Тем не менее придется это сделать.
Иначе у тебя так и будут проблемы с пониманием того что вокруг тебя происходит.
Кэр>Архиватор еще лучше код жмет. С тем же уровнем объективности.
Но есть момент... заархивированный код читать невозможно, а вот код на немерле читать заметно проще чем код на C#.
Кэр>Поддержку среды разработки,
Автокомплит, навигация, подсветка ошибок, хинты (круче чем в студии), отладка прекрасно работают.
Кэр>плагинов вроде Решарпера, плагинов к самому Решарперу,
А что решарпер для F# уже уже есть?
Кэр>хорошую поддержку компилятора никто не отменял.
Уж точно не хуже чем у F#.
Кэр>Или может вам надо спуститься на грешную землю и понять все-таки кто для вас является целевой аудиторией?
Люди которые не хотят говнокодить в десять раз больше кода чем нужно.
Кэр>Уже ответил выше. Поддержка тулами.
Интеграция немерла прекрасно дружит с макросами.
Кэр>Я очень легко могу управлять подключениями библиотек.
Ну так и макросами можно управлять точно так же.
Сделал using SomeMacroNamespace; получил макру.
Не сделал нет макры.
В чем проблема то?
Кэр>В случае с макросами возможных side-effect'ов становится в разы больше.
Ну так головной мозг при разработке макросов никто не отменял.
А так я тебе рефлекшеном без всяких макросв таких side-effect'ов наделаю что закачаешься.
Кэр>В общем случае это большая проблема, потому что резко увеличивает область, которую нужно проверять, когда что-то идет не так.
Сказал человек который ни разу в жизни не пользовался макросами.
Есть тут персонажи которые с пеной у рта доказывают что .НЕТ говно по тому что он кучу всего делает без их ведома и это резко увеличивает область которую нужно проверять.
Вот ты выглядишь так же.
Кэр>10 раз взято с потолка.
Возьмем например парсер C# написанный на немерле.
175К ркописного кода и 1.7М кода сгенеренного макросом (для того чтобы по этому коду можно было отладчиком ходить). Причем там генерируется такой код что писать его руками озвереешь.
Я еще когда на С++ писал однажды написал кодогенератор который генерирует примерно столько же кода сколько занимает сам.
Казалось бы в чем смысл?
Но! Учитывая что при малейших изменениях исходных данных весь сгенерированный код существенно менялся плюс в коде была масса волшебных чисел корорые так же пересчитывались я считаю что генератор многократно окупился.
На немерле такие вещи делаются гораздо проще.
Кэр>Отсутствии поддержки языка тулами — вот это критично.
Так есть же интеграция. Но ты ее упорно игнорируешь.
Кэр>Были бы достойные причины отказаться от тулов и выиграть в чем-то другом — уже отказывались бы по все миру и использовали Немерле.
Почитай эту тему.
Как видешь люди видят выгоды. Понимают риски и готовы их нести ибо инструмент реально мощьный.
Кэр>А ну да, да. Все люди идиоты,
Не все. Но их не мало.
Кэр>а Микрософт их всех обманул.
Никого он не обманывал. Просто большенство людей не думают своей головой, а идут за стадом во главе которого стоит мелкософт.
Кэр>Пример языка, который нашел свою нишу и получил свою аудиторию. То чего не может никак сделать Немерле.
Немерле намного моложе.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Klatu, Вы писали: K>А можно в нескольких словах описать в чем идея? Не переношу видео-лекции
Запихали кодогенераторы для объектных моделей внешних данных в плагины к компилятору. Не ожидал такой скукоты от Дона.