Здравствуйте, alex_public, Вы писали:
_>Речь о другом. В этой статье обсуждаются действительно высокоуровневые вещи, определяющие архитектуру ПО. Для большинства языков (как императивных, так и функциональных) эти вещи не имеют прямого выражения в структурах языка, а существуют сами по себе. Так вот, если для императивных языков эта область имеет громадное количество готовых концепций, специализированных инструментов и т.п., то для функциональных автор сумел наскрести 1,5 известных концепции и 0 готовых инструментов. Собственно большую часть статьи автор и пытается придумать чем ему заменить в функциональном языке все эти известные и хорошо работающие вещи из мира императивных языков.
То есть, ты хочешь уровень привязать к инструментам ? Эдак окажется, что машинный код это самый высокоуровневй язык, потому что для него наверное пару миллионов инструментов, ну вот например декомпилер, линкер и тд и тд.
_>Т.е. если смотреть с самого верха, то программирование и на чистом C++ и на чистом Haskell'е весьма низкоуровневое.
Из этого не следует, что у этих языков один и тот же уровень или хотя бы уровни близкие.
>Однако, если под нашу конкретную задачу, существует готовый мощный фреймворк, то тогда программирование может резко стать очень высокоуровневым и на C++ и на Haskell'e. Хотя при таких раскладах это уже становится скорее программированием именно на этом фреймворке (как на неком неформализированном DSL). Т.е. в общем то ситуация равная, с поправкой на то, что для мира императивных языков подобных вещей существует на порядки больше и существуют специальные концепции и инструменты для их удобного построения.
В общем случае если мы сделаем АПИ для этого фремворка в разных языках, внезапно, будет разница в том, что как эффективно использовать и где за каким деталями придется следить.
Вот в С++ ты точно не сможешь избавиться от указателей, инстанцирований, деклараций шаблонов, указания типов и тд и тд и тд
А в Хаскеле — запросто.
_>Ну и есть языки, в которых данные вопросы решены уже на уровне самого языка. Это чаще всего всяческие специализированные DSL'и. Вот они и являются максимально высокоуровневыми, правда практически всегда это достигается резким сокращением универсальности.
DSL как правило это небольшая, очень узкая область математики