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

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

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

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

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

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

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

Архив записей в блогах:
Сегодня каждая организация использует в своей работе информационные технологии. Причиной тому является значительное повышение производительности и доходов компании, сокращение времени выпуска продукции и уменьшение штата сотрудников. Снижение расходов на оплату труда и рисков возник ...
На Донбассе продолжают рваться снаряды и гибнут люди. Бандеровская хунта подтягивает новые силы, для того чтобы совершить очередное крупное наступление на тех, кто не принял преступной власти. Минские соглашения, которые должны направить процесс урегулирования отношений между Украино ...
...
Здравствуйте уважаемые. Бывают такие люди, которые всем известны вроде как, но это не совсем так. Известны могут быть имя и фамилия, даты рождения и смерти и общие данные об определенном человеке, но без конкретики. А эта самая конкретика может быть очень и очень интересна :-) Вот, к ...
Новое исследование об извержении Везувия, которое погубило жителей Помпей и Геркуланума в 79 году н.э., указывает, что некоторые жертвы погибли гораздо более ужасной смертью, чем считалось прежде, пишет ABC . Результаты исследования опубликованы в научном издании PLOS One, провели его ...