Здравствуйте, AndrewVK, Вы писали:
VD>>100% твоих сообщений о дотнете и МС. Делаем выводы о твоем фанатизме?
AVK>Нет, делаем выводы о твоей правдивости.
Да? А может о твоей?
AVK>И, собственно, речь не о том, что чьи то сообщения о чем то, а о том что любой вопрос ты превращаешь в обсуждение Nemerle. Помнишь как СГ на каждый вопрос находил единственный ответ — Oberon. Ты сейчас делаешь тоже самое.
Учись оппелировать к словам, а не личности.
AVK>Вобщем неважно. Важно другое — лично я не испытываю жуткого интереса к Nemerle,
И на этом основании тебя раздражает любая информация о нем?
Прэлесно.
AVK> чтобы спрашивать о нем всегда и везде. Да и не только спрашивать, потому что собственно я вопроса пока даже не услышал, а агитировать за него.
Не спрашивай. Но воспринимай нормально когда тебе при обсуждении недоделок в одном языке указывают на то как они могут быть реализованы в другм. И не злись когда видишль людей которые увлечены тем, что тебя не интересует.
VD>>Сейчас мне интересна тема Немерла. Только и всего.
AVK>А мне нет, только и всего.
Здорово. И почему ты считашь нормальным высказывать другим фэ по поводу того что они увлечены чем-то другим? Да еще ири этом постоянно переходить на личности.
VD>>Так что предлагаю, не развивать тему обсуждения чужой личности.
AVK>Ты неверно воспринял исходный топик. Это не обсуждение твоей личности, это скорее обсуждение моей личности.
Я не про тему. Я про твои слова обо мне.
VD>>Думаешь он ответит на вопрос заданный незнамо кем?
AVK>Тогда пиши мне, я попытаюсь переправить.
ОК.
AVK>Ну а какой бы ответ тебя устроил, кроме абсолютно положительного?
Меня устроил бы анализ. Любой. Главное, чтобы он был максимально аргументирован.
AVK>На этот вопрос ты ответ получил — технических причин нет или они, по крайней мере, не основные.
Еще раз. Вопрос в такой формулировке интереса не имеет. Человк мог не знать о том, что макросы подчиняются областям видимости и регулируются подключаемыми сборками.
Без этой информации я возможно тоже посомневался бы.
AVK>Т.е. ты предлагаешь мне поучить их, как им следует работать?
Тебе нужно переводить на русский с русского? Думаю, нет. Тогда разреши мне процетировать самого себя:
Не спрашивал его отношение Немерлу? Они его вообще смотрели?
Не думаю, что вопрос "Что вы думаете по поводу Немерле?" может быть расценен как поучение.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
AVK>Видишь ли, я сейчас не хочу спорить о предмете. Хотя бы потому что лично я в этом вопросе не компетентен. Я всего лишь хочу показатью. что точка зрения МС имеет право на существование и это тнюдь не отмазка. Правильного же ответа на вопрос я не знаю.
К ответу
IT мне пожалуй нечего добавить.
WH>> Например помнишь то попадалово с с реализацией иерархии контролов? Там макросы Nemerle решили бы все проблемы. AVK>И миксины тоже.
Я бы предпочел макросы. Ибо миксины через макросы реализуются на раз, а вот макросы через миксины...
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, IT, Вы писали:
IT>Я об этом даже речи не вёл и вне контекста ситуации на этот вопрос нельзя ответить. Но если тебя интересует однозначный ответ, то скорее нет, чем да. Да и к макросам и DSL это отношения не имеет.
Имеет. Потому что на данном этапе mainstream-языки разделяет в основном поддержка парадигм и набор сахара. Надеюсь ни у кого не вызывает сомнения в том, что на Nemerle можно эмулировать довольно широкий спектр языков? C# уже эмулируется, с Питоном, насколько я понимаю, тоже особых проблем нет, Java тоже без проблем, С++ в той или иной мере, ограничиваемой safe-контекстом. Ну и т.д.
Теперь возвращаясь к моему вопросу — очевидно, что язык программирования, помимо основной своей задачи, является еще и средством коммуникации разработчиков в команде. Даже в случае применения нестандартных техник лично я наблюдал проблемы понимания кода одних членов команды другими. Не думаю что кто то будет спорить, что возможностей по созданию непонимания у Nemerle существенно больше.
Твоя точка зрения, как я понимаю, состоит в том, что разработчики достаточно благоразумны, чтобы использовать только те возможности, которые не создадут проблем, сопоставимых с гусем. Вот в это то я и не верю. Т.е. конечно разработчики не дебилы конечно, но процентов 90, если не меньше, не компетентны в вопросах дизайна ЯП. Опять же, я бы поверил что это не так, однако же ряд примеров, в том числе и ругаемый здесь С++, скорее убеждают меня в моей правоте, нежели наоборот.
IT>Как я понимаю, ты опасаешься, что "писатели" с большой буквы "ПЫ" на макросах могут такого понаписывать, что потом не разберёшься. Так вот я тебя могу успокоить. Они и без макросов отлично это умеют делать.
Вопрос в соотношении. Как ни странно, но процент юзабельных библиотек Java существенно выше онных для C# или С++. И еще один момент, немаловажный при борьбе с такими орлами — рефакторинг. Алгоритм универсальный для макросов построить невозможно, следовательно как то надо придумывать обходные пути. А здесь я пока ничего хорошего в макросах не вижу.
IT>Именно. Заметь, я не говорю про библиотечный код или код фреймворков. Этот код возможно своей сложностью и нетривиальностью как раз и должен обеспечивать простоту прикладного кода. А вот прикладной может и должен являться мерилом правильности выбора как архитектуры так и качества библиотек и фреймворков. Особенно это показательно на больших проектах. Если большая часть кода копипейстится, то архитектору нужно сначала пойти доучиться в школу и быть при этом хорошим мальчиком.
Если говорить о прикладных DSL, то там крайне важен жесточайший контроль за прикладным кодом. В случае прикладных декларативных DSL мне понятны пути, как этого достичь. А в случае Nemerle?
AVK>>Олично. А я не вижу. Ты считаешь, что правда за тобой?
IT>Я пытаюсь это понять. В моих приложениях рантайм генерация кода занимает весьма заметную роль.
В моих иногда тоже. Только решает она не задачи дизайна, а задачи перформанса. Да, мне был бы интересен фреймворк для более удобной кодогенерации (я, собственно уже писал о том, что генератор на базе Nemerle (как исходников, так и IL) меня интересует куда больше, нежели макросы), но речь то именно о макросах, а не о Nemerle в целом.
Есть еще АОП и похожие на него технологии, но здесь, во-первых мне кажется что compile time reflection чуть более контроллируема (не меняет синтаксиса языкам), а во-вторых, как я уже писал, они часто связаны с деплойментом, а значит ряд информации только на этапе деплоймента и известен, что налагает ограничения на использование compile time технологий.
Наконец есть еще задача генерации объектных моделей с большим количеством однотипных объектов, но здесь, опять же, ничего такого, ради чего стоило бы кардинально менять язык, Nemerle не привносит.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, VladD2, Вы писали:
AVK>>Влад, ты внимательно читал мои сообщения? Судя по всему нет.
VD>Внимательно. И из них явно следует, что в релиз поподет эта недоделка: VD>
2) По поводу недоступности анонимных типов вне контекста функции: проблема известна, но по поводу ее решения он ничего сказать не смог. Боюсь, в релизе linq все останется как есть сейчас.
Чуть ниже. Когда я говорил что определенный сухой остаток есть, я перечислял технологии, которые, по моему мнению, являются вполне полезными и вне DLINQ сотоварищи. Анонимные тьипы в этот перечень не входили.
Что касается убогости анонимных типов вне контекста декларативных запросов, то тут я полностью с тобой согласен. Более того, с этим согласны и товарищи из МС, о чем я писал.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, GlebZ, Вы писали:
AVK>>Кто такой expression lambda и о каких оптимизациях речь? GZ>Это те которые не statement.
Опять непонятно. Плиз, открой спецификацию C# 3.0 и используй термины оттуда, иначе тебя сложно понимать. expression lambda, которые не statement, это, видимо, что то потрясающее, но мне не известное.
GZ> Об оптимизациях говорить не буду, потому как не спец. Если брать функциональные языки, то там математически доказанных оптимизаций до фигищи. Мне просто это мало интересно. Если хочешь, спроси у них на форуме, они накатают вагон и маленькую тележку.
Я много оптимизаций примерно представляю. О каких конкретно идет речь и при чем здесь LINQ?
AVK>>И слава богу. Вывод типов по выражениям в конце метода резко снизит читаемость. GZ>Не соглашусь. Во многом эта ситуация похожа на ситуацию с generic. Мы не знаем что это за тип, нас волнует только логика обработки. А ежели где напакостничили, то компилятор нам об этом сообщит. Или надо будет смотреть по коду что это за тип.
О, последнее предложение ключевой момент.
AVK>>Ну, таким манером недоделками можно назвать что угодно. GZ>Когда есть с чем сравнивать, определить доделанность той или иной фичи не представляет труда.
Я еще раз повторю — таким манером недоделанным можно назвать любую фичу того же C# 2.0. Присобачить свои аргументы к любой из его фич и посмотреть на результат ты можешь самостоятельно.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, VladD2, Вы писали:
VD>Да? А может о твоей?
...
VD>Учись оппелировать к словам, а не личности.
...
VD>И на этом основании тебя раздражает любая информация о нем? VD>Прэлесно.
...
VD>Не спрашивай. Но воспринимай нормально когда тебе при обсуждении недоделок в одном языке указывают на то как они могут быть реализованы в другм. И не злись когда видишль людей которые увлечены тем, что тебя не интересует.
...
VD>Здорово. И почему ты считашь нормальным высказывать другим фэ по поводу того что они увлечены чем-то другим? Да еще ири этом постоянно переходить на личности.
А, ну понеслась. Спорьте, мужчина, без меня. (и этот человек обвиняет меня в переходе на личности )
VD>Меня устроил бы анализ. Любой. Главное, чтобы он был максимально аргументирован.
Анализ. В рамках устного общения в режиме цейтнота времени? Ты видимо чего то не понимаешь — описываемый разговор происходил в рамках доклада по C# 3.0 и я и так отнял минут 10 от часового доклада на свои вопросы.
VD>Еще раз. Вопрос в такой формулировке интереса не имеет.
Для меня имеет.
AVK>>Т.е. ты предлагаешь мне поучить их, как им следует работать?
VD>Тебе нужно переводить на русский с русского? Думаю, нет. Тогда разреши мне процетировать самого себя: VD>
Не спрашивал его отношение Немерлу? Они его вообще смотрели?
Тогда позволь переадресовать к тебе твои претензии. Я уже писал — лично мне этот вопрос абсолютно не интересен. Меня интересуют технические вопросы (притом больше с прицелом на дизайн информационных систем, нежели на кодинг), а не отношение конкретного перца из МС к конкретным разработкам.
VD>Не думаю, что вопрос "Что вы думаете по поводу Немерле?" может быть расценен как поучение.
Только вот этот вопрос легко допускает непринужденный уход от ответа, потому что он сильно неконкретен.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, WolfHound, Вы писали:
AVK>>И миксины тоже. WH>Я бы предпочел макросы. Ибо миксины через макросы реализуются на раз, а вот макросы через миксины...
А я миксины, потому что мне, на моих задачах, их хватит выше крыши, а за дополнительную гибкость я платить не желаю.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
AVK>А я миксины, потому что мне, на моих задачах, их хватит выше крыши, а за дополнительную гибкость я платить не желаю.
Чем платить?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
AVK>>А я миксины, потому что мне, на моих задачах, их хватит выше крыши, а за дополнительную гибкость я платить не желаю. WH>Чем платить?
Считаешь, что таки кое где бывает бесплатный сыр ака silver bullet?
P.S. Не сочти за демагогию, ответ на твой вопрос уже содержится в моих постах.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Считаешь, что таки кое где бывает бесплатный сыр ака silver bullet?
Я так не считаю. Рано или позно найдется монстр которого этой пулей не убить. Но эта пуля легко убивает всех монстров которых убивает C# и еще кучу которых C# даже поцарапать не может.
Вобщем лично я предпочту выходить на охоту на монстров с максимально мощными пулями ибо в этом случае вероятность нарваться на неубиваемого монстра будет меньше.
AVK>P.S. Не сочти за демагогию, ответ на твой вопрос уже содержится в моих постах.
Ну давай запретим рефлекшен... через него тоже можно натворить черт знает что.
А прикинь что будет если пустить соколов из соседней команды писать сервер приложений?
Короче давай завязывай с тем что Гашиш Кумар может напортачить. ИМХО это очень слабый аргумент. Ибо нормальный ПМ просто запретит ему писать макросы и все.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Короче давай завязывай с тем что Гашиш Кумар может напортачить. ИМХО это очень слабый аргумент. Ибо нормальный ПМ просто запретит ему писать макросы и все.
К томуже его можно посадить писать на томже C#. А вот пространство имен Parus.SmartClient.Controls.Win я бы предпочел писать на Nemerle.
Ведь интероп между Nemerle и C# абсолютно прозрачен.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
AVK>>Считаешь, что таки кое где бывает бесплатный сыр ака silver bullet? WH>Я так не считаю. Рано или позно найдется монстр которого этой пулей не убить. Но эта пуля легко убивает всех монстров которых убивает C# и еще кучу которых C# даже поцарапать не может.Вобщем лично я предпочту выходить на охоту на монстров с максимально мощными пулями ибо в этом случае вероятность нарваться на неубиваемого монстра будет меньше.
Но ведь С++/CLI, к примеру, почти во всем мощнее С#. С твоей философией надо бы его использовать.
AVK>>P.S. Не сочти за демагогию, ответ на твой вопрос уже содержится в моих постах. WH>Ну давай запретим рефлекшен... через него тоже можно натворить черт знает что.
А мы его со временем и запретим. При помощи CAS.
WH>Короче давай завязывай с тем что Гашиш Кумар может напортачить. ИМХО это очень слабый аргумент.
А я этот аргумент и не приводил. Если не веришь, можешь перечитать мои посты, например вот этот
Здравствуйте, AndrewVK, Вы писали:
AVK>Но ведь С++/CLI, к примеру, почти во всем мощнее С#. С твоей философией надо бы его использовать.
А немерле еще мощьнее если не надо писать неуправляемый код. К томуже если сравнивать C++/CLI и немерле то C++/CLI жуткий мутант... скрестили ежа с ужем и думают что это круто..., а немерле чистый язык без заморочек.
AVK>А я этот аргумент и не приводил. Если не веришь, можешь перечитать мои посты, например вот этот
. Loki, к примеру, совсем не твой Гашиш Кумар придумал.
Причем тут локи? Локи ужасен по тому что реализован на побочных эффекта шаблонов С++. В С++ в отличии от немерле метапрограммирование никто не планировал и именно по этому в С++ это выглядит так ужасно.
Судить о метапрограммирование по С++ это всеравно что судить об ООП по попытке реализовать его на brainfack'е.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, AndrewVK, Вы писали:
AVK>Теперь возвращаясь к моему вопросу — очевидно, что язык программирования, помимо основной своей задачи, является еще и средством коммуникации разработчиков в команде. Даже в случае применения нестандартных техник лично я наблюдал проблемы понимания кода одних членов команды другими. Не думаю что кто то будет спорить, что возможностей по созданию непонимания у Nemerle существенно больше.
Больше. Но это "больше" не является той критической массой из-за которой метапрограммирование нужно запретить как вселенское зло. К тому же несколько макросов расширяющих синтаксис — это капля в море по сравненю с объёмом кода, который нужно будет постигнуть девелоперу только что пришёдшему на проект. Но вот эти самые макросы могут позволить существенно уменьшить код, с которым этому девелоперу придётся столкнуться. Так что всё зависит от того как на это посметреть.
AVK>Твоя точка зрения, как я понимаю, состоит в том, что разработчики достаточно благоразумны, чтобы использовать только те возможности, которые не создадут проблем, сопоставимых с гусем. Вот в это то я и не верю. Т.е. конечно разработчики не дебилы конечно, но процентов 90, если не меньше, не компетентны в вопросах дизайна ЯП. Опять же, я бы поверил что это не так, однако же ряд примеров, в том числе и ругаемый здесь С++, скорее убеждают меня в моей правоте, нежели наоборот.
Андрей, я тебе могу рассказать кучу примеров, когда те самые 90 процентов и без макросов делали такое, что у меня волосы начинали шевелиться во всех местах сразу. Про ужимание классов по 2к строк в 10 строчек я тебе не рассказывал? Если нет могу рассказать. Может ещё чего-нибудь вспомню. Но это всё не аргумент. С таким же успехом можно было бы 10 лет назад говорить, что ООП из-за порога вхождения несёт в себе только проблемы. Тем не менее сегодня это звучит смешно и ни один проект без ООП не обходится за исключением очень специальных случаев. Но вот общее увеличение сложности ПО ООП скомпенсировать удалось. Метапрограммирование — шаг в том же направлении. Не больше и не меньше.
И ещё вот что скажу. Пока у меня не было особенного выбора где-работать, куда пошлют туда и едем тушить пожар, то проблем с одноклеточными у меня было выше крыши. Толи их концентрация разваливает проекты, толи с самого начала неблагополучные проекты притягивают их массы Но последнее время у меня таких проблем гораздо меньше, т.к. приходится работать в небольших командах с классными инженерами, вполне вменяемыми и знающими. Не думаю, что у них будут какие-то большие проблемы с метапрограммированием.
AVK>Вопрос в соотношении. Как ни странно, но процент юзабельных библиотек Java существенно выше онных для C# или С++. И еще один момент, немаловажный при борьбе с такими орлами — рефакторинг. Алгоритм универсальный для макросов построить невозможно, следовательно как то надо придумывать обходные пути. А здесь я пока ничего хорошего в макросах не вижу.
Для C++ рефакторинга вообще пока не существует и народ как-то живёт. Да и рефакторингу как технологии без году неделя. Если тут есть серьёзные проблемы, то их надо решать, а не бегать от них.
AVK>Если говорить о прикладных DSL, то там крайне важен жесточайший контроль за прикладным кодом. В случае прикладных декларативных DSL мне понятны пути, как этого достичь. А в случае Nemerle?
Запретить создание и модификацию сборок с макросами инженерам, которым не положено это делать по должности.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, AndrewVK, Вы писали:
AVK>>>Кто такой expression lambda и о каких оптимизациях речь? GZ>>Это те которые не statement. AVK>Опять непонятно. Плиз, открой спецификацию C# 3.0 и используй термины оттуда, иначе тебя сложно понимать. expression lambda, которые не statement, это, видимо, что то потрясающее, но мне не известное.
Занятно. Я тебе уже второй раз объясняю терминами взятыми из спецификации либо доков. Ты их читаешь?
Открываем, спеки от С#3.0, смотрим 23.6(собственно 26.3 Lambda expressions), замечаем что лямбда может быть двух типов, lambda c expression body, и lambda c statement body.
AVK>>>И слава богу. Вывод типов по выражениям в конце метода резко снизит читаемость. GZ>>Не соглашусь. Во многом эта ситуация похожа на ситуацию с generic. Мы не знаем что это за тип, нас волнует только логика обработки. А ежели где напакостничили, то компилятор нам об этом сообщит. Или надо будет смотреть по коду что это за тип. AVK>О, последнее предложение ключевой момент.
И чем собственно они отличаются? Значит для генериков это простительно, а для type inference — это отстой?
Здравствуйте, VladD2, Вы писали:
GZ>>Насколько я правильно понял tuple, он при реализации в чистом виде подразумевают динамическую типизацию. VD>Кто тебе это сказал? Кортежи статически типизированны.
Sorry, прогнал. Можно и статически.
Здравствуйте, IT, Вы писали:
IT>Значит надо думать как подружить рефакторинг и макросы. В конце концов уже давно всем понятно, что язык без качественной IDE сегодня не представляет практически никакой коммерческой ценности. Проблема разработки API способного интегрировать языки в IDE уже давно назрела.
V>>Ну, отмазка, действительно, нелепая. В крайнем случае VB еще не отменили
IT>Она ещё более нелепа в свете того, что многие из нас начали свой путь с процедурного программирования. Т.е. ООП мы как-то смогли понять, что такое шаблоны как-то сообразили, на Windows перешли, COM, после 6 месяцев тумана в голове, тоже взяли, а вот DSL и метапрограммирование для нас это слишком сложно. Беспокоются они о нас Детский сад какой-то
просто поняли, что не смогут сделать, вот и всё. Слишком тяжел груз унаследованного кода, который тянет на дно.
Смотрел недавно API расширения студии — так это просто порнография какая-то. Даже не знаю, плакать или смеяться.
Здравствуйте, VladD2, Вы писали:
VD>Собственно я уже говорил, что рефакторинг упирается не в мифические роблемы динамичности, а в банальную проблему модификации кода. Если переменная или свойство создаются метакодом во время компиляции, то ее рефакторинг мягко говоря затруднен. Однако, метакод может и не порождать сушьностей. В этом случае он прекрасно будет рефакториться.
Просто не надо рефакторить порожденный макросами код, вот и всё. Сложно, неинтуитивно, да и смысла в этом особого нет.
В конце концов, самый простой вариант — при выборе операции рефакторинга на любом сгенеренном коде делать навигацию на место в коде, где находится создавший его вызов макроса. А дальше юзер пусть сам думает.
Здравствуйте, Дарней, Вы писали:
Д>просто поняли, что не смогут сделать, вот и всё. Слишком тяжел груз унаследованного кода, который тянет на дно.
Так бы и сказали, а не спирали бы всё на ограниченность разработчиков. И, кстати, никто бы слова не сказал. Всем понятно, что задача разработки мэйнстрим платформы очень серьёзная и ответственная, без ошибок в ней не бывает.
Д>Смотрел недавно API расширения студии — так это просто порнография какая-то. Даже не знаю, плакать или смеяться.
Если смеяться, то только сквозь слёзы. Там по сути то что есть и API назвать трудно. Так... что получилось пока свои дизайнеры клепали.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.