Re: Почему у Nemerle нет будущего
От: CopyPaste  
Дата: 04.08.06 18:32
Оценка: 3 (1)
Здравствуйте, lastochkin, Вы писали:

L>В основе проблем лежат:

L>1) Преувеличение мыслительных способностей программистов, а и людей вообще. В реальности они довольно ограничены.

Так почему вообще кто-то должен рассчитывать на ограниченных? Только то, что ограниченные обезьянки стоят дёшево ещё не делает категорическим императивом требование угождать обезьянкам. Есть (и прекрасно себя зарекомендовали) бизнес-модели, построенные на привлечении самых лучших и самых дорогостоящих кадров. Да, в программировании это пока что редкость, но в других отраслях (например, у банкиров) это норма. Так почему, с какой такой радости IT-индустрия перед обезьянками обязана "ку" делать?!?

L>2) Преувеличение роли логического, рационального мышления. Человек мысли иррационально, эмоционально (увы и ах).


И метапрограммирование этому способу мышления очень даже способствует, между прочим.

L>3) Ошибочная посылка: язык программирования служит общения к компьютером. При современном развитии вычислительных сред, язык программирования служит прежде всего для накопления знаний и общения между разработчиками.


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

L>Подробно о проблемах:

L> Ответ: да, выучат, если захотят учить язык с "предательским" (эмоциональная реакция!) синтаксисом, но удовольствия не получат (опять эмоции, но на них держится мир).

Тогда и синтаксис C# после Жабки — "предательство".

L>2) Программистам не хватает не "мощности", которую вполне можно упаковать в библиотеки и API,


НЕЛЬЗЯ. Невозможно СЕМАНТИЧЕСКУЮ сложность засунуть в API. Принципиально!!!


L> Простота и лаконичность — вот чего ждут разработчики.


И как её без метапрограммирования добиться?


L>3) Метапрограммирование очень существенно усложняет понимание кода человеком, в виду ограниченности мыслительных возможностей последнего (причем подвижек с этим в обозримом будущем не ожидается).


Чушь. Метапрограммирование, употреблённое к месту, позволяет очень легко разделить степени минимально допустимого понимания. Прикладник будет читать и понимать терминологию и семантику своей предметной области, и плевать ему на то, как оно внутри сделано. Разработчик DSL-ей будет читать код макросов и понимать всякие там оптимизации, не зная ни шиша о предметной области (ни его это дело). Программист системного уровня будет думать про файлики с сокетами, и плевать ему на DSL-ы и на предметную область и тем более на всякие там GUI.

L> И это очень серьезная причина ограничивать использование средств метапрограммирования, не смотря на их потенциальную силу, не зря в современных успешных языках (C++, C# 2.0) оно сведено к минимуму (generic-и), а то и вовсе отсутствует (Java).


Только вот жабистый мир так по метапрограммированию истосковался, что порождает таких уродцев, как Hibernate. А многие носятся с аспектно-ориентированным программированием, с контрактами и прочими смешными частностями.

L> А ведь мир видал препроцессоры куда круче Nemerle-вского, в PL/I язык препроцессора по мощи не многим уступал самому целевому языку. Похоже, использование generic-ов (причем без typedef!) и Reflection вполне достаточная доза метапрограммирования в современных языках.


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

L>4) Язык реализующий несколько парадигм (процедурная, функциональная, декларативная) видимо предполагает их интенсивное совместное использование, что опять таки является непосильной (увы) нагрузкой для программиста.


Не программиста, а обезьянку. Обезьянок надо уволить и никогда больше на них не рассчитывать. Пусть улицы подметают. Бизнес-модель "шапками нах закидаем!" пора отправить на помойку истории.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.