Функциональное программирование на С++

топ 100 блогов zabivator08.02.2010 Бьярн Страуструп - "Дизайн и эволюция языка С++" ==================> "Как я родил ёжика"
Андрей Александреску - "Современное проектирвоание на языке С++" ======> "Как я трахнул ёжика"

C++ - ужасный, страшный, и совершенно уродский язык.
Однако, знаете ли вы, что
* С++ шаблоны - это полноценная нетипизированная лямбда? (вы не ослышались, нетипизированная. Сами шаблоны внутри себя типов не имеют).
* На шаблонах можно построить нумералы Чёрча
* На шаблонах выполняются три типа редукции
* Инстанцирование шаблона - это редукция терма в нормальную форму
* Шаблоны С++ - полноценный glue language для метапрограммирования, прозрачно проинтегрированный с самим С++ (lisp проинтегрирован лучше, template haskell - хуже)
* Язык шаблонов тьюринг-полон, и программы на нём написанные выполняются на этапе компиляции

В целом, однозначно, я не видел настолько мощного языка для обобщенного программирования, метапрограммирования.
В ocaml не хватает параметрического полиморфизма, в lisp типизации (в С++ нетипизированная лямбда внутри шаблонов, но типизированный результирующий код. Уникальный feature, нигде больше такого не видел), а в haskell - простоты.
Да, вы не ослышались, шаблоны С++ и язык на их базе очень прост.
Как-нибудь напишу примерчики и маленький туториал
Теперь ложка дёгтя

* Очень медленно компилируется и требуется прорву оперативной памяти для компиляции. Фактически, имеет экпонециальную зависимость оперативной памяти потребляемой компилятором и размер объектных файлов от размера кода.
* Замангленные в Си имена ужасно нечитаемы
* Не имеет внятной и удобной стратегии обработки ошибок метапрограмм
* Не имеет удобного отладчика
* Совершенно ублюдский, многословный, неочевидный синтаксис

Знакомиться just for fun - обязательно. Я уверен, что у шаблонов C++ есть чему поучиться программистам на всех языках.
Книги для чтения
Функциональное программирование на С++ Функциональное программирование на С++ Boost.MPL - metaprogramming library

Оставить комментарий

Архив записей в блогах:
В 1914 – 1916 гг. Соединённые Штаты оставались нейтральной державой, хотя симпатий к Антанте здесь в целом было больше, чем к Центральным державам. Во-первых, коммерческие сделки с Союзниками были куда масштабнее, чем со странами Центрального блока. Во-вторых, британцы вели ...
...
...
Хочу вам показать настоящих мужчин. Они хороши, как герои советских фильмов. Они без видимых усилий перетаскивают тяжести Умеют отлично готовить в любых условиях И сами моют за собой посуду (из ранцевого лесного огнетушителя) В глухой тайге без всяких ...
Петербургский привет на Патриарших. Вспомнился весенний Васильевский остров и замечательный Мюнхель... А в нём - она. Корюшка. Был апрель, проклёвывались крокусы в Летнем саду. Мы всегда наезжали в Питер весной. Так получалось. Гуляли, пили-ели, слушали джаз. Такое вот деж ...