Александр Куцко и Елена Боброва одними из первых в Беларуси освоили язык программирования Erlang для создания первого проекта компании «СофтТеко». Они рассказали о том, для чего применяют Erlang, зачем сегодня стоит его знать и почему мало настоящих специалистов.
«Один сервер с Erlang будет обслуживать полстраны»
Erlang – один из редких языков программирования – о нем нечасто говорят, с ним работает только небольшой круг специалистов. Язык создала компания Ericsson для телекоммуникационных коммутаторов, которые использовались в диспетчерских службах аэропортов в 1980-х годах.
Erlang подходил для того, чтобы организовать процессы с небольшими объемами данных, но на высокой скорости с большим количеством потоков. Язык имел большой потенциал, и поэтому с годами масштабировался и нашел новые сферы применения. Концепция Erlang позволяла применять его для мессенджеров, видеочатов, различных сервисов.
– На Erlang были написаны Open Source проекты – то есть проекты с открытым кодом. Один из создателей языка практически в одиночку написал на нем веб-сервер yaws (yet another web server) и mnesia (база данных на Erlang). И, мне кажется, именно индивидуалы и дали толчок к распространению языка.
Amazon использовал Erlang для сервиса хранения данных SimpleDB, а Yahoo! для сервиса закладок Delicious, где сохранено больше 150 миллионов закладок. Когда-то Facebook использовал его для создания сервиса чата, обрабатывающего больше чем 100 миллионов активных пользователей. На нем же была написана одна из имплементаций XMPP – eJabberd – один из самых известных продуктов, написанных на Erlang.
– Это специфический язык. Его сфера применения идеально подошла для обмена короткими сообщениями. Можно поставить один сервер с Erlang – и он будет обслуживать полстраны, – объясняет Александр. – Erlang задает программисту определенные рамки, как и любой другой язык. Поэтому «сильно накосячить» – нельзя. Например, когда есть мультипоточность в Java или .Net, нужно быть очень осторожным, а в Erlang – отсутствуют переменные, поэтому с ними нет возможности ошибиться, – рассказывает Александр.
А вот мнения о том, прост Erlang или сложен, у специалистов разошлись. Александр считает, что Erlang – сложный язык, а Елена, наоборот, считает его очень простым.
– К Erlang надо привыкнуть. Если человек начинал с языков C, Java или PHP, то будет непривычен синтаксис. К тому же, перечисленные языки – объектно-ориентированные, а Erlang – функциональный. Это принципиально другой язык со своими правилами, – говорит Елена.
– В интернете даже ходит мем про Erlang – «keep calm and let it crash» (успокойся и пусть падает – ред.). – Это значит, что даже если среди множества потоков и процессов, какие-то выйдут из строя, то все остальные все равно продолжат работать в своем режиме.
«Думал, что это старый язык 90-х, на нем уже бессмысленно что-либо писать»
К 2008 году Erlang пришел и в Беларусь. Компания «СофтТеко» делала свой первый проект – по заказу разрабатывала платежную систему. Заказчики выбрали именно этот язык, потому что один представителей заказчика (Кристиан фон Рокс), которого называли «сумрачным гением», был знаком с Erlang и предложил именно его. Концепция языка подходила оптимально: короткие транзакции, небольшие объемы данных, да и ожидалось, что пользователей будет очень много.
– Мы, конечно, не знали такого языка, – смеется Александр. – Да и сами заказчики мало, что о нем знали. Кристиан увлекался Erlang, но все же не на том уровне. Тогда мы решили связаться с одним из создателей языка Андресом Дахлином и записались к нему на консультацию. Когда я начинал узнавать об Erlang, мне казалось, что это старый язык 90-х годов, на котором уже бессмысленно что-либо писать. Но когда впервые дотронулся – понял, какой есть потенциал.
Учиться программированию на Erlang поехал Александр. Он прошел двухнедельный курс обучения. За короткое время нужно было не только понять, чем же Erlang отличается от других языков, но и научиться писать на нем и не портачить. Тогда для Erlang был только один редактор кода – Emacs. Или редактировать приходилось в блокноте.
Александр вернулся в Беларусь с базовыми навыками – и тут же стал пробовать применить их для проекта. Еще через год Александр уже вместе с Еленой поехали на вторую сессию обучения в Германию. И только после этого смогли полностью реализовать задуманное в проекте.
Тогда, в 2008 году, когда Елена только начинала заниматься этим языком, все обновления по нему можно было прочесть за 15 минут в почтовой рассылке. В русскоязычном сегменте сообщество было очень маленьким – максимум человек 50, а из Минска и вообще никого.
Проектов на Erlang было немного. Часто клиентам предлагали писать именно на нем, если концепция подходила. Команда «СофтТеко» разрабатывала систему безопасного хранилища данных пользователей, подходящую под стандарт PCI DSS", чат для поиска репетиторов и для поиска наемных рабочих, несколько видеочатов. На Erlang есть и собственный проект – внутрикорпоративный мультичат.
Мультичат начинался как защищенный чат для внутрикорпоративного общения сотрудников с подходящим функционалом. В нем сотрудник может настроить интервал для стирания сообщений, которые устарели и больше не нужны. В мультичате можно совершать звонки и есть кнопка, которая позволяла любому клиенту остановить сервер, если есть опасность для данных.
– Была идея сделать сервис, дающий возможность людям обмениваться статусами онлайн, – вспоминает Александр. – Например, если вы хотите позвонить человеку или отправить sms, можно посмотреть на статус: не говорит ли он в этот момент в кем-то еще. При этом статус должен меняться автоматически, почти мгновенно. Но есть момент, что существующий xmpp протокол устарел, есть новые, которые более быстрые и меньше весят. И xmpp протокол – не подойдет, он слишком медленный. А более современный mqtt – отлично.
– В ближайшее время будущее Erlang – все еще за чат-серверами, - уверена Елена. - Сейчас сервера понемногу совершенствуются, и у них есть шанс еще какое-то время пожить.
«Мы – Pret-a-porter, а они – Haute Couture»
С развитием таких мессенджеров, как WhatsApp, стало и заметно больше Erlang-программистов. Сейчас информация об Erlang есть на Stack Overflow. И хоть Erlang получил-таки распространение, но о нем все еще редко можно услышать.
– Если заказчик приходит со словом Erlang – значит, что это все-же не далекий от IT-мира человек, он думал и принял решение, что именно Erlang подойдет для его проекта. Но люди, которые думают о создании чего-либо на Erlang, обычно опасаются того, что разработчиков, работающих с ним, очень мало. В Беларуси таких специалистов тоже немного, зато те, что есть, всегда очень востребованы. Я постоянно вижу у некоторых компаний вакансии для Erlang-разработчиков, - объясняет Елена.
Сейчас есть IT-центры, в которых работают над распространением Erlang. Наиболее востребован он в Швеции, Нидерландах и Великобритании. В Беларуси, к сожалению, нет институтов или даже курсов, которые бы обучали Erlang. В основном разработчики осваивают его самостоятельно. И это правильно!
Разработчики на Erlang – это узкие специалисты. И именно поэтому во всем мире таким работникам готовы платить весьма неплохие деньги. Поэтому и обучение языку за границей стоит немало.
– В Швеции подход к разработке настолько отличается от нашего! У нас никто так не вчитывается и по столько раз не правит код, как там, – вспоминает Александр. – Они очень дотошные. И часто это даже напрягало: задать имя для константы – значит, потратить целый день на обсуждение в чате и проверки значений слов. И, если разрабатывать большую систему, то такая дотошность на финальном этапе – даже полезна.
Но на самом деле, увлекающимся переписыванием и совершенствованием разработчикам иногда надо сказать «Хватит!». Да, по сравнению с опытными шведами – мы дети малые, но зато мы пишем код в 15 раз быстрее, и он работает. Мы все же делаем продукты, которые будут работать, а они занимались искусством. Можно сказать, что мы – Pret-a-porter, а они – Haute Couture.
Самое классное в Erlang – это то, что для сопровождения сервера нужно всего 1-2 специалиста. Но это – ядро, которое дает работу и другим сотрудникам: разработчикам клиентов для iOS и Android, frontend-разработчикам.
Комментарии
Страницы
А ничего так стори. Дерзайте и обрящете. Эрланг, кроме того, и единица измерения. :)
Что ж автор не дал ссылок, где почитать о языке? Гуглить придётся. :)
Язык без переменных -- круто!
Но с каких это пор С стал ОО? Аккуратнее надро, аккуратнее. :)
Почитал про Эрланг. Переменные есть, но они const. Наврал автор. :)
Язык хорош для пересылок инфы. Для остального имхо малопригоден. Интерпретируемый. В Линуксе транслятор ставится на раз-два.
О, уже и минус. Читают дамы, читают! :)
За что люблю дам: у мужиков мосхи вдоль, у них -- поперёк.
Ну хоть не кол на этот раз))))
В Штатах вас бы уже судили за секстиль.
По сабжу - понимаю небольшую аутсорсинговую контору, которая выучила странный неперспективный язык, чтобы прокормиться. Но заказчика понять не могу. Зачем было выбирать это чудище? Они его учили только 2 года (!), на Пайтоне за это время уже третий мажорный релиз бы был.
Да? Имхо число потоков в пуле у Вас будет сильно ограничено.
Увы, мы так и не узнали, ск. платят. :)
Потоки ради потоков? Ну ок, нужны потоки - Java в помощь
Секстиль...
Вы хотели написать "сексизм"?
Неа. Мозги женщин дополняют мозги мужчин. Они не плохие и не хорошие, они -- другие. А в США -- да, там могут засудить.
Интересный язык. Потоки оригинально устроены - память не делят. Работают автономно. Друг в друга не вмешиваются, легче распараллелить и не запутаешься. Переменные, действительно, присваиваются один раз. Но зато их сравнивать можно с любыми значениями явно. Так это и работает. В принципе, можно оперировать неинициализированными переменными или даже целыми функциями. Много там еще всякого сахара.
Есть, своего рода, обьектный тип - atom. Что туда записывается, становится единым значением. Через atom в языке true и false реализованы. Эх! Люблю программирование! Жаль, все изучить мозгов не хватит--.
Мозгов то хватит, не хватит времени!)
Страницы