Про функциональное программирование



Казалось, бы, вот map. Нет в нём никакой магии. Ну очевидная же вещь. Чего про неё говорить-то? Как работает — понятно, где использовать тоже ясно, преимущества самоочевидны. Тоже мне, открыли Америку.



Моё сердечко давно и плотно украдено шарпом и в нём есть ряд отличных функциональных фич. Да, это не скалка и не тайпскрипт с его keyof. Но кое-что есть. Система типов относительно мощная, из коробки имеем LINQ, можно поставить всяких вкусностей из NuGet-а. Кроме шуток, в шарпей функциональные приблуды впаяны весьма элегантно и иногда могут снизить количество боли, если знать и уметь.



Но люди блджд не знают и не умеют! Даже на шарпее, во вполне себе в реальных проектах я регулярно вижу foreach с list-ом, как в старые-добрые. Ну напиши ты блин Select (это шарповый map)! Выйдет в 3 раза короче, а иногда и по перфомансу будет лучше. Но нет. Мидл среднего пошиба не видит где можно воткнуть два filter-а и один map и продолжает, продолжает остервенело херачить форич-иф-нот-наллы. Хотя, казалось бы, лайтовая функциональщана уже давно входит в базовый джентельменский набор любого уважающего себя шарписта.



Теперь перейдём на другую сторону баррикад.



Послушники церкви святого map-а безумны. Свой нехитрый, тащемта, матан с мапами/редьюсами, замыканиями и каррированиями они преподносят как сакральное знание, доступное только избранным. И стоит только пересесть на хачкель, как чакры очистятся, геморрой рассосётся, говнокод из проекта уйдёт и можно увольнять отдел QA, потому что все баги будет отлавливать компилятор. Помимо этого необходимо дважды в день молиться иконе Ричарда Хикки и никогда-никогда не говорить что монада — это контейнер.



Возможно я сейчас расстрою пылких юнош со взором горящим, но я уверен, что любой честный сениор/архитект в курсе основных понятий ФП. Для этого не обязательно использовать специальные языки и изучать теорию категорий — достаточно просто на пару минут включить голову. Но если включить голову, то быстро понимаешь, что все эти навороты, конечно, хороши местами, но существенно картины не делают и как-то радикально жизнь не упрощают. Особенно в повседневных реалиях кровавого тырпрайза. Серебряных пуль вообще не бывает, если вы не знали.



Но хомячков, экзальтированных умными книжками не остановить. За всё время наблюдения за оными я понял, что писать работающие приложения — это вообще не главное в функциональном мире. Главное — городить оверинжениренные конструкции в любимой парадигме, с упоением обсуждать их с товарищами на птичьем языке и одухотворённо поучать каждого, кто не вхож в тусовочку.



Короче, получается так: по левую руку у нас горе-мидлы, которые ФП недооценивают, а по правую руку — сумасшедшие фанатики, которые ФП переоценивают.



И где-то посередине стою я и бомблю что от одних, что от других, но кому какое дело?



Такие дела.