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