Здравствуйте, VladD2, Вы писали:
VD>В чем разница? А, то у меня уже лет 7 стойкое ощущение, что люди упорно не хотят учиться на чужом опыте, а тупо годами собирают шишки лбами, чтобы найти те же самые решения самостоятельно.
У нас там недоразумение мелкое получилось.
Ziaw говорил про "в шарп добавляют фишки, которые 100 лет как в N", я — про "в шарпе не будет части фишек N из-за заточенности на мейнстрим и из-за того, что поздняк метаться". Разные вещи короче обсуждали
VD>Поверь нашему опыту. В тебе говорят предубеждения причина которых отсутствие опыта.
Опыт был, приходилось наблюдать проект с использованием самописных DSL и чего-то типа макросов на комментариях в коде. Про то, как эти "макросы" прикручены были не будем — там страх и боль

Но нас сейчас не это интересует, один фиг с точки зрения пользователей разницы никакой.
Так вот, с DSL всё было оччень зашибись — поддерживалось, записывалось и читалось понятнее, чем в коде, тут полностью за. С "макросами" было столько проблем, что день когда их наконец выпилили был праздником у всей команды.
Проблемы были не технического характера, тем более что ошибиться с чем-то типа
/*@DTO@*/
class A { public int B { get; set; } } // INotifyPropertyChanged + IEquatable + ещё какие-то свои интерфейсы
или с
void Do(string b, SomeType b)
{
/*@ValidateArgs@*/
// real code
}
было сложно. Засада была в другом:
1. Ошибка была в том, что "макросы" добавлялись по всему проекту целиком. Если кто-то добавлял макрос для своей локальной задачи — он рано или поздно использовался не по назначения кам-то ещё, при изменении макроса всё сыпалось. И хорошо ещё, если при компиляции.
2. Макросы в том виде, что были — были добавлены абсолютно зря (точнее, как я понял, они достались в наследство от какого-то легаси-проекта то ли на плюсах, то ли на простом C). В реальности не было ни одного случая, когда то же самое не решалось бы разметкой атрибутами и реврайтерами. Зато примеров использования макросов просто потому, что можно — было выше крыши. Часть вещей, которая элементарно решалась средствами шарпа была сделана на макросах, в результате макросы регулярно расползались по соседним проектам.
там были ещё проблемы, но по сравнению с первыми двумя они были совсем мелочью.
VD>Ну, и твои подозрения, что расширения синтаксиса это что-то сложное, страшное и опасное ничем не отличаются от подозрений оп поводу того, что "var" сделает код программ нечитабельным.
Чтоб не спорить впустую — можешь привести реальный полезный пример расширения синтаксиса?
Потому что для AOP я с ходу десяток примеров приведу, для расширения синтаксиса — только мелочёвка типа счётчика в foreach или foreach ... else. Ну несерьёзно это
VD>Дело в том что 100% МП — это в том или ином роде создание ДСЛ-ей. Ограничивая язык фиксированным синтаксисом мы вынуждаем авторов реинтерпретировать синтаксис. Это ни разу не делает получаемые ДСЛ более понятными. Наоборот, это делает код сложнее и отвращает людей от использования языка.
Не, вот как раз насчёт DSL по делу — я всегда за. А вот попытка скрестить ужеежа и запихнуть расширения синтаксиса туда, где они особо не нужны — ничего кроме скептицизма не вызывает
VD>медленность этого процесса обусловлена медленностью эволюции сознания пользователей языка. Я только добавлю, что дело не только в пользователях, но и авторах. Эволюция их сознания так же тормозит процесс.
"У любой сложной проблемы всегда есть простое неправильное объяснение"
Другой планеты у нас нет, поэтому или делаем то, что действительно полезно для _большинства_ пользователей, или фейлимся, или получаем очень классный, но очень узкоспециализированный язык. Других вариантов я что-то не видел