Здравствуйте, WolfHound, Вы писали:
WH>Причем С++ чем дальше тем больше превращается в огромного жутика обвешанного всякой фигней... и это при том что комитетчики придерживаются принципа зачем вводить в язык то что реализуется библиотекой? Вот только что-то у них это не получается... За то получается у авторов Nemerle за что им большой респект. Там половина языка (а может и больше) в библиотеке... С++у такое и не снилось. И не приснится уже никгда... ибо этот титаник на глиняном айсберге рушится под собственным весом.
А ведь чертовски верно замечено! Нэмерел действительно воплощает в жизть этот самый принцип. Ведь по сути базовая часть языка очень мала.
Что есть Нэмерле?
Поддержка:
*
ООП — класс, перечисления, варианты, методы, свойства, поля.
*
Обобщенного программирования — параметризация типов и функций (т.е. дженерики).
*
Функциональных вычислений — вложенных функции, константы, рекурсия и оператор match, вычисления выражений (арифметика, битовые операции, вызов функций).
*
Императивного программирования —
переменные (локальные и поля). И это все что нужно для поддержки ИП!!!
.
*
Метапрограммирования — макросы (в том числе переопределение синтаксиса и операторов), квази-цитирование, AST, средства получения метаинформации о элементах AST.
Все остальное — надстройка над этими основопологающими фичами! Может какую мелочь я пропустил, но сути дела это не меняет. Блин, мыслимо ли это, но даже операторы &&/|| являются макросами.
База языка очень мала. С++ и темболее C# просто монстры по сравнению с этим языков. Но стройная и сбалансированная модель в купе с продуманной системой расширения зыка приводят к тому, что по расширяемости ему нет равных среди статически типизированных языков.
И при этом, что
очень важно, ненужны никакие компромисы.
Когда я слышу про невероятную расширяемость С++ мне становится смешно. Я не видел ни одного безпроблемного расширения С++. Взять те же кортежи. Целое море обвязки, но краткого и удобного синтаксиса добиться так и не удается. А если вспомнить, о том, что почти все рсширения на шаблонах, а те очень часто приводят к жудчайшим сообщениям об ошибках, то становится очень грусно.
Сложность и противоричивось С++ так высока, что даже мегакорпорации не в силах создать полноценных компиляторов не говоря уже о средствах интелисенса и рефакторинга. Между тем Нэмерле превосходя С++ почти по всем параметрам прост до безобразия и его реализация сделана тремя студентами в качестве курсовой.
Объем всех (!) файлов из каталога ncc (компилятора Нэмерла) составляет ~2.4 мегабайта! И это при том, что среди них не малую долю занимает код тестов (без него код компилятора составляет 1.5 мега.).
Код всех макросов (в том числе if/else, while, for, foreach, ..., printf, ... занимает ~177 килобайт!
Сравним это с бустом. Сколько там занимают эти костыли? А ведь и без них компилятор С++ — это море кода!
Подытожу...
Нэмерле язык несомненно более выразительный чем C++ и C#, такой же безопасный как C# в safe-режиме, почти столь же просой как С, лучше поддающийся расширению чем С++.
Короче С++ точно идет неверным путем. База азложенная в С++ явно неверна. Чтобы выполнить принцип "зачем вводить в язык то что реализуется библиотекой" нужно разрабатывать язык так, чтобы он в первую очередь имел средства создания тех самых библиотек. Причем безкомпромисные.
Блин, ему бы коммерческое воплощение и вопрос мэйстрим-языка на ближайшие 10 лет был бы закрыт.
... << RSDN@Home 1.2.0 alpha rev. 637>>