Re[3]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:14
Оценка: 1 (1) +3 -2
Здравствуйте, IB, Вы писали:

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


VD>>Он просто возмущен тем, что кто-то может сомневаться в том что автор может не знать что-то.

IB>Влад, ты задрал. На долго тебя действительно не хватило.

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

IB>Я далеко не во всем согласен с АВК, да и задачи у меня другие, но наблюдать со стороны твою демагогию крайне не приятно.


С начало не плох было бы продемонстрировать демагогию в моих словах.
Демагогия, а точнее софистика как раз сплошь и рядом в словах АВК.

VD>>Ну, что же остается только задать вопрос: А почему же автор не упомянул о такой возможности? И почему он старательно пытается избежать ее обсуждения. Ведь, казалось бы, она снимает проблему изменения синтаксиса с которой боролся.

IB>Не снимает. Проблема не в том, что можно так не делать, проблема в том, что так делать в принципе можно, об этом говорилось уже ни раз.

Это не аргумент. Синтаксические расширения — это не грипп. Их нельзя подхватить случайно. Запрети в своей конторе их использовать или дай разрешение на их введение только определенным лицам (т.е. себе любимому) и проблема исчезнет как класс.

К тому же вам сто раз говрили люди которые все это используют на практике — нет проблем от синтаксических макросов. Вообще нет. Над тем же Немерлом работали в разное время десятки человек и в вакханалию ничего не превратилось.
С точки зрения использования нет особой разницы вводится ли новый макрос, или новый класс. Последствия совершенно одинаковые.

Вот где действительно есть проблемы, так это в качестве написанных макросов. Оно должно быть на высоте, так как макра — это фактически плагин к компилятору и IDE, а значит она может повлиять на их работу. Но это опять же имеет прямую корреляцию с библиотеками. Не давайте кому попало писать критический код.

VD>>Хм. Весьма странные рассуждения. Они скорее запутают неопытного читателя нежели что-то ему объяснят.

IB>Позволю себе напомнить, что тут не стояла цель что-то объяснить неопытному читателю. Андрей объяснял, опытным читателям, что именно его не устраивает в Nemerle, на именно его задачах. И именно этого вы от него и требовали.

Андрей просто неверно трактует термины встроенный DSL и мета-программирование. Об этом я и говорил.

VD>>Из определения ясно видно, что это не усеченные или расширенные языки программирования общего назначения, а совершенно другие языки описывающие предметную область и оперирующие терминами из этой области.

IB>То есть, ты утверждаешь, что переходя в термины предметной области ты не сужаешь набор возможностей?

Да, и это нужно четко понимать если уж ты взял на вооружение ДСЛ-подход.
Ты не сужаешь и не расширяшь базовый язык. Ты вводишь в язык некий подъязык с совершенно другой семантикой, а возможно и синтаксисом. Это может быть сделано разными средствами (не только через МП), но после того как это сделано, рассматривать ДСЛ как сужение или расширение основного языка ошибочно и пагубно.

IB>И не составит никаких проблем описать бухгалтерию точки общественного питания в терминах системы управления АЭС?


Ты сейчас намеренно сказал глупость. Зачем?
Конечно описывать бухгалтерию в терминах АСУТП АЭС глупо. Скажу даже больше невозможно.
Но встроить в один язык два подъязыка-ДСЛ-я один из которых позволит описать предметную область бухгалтерии, а другой АСУТП АЭС можно. Вряд ли это потребуется в одном проекте, но это ведь не проблема?

VD>>Так вот поддержка ДСЛ-ей заключается не в наложении ограничений или расширений к основному языку, а в том, что язык позволяет описать совершенно новую семантику, а иногда и синтаксис.

IB>С набором ограниченных возможностей.

