Говорят, что для продуктивной работы знать теорию категорий и теорию типов не нужно, а порой даже вредно — причем даже если пишете на хаскеле, где половина стандартной библиотеки щеголяет терминами из теорката. Клепать опердени, перекладывая джейсоны из кафки в постгрю, можно без малейшего понимания, чем является левое сопряжение к забывающему функтору.
Но при этом знание таких вещей радикальным образом расширяет не только кругозор, но и позволяет придумывать новые очень крутые вещи. Например, есть такая конструкция как селективный
(выбирающий?) функтор (selective functor) — «подумаешь, еще одна абстрактная хрень, кому она нужна», всё такое. Но, взяв эти функторы за основу, была написана очень изящная библиотека Parsley, о которой
ее автор рассказывал на недавнем MuniHac. Или знание о симметричных моноидальных категориях позволило Олегу Нижникову
сделать библиотеку Volga, которая позволяет упростить построение и оптимизацию вычислений в распределенных системах.
С другой стороны — в самом начале теоркат и правда больше вреден, чем полезен. Есть большой соблазн начать сыпать терминологией и концепциями без соотнесения их с реальностью, контекстом и вычислительными ограничениями. Я считаю, что не знаю теорию категорий хоть сколь-нибудь вменяемо, поэтому очень аккуратно стараюсь притягивать рассуждения из нее в обыденное программирование, но даже те знания, что есть, помогают в голове выстраивать более цельную картину и видеть новые связи.
Значит ли это, что всем поголовно надо начать заниматься математикой? Да ни в коем случае. У каждого свой путь и свои подходы, которые заставляют понимание «щелкнуть». Но я надеюсь, что примеры выше еще раз покажут, что насмехаться над «академиками в башнях из слоновой кости», по меньшей мере, неразумно.