2014-08-05

Functional thinking

После активной работы с groovy, остро стало не хватать теоретической базы ФП. Набрел на этот четырехчасовой видеокурс. Neal Ford на примере Groovy, Clojure и Scala показывает отличие подходов от Java - ООП. Главная идея, проходящая через всю книгу: OO makes code understandable by encapsulating moving parts. FP makes code understandable by minimizing moving parts. В его примерах объем кода сокращается в разы. Два главных примера, на которых идет рассмотрение - это факторизация числа и поиск совершенных чисел.

Neal упомянул одну из проблем, которая меня смущала - нет устоявшейся терминологии и каждый язык называет базовые функции по своему: fold, inject, reduce. Базовых примитивов оказалось не много: map, fold, filter. Почти все в видео я уже знал и применял, из известного, но не применяемого интересная оптимизация - memoize.

Упоминул автор и про Blub Paradox: для меня это выглядит как совершенная невозможность заниматься отладкой кода.

Итог: будет интересно как введение в ФП. На очереди, судя по всему, курить теоркат.