Не. С совершенно иной семантикой! Ты просто не пишешь на базовом языке, а пишешь на ДСЛ-е. Давай перейдем от абстракций к конкретике. Вот у нас есть конкретный ДСЛ — регулярные выражения. Как они сужают базовый язык? Да они к нему просто не имеют никакого отношения! Они романтически совсем другие. Разбор регулярных выражений можно реализовать на языке общего назначения (ЯОН), но нельзя выразить с его помощью.
Улавливаешь разницу? Ну, так вот используя скажем Шарп ты можешь реализовать класс который будет принимать ДСЛ регулярных выражений в качестве строки и производить сопоставление. И то, и другое будет производиться в рантайме. Скажем реализация регекспов в дотнете может скомпилировать их на лету чтобы ускорить их работу. Вот эта компиляци, а точнее генерация для нее кода — это и есть МП. Немерле же позволят:
1. Производить разбор и анализ ДСЛ-я в процессе компиляции.
2. Легко сгенерировать эффектинвый код, опять же во время компиляции.

Неужели это плохо?

VD>>Но ты почему-то проигнорировал наши просьбы дать расскзать о проблемах МП в Немерле. Вместо этого ты почему-то рассказал нам о своих предубеждениях (ни на чем не основанных).

IB>Во-первых, никто не обещал рассказывать про проблемы МП в немерле, обещали рассказать чем не устраивает немерле именно AVK, и именно это и рассказали.

Вообще-то обещал. Но в другой теме.

IB>А во-вторых, рассказали на чем именно основаны "предубеждения".


Да не очень то. А вот, то что это предубеждения ясно любому кто знаком с Немерле не по наслышке. Заметь не нашлось никого, кто хоть немного знал бы этот язык и при этом согласился бы с АВК.

VD>>Почему-то уверен, что ответов по существу не будет. Вместо этого снова будет вцеплена одна из фраз, я буду обвинен в хамстве, а автор темы снова провозгласит себя правым и обиженным. А жаль.

IB>А ты не хами и жалеть не придется.

А в чем хамство то? Для него хамство — это когда я называю вещи своими именами. Я говорю, что он намерено или нечаянно опускает из рассмотрения вещи с которыми он (по всей видимости) не может конструктивно спорить. Это хамство? тогда, рабята с вами вообще нельзя что-то обсуждать, так как хамством для вас является любое сомнение в вашей правоте. А не то что бы сомневался. Я отчетливо вижу отсутствие этой самой правоты.

VD>>Ведь только в честных спорах рождается истина.

IB>Возможно. Но только честно спорить ты не умеешь.

Да, конечно. Ты меня Вань извини, но слова АВК — это большей частью демагогия не имеющая никакого отношения к техническим аспектам. И все это проистекает из-за того, что человек пытается найти технические обоснования для сугубо субъективных предпочтений.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Что меня не устраивает в МП в Nemerle
От: mihailik Украина  
Дата: 27.12.08 13:16
Оценка:
M>>Генератор запускается когда студия решила

AVK>Для VS 2003. Для VS 2005 + — не только.


Какая разница? Генератор должен выдавать один и тот же результат сколько бы его не запускали при одинаковых параметрах.

Если генератор детерменированый, пусть запускается когда хочет. Если недетерминированый, сам виноват -- пусть свою недетерминированость кеширует где-то в скрытом файле.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:17
Оценка: +1 -3
Здравствуйте, IB, Вы писали:

A>>В чем демагогия то?

IB>В том, что он передергивает практически каждое предложение и отвечает не на то что было написано, а на то что ему удобно.

Не надо грязи. Иронизирую — да, но нельзя не иронизировать над набором заблуждений и неверных трактовок терминов.
А демагогии в моих словах нет вообще. Ух где она есть, так это в словах АВК.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:17
Оценка: +1
Здравствуйте, alvas, Вы писали:

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


Злостный оффтопик, ну да ладно. Неплохо конечно. Но мало. Во-первых, все, я повторяю, все программисты обязаны быть в курсе ситуации в их области, о тенденциях. Во-вторых, в определенном количестве контор в штатах (и даже в России) есть более интересный подход. При этом в рамках конторы (не из 5 программистов, конечно) создается команда высококвалифицированных спецов, которая постоянно держит руку на пульсе. В особо продвинутых случаях такая команда превращается в отдельный департамент.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[9]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:26
Оценка:
Здравствуйте, mihailik, Вы писали:

