Лев Валкин про ФП и Erlang

Вчера ходили с @vseloved и @matveym на выступление Льва Валкина про функциональное программирование в целом и Erlang в частности. Кратко запишу основные тезисы, которые мне очень актуальны.

Новый набор инженерных принципов, непривычных для императивных языков

Функциональные языки дают возможность поработать с другими способами построения программных систем. Эти новые способы позволяют писать лучше даже на императивных языках. Это очень важный для меня тезис. Я немного поработал с Эрлангом, когда мы работали над Рисоваськой, теперь по совету Льва я изучу Haskell.

Язык для командной работы

Лев начинал писать Echo на perl, но когда проект дорос до размеров, требующих согласованных усилий команды разработчиков, то пришлось выбирать другой язык.

Примерная цитата - “Инженер может реализовать на любом языке любую задачу, которая помещается в его голову”. А вот для командной работы нужно уже что-то выбирать подходящее под задачу и команду.

Почему Erlang:

Быстрое ревью и лучшая вкуриваемость кода

(“вкуриваемость” - термин, предложенный кем-то из команды Echo)

Обычно фичи реализуются меньшим числом строк кода (чем на C++/Java/php). Отсутствие деструктивного присваивания позволяет игнорировать целые блоки кода, зная что переменные (которые скорее “постоянные”) в них не изменятся. Разный интерфейс для межмодульного (передача сообщений) и внутримодульного (вызов функций) взаимодействия тоже помогает.

Устойчивость к случайным ошибкам

От необработанного исключения упадет только процесс, в котором оно возникло.

Интроспекция и hot reload

Когда на нагруженном сервере возникают редкие ошибки (например, падает каждый 10000-й запрос), то можно подключиться к работающей ноде и посмотреть что там реально происходит без остановки работы всей системы. Можно добавить логгирование в нужные точки и обновить код на лету (hot reload).

Особенности

А сегодня Лев рассказывает про стартапы, бизнес и Силиконовую долину.

comments powered by Disqus