Удивительно положительное чувство овладевает человеком, когда он узнает что-то по настоящему новое.
Оно ещё более положительно когда человек не только узнаёт а ещё и осознаёт то, что узнал.
Вот я на самом деле программист так себе, пишу себе свой быдлокод на с++. Чаще всего делаю всякое формоклепательство на кутях, и иногда экспериментирую с shared_ptr. Но как и любой другой программист иногда смотрю на всякие другие языки типа паскаля, питона, ады, йавы. Пытаюсь понять их фишки там всякие, сильные с слабые стороны. А всё для чего? Ну что бы вроде как гибче мыслить, знать подходы там всякие.
И вот дошла очередь до этих самой функциональщины. Читал я про лисп, читал. Не понял в чём фишка, забросил. Через некоторое время опять почитал - всё равно не понял. Со схемой там игрался, с ракетой - фигня какая-то.
Но эрланг - это фантастика. Как можно писать на языке с только лишь константными переменными? А как же циклы? А ооп? Ну ооп ладно уж, ада вон тоже без ооп и ничего, хороший язык. Но некое чувство непонятности, как же на нём писать остаётся. Как же без переменных то? Рекурсия? А ну эта, которая стек в сях переполняет со временем? Знаем, знаем. Значит тоже фигня и ничего особенного? Ан нет!
Вот значит прочитал я про tail recursion optimisation и призадумался. Попробовал представить, как это на сях сделать, но остановился, и это хорошо.
Tail recursion с аккумуляторами разорвал мой мозг. Возможности языка стали казаться безграничными, спп и иже с ним - жалким подобием яп.
Лямбды - так, слегка. Удобно, коротко, но не впечатляет.
Сегодня добрался до идеи рекурсивного вызова этой самой лямбды - и опять. Комбинаторы, ф-ия одного аргумента принимает аргументом ф-ию трёх аргументов и возвращает другую ф-ию одного аргумента. Да ещё и аргументы у них тоже ф-ии.
После того, как я это всё переварил в башке - мозг окончательно расплавлен. Но не скрою - в этом есть какое-то ощущение просветления.
И это епик вин, товарищи. Я определённо фанатею от этих штук, хотя и понимаю, что в ФП я в общем-то нуб.
Собственно вопрос такой: как после того, как твой мозг окончательно разломали продолжать писать на этом убогом с++? Как дальше жить и что дальше делать? Пытаться ли писать на с++ в ФП стиле? Но это же издевательство надо коллегами, никто из них же ничего не поймёт. А главное бонусов же за это реально не будет ни с т.з. производительности, ни с т.з. количества кода. Или я ошибаюсь? Может кто-то поделится историей успеха?
Спасибо.