M>Какая разница?


Есть разница.

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


Главное, чтобы он запускался тогда, когда хочу я. А сейчас у меня ни возможностей по управлению, ни даже какой то ясности. Товарищи подстраивают это все под свои сценарии, а мне остается только уповать на то, что мои сценарии не слишком отличаются.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Что меня не устраивает в МП в Nemerle
От: Lloyd Россия  
Дата: 27.12.08 13:30
Оценка:
Здравствуйте, mihailik, Вы писали:

AVK>>увязан крайне нетривиально(слабо найти, к примеру, документацию, в каких случаях генератор запускается). Одна только необходимость коммитить генерируемый код — уже маразм еще тот.


M>Генератор запускается когда студия решила, что файл изменился, или когда программист нажал правую кнопочку и попросил.


Не только. Например, когда в свойствах проекта меняешь default namespace, происходит запуск. Проверялось на t4.
Re[6]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Названия методов и ключи реестра — это все незначительная шелуха. Гавенность Custom Tool глубже — он увязан со конкретной студией и увязан крайне нетривиально(слабо найти, к примеру, документацию, в каких случаях генератор запускается). Одна только необходимость коммитить генерируемый код — уже маразм еще тот.


Ну, и почему бы вместо этого уродства не иметь возможность встроить код генерации в процесс компиляции на общих основаниях (как плагин)?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, и почему бы вместо этого уродства не иметь возможность встроить код генерации в процесс компиляции на общих основаниях (как плагин)?


Ничего не имею против.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:50
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Я тоже так думал. А на практике оказалось, что этот DSL приходится поддерживать постоянно. Если DSL этот — ключевое момент системы, это еще ничего. А вот если вспомогательный — сложно все таки мыслить концепциями генераторов, сложнее, чем просто писать целевой код.


Вот это, наверно, корень всего твоего не понимания.

Не надо мыслить концепциями генератора чтобы использовать макрос! Не-на-до!

Ты же не мыслишь концепциями генератора когда используешь, например, foreach? Не мылишь.

А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.

Пойми, макрос должен вводить некую сущность более низкоуровневую чем сущности языка. Тогда макра будет восприниматься программистами как средство упростить свой код, выразить внятно что-то, что ранее им пришлось бы описывать нагромождением кода.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:54
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


Это потому, что генератор создавался средствами для этого не заточенными. Макросы поддерживать наного проще.
В прочем, всегда есть задачи которые можно решить с помощью МП, но не нужно.

ЗЫ

Не вижу почему из-за того, что иногда что-то проще сделать руками проще, надо всегда все делать руками.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Вот это, наверно, корень всего твоего не понимания.


Я просил мою персону не обсуждать здесь. Это так сложно?

VD>Ты же не мыслишь концепциями генератора когда используешь, например, foreach? Не мылишь.


Я не про использование, я про его написание.

VD>А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.


Ничего не имею против реализации foreach средствами макросов, если удается обеспечить приемлемую производительность компилятора.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 13:56
Оценка:
Здравствуйте, AndrewVK, Вы писали:

IT>>Не знаю зачем ты добавил сюда этот пункт, но МП тут вообще ни при чём.


AVK>Влад в соседней ветке утверждал, что любая кодогенерация это МП. По мне так называй как хочешь, непринципиально.


Это утверждал даже не Влад, а само определение МП.

Другое дело, что не все МП имеет смысла (да и вообще возможно) создавать с использованием макросов. Вот визарды — это пример где макросы бесполезны, но это тем не менее МП в чистом виде. Сам визард — мета-программа.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это потому, что генератор создавался средствами для этого не заточенными.


Нет. Проблема именно в концепции.

VD> Макросы поддерживать наного проще.


Проще, но не намного. Я пробовал.

VD>Не вижу почему из-за того, что иногда что-то проще сделать руками проще, надо всегда все делать руками.


Потому что на моих задачах, уж так получается, первое встречается намного чаще.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[4]: Что меня не устраивает в МП в Nemerle
От: Lloyd Россия  
Дата: 27.12.08 13:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.


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


