Лев Валкин про ФП и Erlang
Вчера ходили с @vseloved и @matveym на выступление Льва Валкина про функциональное программирование в целом и Erlang в частности. Кратко запишу основные тезисы, которые мне очень актуальны.
Новый набор инженерных принципов, непривычных для императивных языков
Функциональные языки дают возможность поработать с другими способами построения программных систем. Эти новые способы позволяют писать лучше даже на императивных языках. Это очень важный для меня тезис. Я немного поработал с Эрлангом, когда мы работали над Рисоваськой, теперь по совету Льва я изучу Haskell.
Язык для командной работы
Лев начинал писать Echo на perl, но когда проект дорос до размеров, требующих согласованных усилий команды разработчиков, то пришлось выбирать другой язык.
Примерная цитата - “Инженер может реализовать на любом языке любую задачу, которая помещается в его голову”. А вот для командной работы нужно уже что-то выбирать подходящее под задачу и команду.
Почему Erlang:
Быстрое ревью и лучшая вкуриваемость кода
(“вкуриваемость” - термин, предложенный кем-то из команды Echo)
Обычно фичи реализуются меньшим числом строк кода (чем на C++/Java/php). Отсутствие деструктивного присваивания позволяет игнорировать целые блоки кода, зная что переменные (которые скорее “постоянные”) в них не изменятся. Разный интерфейс для межмодульного (передача сообщений) и внутримодульного (вызов функций) взаимодействия тоже помогает.
Устойчивость к случайным ошибкам
От необработанного исключения упадет только процесс, в котором оно возникло.
Интроспекция и hot reload
Когда на нагруженном сервере возникают редкие ошибки (например, падает каждый 10000-й запрос), то можно подключиться к работающей ноде и посмотреть что там реально происходит без остановки работы всей системы. Можно добавить логгирование в нужные точки и обновить код на лету (hot reload).
Особенности
- Не подходит для программирования математических задач и UI.
- Erlang в 10 раз медленнее С. Узкие места они реализуют на OCaml (командой) или на C (только Лев).
А сегодня Лев рассказывает про стартапы, бизнес и Силиконовую долину.