
Я не застал того смешного момента, когда от программирования в кодах люди переходили на ассемблер. Ну в смысле, в кодах-то я и сам валял немало; и восхищался системой ИС-2, автор М.Р.Шура-Бура; все это в удовольствие. Но драмы не застал, чтобы пищали - "этот ваш ассемблер только лишняя трата времени".
Зато с ассемблера на фортран - это да. Это стоял вопль. Фортран неэффективен. У него там неизвестно какой код получается, а я хочу контролировать код. Толпы идиотов, которые не в состоянии были освоить несколько нехитрых операторов да строку формата (на все уходит пара часов на кухне, проверено) возмущались плохим языком. На самом деле фортран компилируется линейно, и манипуляция скомпилированным годов в рантайме была одно время моим любимым занятием, много чего достигли. И функциональные трюки, и кеширование состояния всей программы, много чего такого.
На кобол никто никогда не жаловался почему-то, что он неэффективный. На алгол тоже. И на бейсик.
Потом вдруг появилось структурное программирование. Идея была такая, что надо писать маленькие програмки и по определенным рулесам, в частности, goto нельзя использовать. Почему - знал один Дийкстра. И выход из функции должен быть только один. Одновременное отсутствие goto и выхода в середине давало определенные неудобства - ну а как вообще программировать-то? Между прочим, в те поры не только выход из функции мог быть не один, но и вход не один. В фортране на БЭСМ 6 запросто в одну функцию можно было зайти несколькими способами. А можно было еще сопрограммы рисовать, и пусть они к друг другу ходят в гости, как нынче актеры в Эрланге.
Постепенно все насобачились рисовать структурно, никто уже в здравом уме не рисовал огромные лабиринты, все чики-чики, асу и асутп.
Потом появился уютненький си, на нем тоже все структурно. Даже структуры были.
И вдруг бац, си++ и объектно-ориентированное программирование. Инкапсуляция, полиморфизм, народность. Если ты эту молитву не скажешь, тебя и на работу не возьмут. Причем, что любопытно, что такое полиморфизм, не знали ни отвечающие, ни спрашивающие. Ну то есть за полиморфизм канал ад-хок полиморфизм, а параметрический полиморфизм назывался "эти дурацкие темплейты" или "ненавижу дженерики".
Я пропустил внедрение джавы, кстати. Оно сопровождалось тектоническими явлениями. Неэффективна же джава. Она же интерпретируемая, вроде бейсика. На ней ничего путного не напишешь. Квалифицированные программисты пишут на плюсах. До сих пор эта вера распространена.
ООП завоевало мир с выходом книжки Банды Четырех - "Дизайн Паттерны" ("Шаблоны Проектирования"). После этого все, абстрактная фабрика декораторов фасада была обязательна для каждой веб-апликации, для каждой джава-фасолинки, которых было сначала два типа, потом стало три, умножить на три версии - все это торжествовало и цвело в Бангалорах. Но в Шанхае по-прежнему писали на плюсах.
А потом что-то людей интересующихся подзаебали все эти хибернейты, спринги, депенденси-инджекшены, персистенсы, адаптеры, патерны, блаблабла.
Короче, фп вылез из ниши для особо одаренных, и полез во все щели в промышленное программирование. Какой-нибудь придурок с тремя классами со степенью бакалавра из Стэнфорда, и с единственным языком джавой, ничтоже сумняшеся пишет слово "функтор", понятия не имея, что это такое; бог джаваскрипщиков говорит слово "монада", путая оную с гонадой; и вся почтенная публика (а программистов нынче миллионов десять-двадцать по белу свету, небось) в полном смущении.
Причем функторы и монады - это уже вторая волна фп. Первая волна - "не держите переменных" и "никаких сайд-эффектов, кроме логгинга", и везде суйте мапы и фильтры. Я даже в гугле умудрялся одно время тыкать везде мапы и фильтры, в джаве, пока не понял, что это бред. Не мапы бред, а делать это в джаве бред.
Но народ возмущен, и требует разъяснений. Потому что пользы же от фп никакой; а уж от монад тем более. И тем более, что монады не панацея. мемкеш - панацея, а монады не панацея, монады придумали те, кто программировать эффективно не умеет.
Ну я так думаю, пройдет лет десять, и монады будут примерно тем же, что и ооп; при приеме на работу будут просить выразить флатмап через флат и мап и спрашивать, чем отличается ковариантный функтор от контравариантного.
А баки заливать будут линейной и темпоральной логикой. От последней у меня уже уши вянут, т.к. ее математически гораздо проще выразить через топосы - но меня тут поправят, мол, нахуй топосы, претопосов достаточно. А тут еще НоТТ где-то болтается сверху; казалось бы, учиться, учиться, и еще раз учиться программизму настоящим образом, цитируя Леннона.
Жизнь продолжается.