Можешь пояснить что ты имел в виду? Ведь DSL — это буквально "язык предметной области", он по определению не может быть более "низкоуровневым чем сущности языка".
Re[4]: Что меня не устраивает в МП в Nemerle
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 27.12.08 13:58
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это утверждал даже не Влад, а само определение МП.


Это к IT, я спорить о терминах не буду.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, и почему бы вместо этого уродства не иметь возможность встроить код генерации в процесс компиляции на общих основаниях (как плагин)?


Ну, так и начни рассматривать макры, как такие плагины позволяющие решать проблемы которые другими средствами красиво не решишь. Тогда все сразу встанет на свои места.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:10
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>Вот это, наверно, корень всего твоего не понимания.


AVK>Я просил мою персону не обсуждать здесь. Это так сложно?


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

VD>>Ты же не мыслишь концепциями генератора когда используешь, например, foreach? Не мылишь.


AVK>Я не про использование, я про его написание.


А причем тут написание? Ты же говорил об использовании.

В прочем, то что делается макрой можно сделать только копи-пэстом. А поддержка копи-пэста — это самое плохое что можно придумать.

В общем, если ты имеешь негативный опыт написания мета-программ, то возможно нужно задуматься о проблемах которые к этому привели, а не искать фатальный недостаток в МП. Для эффетивновго использования МП нужно иметь скилы в МП и качественные инструменты. Плюс мета-программа — это такая же программа как и другие. И если ты накосячил в ее проектировании, то проблемы гарантированы. Вот что правда, так это то, что проблемы с мета-кодом выливаются в большую головную боль, так как они воздействуют на множество мест в программе.

VD>>А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.


AVK>Ничего не имею против реализации foreach средствами макросов, если удается обеспечить приемлемую производительность компилятора.


Удается. И еще удается исправлять баги допущенные создателями этого макроса. Так как од макроса намного более читабельный чем аналогичный код в "обычном" компиляторе.

Ну, что мы можем признать, что идеи макросов таки могут быть полезных хотя бы в каких-то областях?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:11
Оценка:
Здравствуйте, Lloyd, Вы писали:

VD>>А меж тем foreach пример эдакого микро-ДСЛ-я прекрасно реализуемого в виде макроса.


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


L>Можешь пояснить что ты имел в виду? Ведь DSL — это буквально "язык предметной области", он по определению не может быть более "низкоуровневым чем сущности языка".


Это опечатка. Я хотел написать "высокоуровневую".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:15
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>Это потому, что генератор создавался средствами для этого не заточенными.


AVK>Нет. Проблема именно в концепции.


Несогласен. Но спорить не о чем, так как с заявлениями (без объяснений) спорить невозможно.

VD>> Макросы поддерживать наного проще.


AVK>Проще, но не намного. Я пробовал.


Уверен, что у тебя просто не было достаточного опыта в написании макросов. Не знаю к щастью ли, или к горю, но для написания не тривиальных макросов требуется немалый опыт. Он легко получается при работе в паре с более опытным (в этом аспеке) коллегой, но самому его прийдется нарабатывать годами. Это как ОО-дизайн. Все думаю, что все в нем понимаю, но реально в нем понимают еденицы.

VD>>Не вижу почему из-за того, что иногда что-то проще сделать руками проще, надо всегда все делать руками.


AVK>Потому что на моих задачах, уж так получается, первое встречается намного чаще.


А ты не допускаешь, что ты просто в чем-то ошибался?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что меня не устраивает в МП в Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.12.08 14:22
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


VD>>Это утверждал даже не Влад, а само определение МП.


AVK>Это к IT, я спорить о терминах не буду.


Да, уж Неразумно спорить с тем что можно проверить по словарю или энциклопедии.
http://ru.wikipedia.org/wiki/Метапрограммирование

Метапрограммирование — создание программ, которые создают другие программы как результат своей работы (либо — частный случай — изменяющие или дополняющие себя во время выполнения).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.