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

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

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

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

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

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

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

Архив записей в блогах:
Друзья мои! Благодарю вас за то, что вы есть. Человеческие взаимоотношения - это самое дорогое, что у нас есть в этом мире. Ни деньги, ни власть не могут обеспечить искренней дружбы. Скорее наоборот. Благодарю вас за ту неоценимую помощь в моем развитии, которую вы мне ...
Музыка Д. Покрасса Слова П. Германа Все равно, года проходят чередою, И становится короче жизни путь, Не пора ли мне с измученной душою На минуточку прилечь и отдохнуть. ...
Нашему ребенку 3 месяца. И, думаю, любой поймет, что весь мир крутится и подстраивается сейчас под малыша, под его режим, и я в первую очередь завишу от его графика. У мужа график работы нестабильный, то ему надо в 7 утра встать, а то до обеда работы нет и можно валяться до 11. Он ...
В очередной раз напоминаю, что по тэгу «е-буки» я пощу книги, найденные в И-нете, которые сам не читал (в противных случаях я предупреждаю в тексте), а кое-какие читать и не собираюсь. Но что-то мне подсказывает (иногда и ошибочно, да), что эти книги кому-то могут быть интересны и ...
К огромному сожалению совсем недавно мне пришлось обратиться к нашим врачам. Результат меня мягко говоря разочаровал. Как мне кажется наша медицина не меняется, нам упорно говорят по радио и телевизору, как все хорошо, а в итоге все остается на прежнем уровне, а то и хуже. Сами врачи ...