Познавательно. Правда, там везде требуются эрланг-гуру с опытом, а где бы его взять? Есть ли в москвопитере конторы, которые берут начинающих эрлангщиков?
Был бы другой язык, я бы склепал какой-нибудь опенсорц-велосипед, глядишь, и освоился бы, а на эрланге что склепаешь? Очень уж он специфический.
> ну если ejabberd склепали то и других полезных задач можно придумать массу.
Сначала придумай, потом говори. Во всех задачах, не связанных с поддержкой 10000 соединений, любой питон эрлангу даст сто очков вперёд. А кому нужно держать много сессий, кроме жаббер-сервера?
Вот один чудик пишет свой erlyweb, а в чём профит? Я ещё понимаю, он бы там для каждой HTTPшной сессии имел бы отдельный эрланговский процесс и т. д. - но фиг, получились у мужика те же рельсы, только хуже. Ну и зачем тогда ему эрланг?
Это так, требуются специалисты.. А опыт, как известно, приобретаем..
Про москвопитер и начинающих изучение erlang ничего определённого сказать не могу, но сильно сомневаюсь, что это сильно там распространено.
Да, он достаточно специфичен, но возможностей для его использования в OS более, чем достаточно. Так что, это вполне себе здравая мысль, с чего можно было бы начать для приобретения опыта.
> Сначала придумай, потом говори. Во всех задачах, не связанных с поддержкой 10000 соединений, любой питон эрлангу даст сто очков вперёд. А кому нужно держать много сессий, кроме жаббер-сервера?
hint: нагруженный сервер обработки запросов. например HTTP. и 10k - это практически детский лепет. счёт начинается со 100k одновременных сессий и трафике 10k+ запросов/сек.
> Вот один чудик пишет свой erlyweb, а в чём профит? Я ещё понимаю, он бы там для каждой HTTPшной сессии имел бы отдельный эрланговский процесс и т. д. - но фиг, получились у мужика те же рельсы, только хуже. Ну и зачем тогда ему эрланг?
> Но, без каких-либо навыков, начинающий специфику всё равно не осилит..
anyway предполагается, что человек всё-таки *сперва* познаёт базу/основы в виде C/системы/сетей/все-все-все и уж потом будучи хорошо подготовленным и имея за плечами приличный опыт занимается чем-то из разряда Erlang. в противном случае IMHO ему будет сложно оценить истинное предназначение этого инструмента. это примерно как пытаться научиться играть на арфе не освоив перед этим барабан.
> Задачи, для которых он разрабатывался, в "обычной" жизни не встречаются. Ну или назови Топ5 :)
Линейный рост производительности, "изкоробки", с увеличением кол-ва ядер, делает Erlang более специфичным? =) Зашел недавно в магазин и не заметил ни одного компьютера с одноядерным процессором. Что делать?!
Работа на нём есть, людей нет. Вообще, не в языке дело, а в программисте, ерланг осваивается толковым человеком за две недели. Так что учи в первую очередь программирование и становись нормальным человеком (если ты так называемый гик или ботаник), а ерланг, хаскель, или что там ещё - неважно, это приходящее.
> Работа на нём есть, людей нет. Вообще, не в языке дело, а в программисте, ерланг осваивается толковым человеком за две недели. Так что учи в первую очередь программирование и становись нормальным человеком (если ты так называемый гик или ботаник), а ерланг, хаскель, или что там ещё - неважно, это приходящее.
нет, ну не за две недели конечно, но в принципе learning curve действительно не столь крива и велика, как может показаться на первый взгляд. вопрос лишь в том, чтобы у человека уже была хорошая развитая база.
Вообще говоря искать работу сразу на erlang/haskell/lisp/anything else -- глупость. Ну нету ее, в общем случае. Ищи нормальную компанию, которая не против внедрять новые технологии с более менее образованными сотрудниками, где не будут навязывать языки и технологии, и начинай работать, хоть на той же жабе. А дальше, когда немного освоишься сам выбирай инструмент. Не обязательно все делать на этих языках, пусть гуй будет на жабе, например, да и вообще, пусть со стороны оно выглядит как обычное приложение на мейнстриме, а внутри делай как хочешь.
>вопрос лишь в том, чтобы у человека уже была хорошая развитая база.
Ага, после хаскеля эрланг вообще за милую душу идет :)
При изучении эрланга нельзя проводить аналогии с императивными языками и ООП. К сожалению, это происходит далеко не всегда.
Кроме того, нормальной документации очень мало... И приходится читать, либо с примерами на ML, либо чисто математическую. Так что лучше сначала учить хаскель. В нем не-ФП идиомы вообще не работают, в отличие от OCaml/Scheme/Erlang, так что процесс идет несколько быстрее... Хотя, с другой стороны, все сразу наваливается, и разгребать приходится долго...
А вообще, самый простой пример чисто ФП программы вот такой:
> Задачи, для которых он разрабатывался, в "обычной" жизни не встречаются. Ну или назови Топ5 :)
Да любой машстабируемый сервер, который должен обслуживать большое число соединений одновременно. В этом классе задач Erlang рулит, а любой другой язык требует совершения большого количества нетривиальных телодвижений, поскольку ничего полезного из коробки не предоставляет на эту тему.
> Вообще говоря искать работу сразу на erlang/haskell/lisp/anything else -- глупость.
+1
Искать работу "на языке XXX" - кретинизм редкостный. Даже если этот язык - попсовая Java. Надо искать работу в выбранной индустрии, а не "на выбранной технологии".
А почему надо обязательно искать задачи в которых кроме ерланга ничего не работает? Он сам по себе неплохой язык, достаточно быстрый. Любая серверная задача -- вот где можно использовать ерланг.
Нет. Любой, реальный. В 90% случаев решение на Erlang получается проще, дешевле и надёжнее чем на чём либо другом, просто от того, что в нём из коробки есть ВСЁ.
> А почему надо обязательно искать задачи в которых кроме ерланга ничего не работает?
Не обязательно. Эрланг можно изучать так же, как и любой язык - на учебных примерах.
> Любая серверная задача -- вот где можно использовать ерланг.
Задача должна быть достаточно сложной "по управлению" (чтобы использовать основные прелести типа горячей загрузки кода, отказоустойчивости, gen_*). Ну не вижу я, как сольный прогер с выдуманной задачей всё это использует и проверит в деле.
Это очень интересный вопрос :) Можно попробовать найти трекер с большим кол-вом пользователей и частыми падениями, реализовать большую часть его функционала и попробовать их уговорить потестировать и в случае удачи -- заменить. Реклама будет просто отличная :)
> torrent-трекер, вполне себе задача для erlang. На популярных болше тысячи одновременных коннектов необходимо, я думаю.
Не нужны там никакие тысячи коннектов. Трекер работает по протоколу HTTP: запрос-ответ-соединение закрыто. Собственно, одновременных коннектов там больше десятка и не надо держать, даже если клиентов сто тыщ. А основная нагрузка ложится на БД, как почти в любой вебне.
Да ну? Огласи весь список. Конкретно применительно к тяжелонагруженным сетевым приложениям. Кто ещё кроме Erlang считается под эту задачу заточенным, с кучей готового инструментария из коробки?
> Не нужны там никакие тысячи коннектов. Трекер работает по протоколу HTTP: запрос-ответ-соединение закрыто. Собственно, одновременных коннектов там больше десятка и не надо держать, даже если клиентов сто тыщ. А основная нагрузка ложится на БД, как почти в любой вебне.
тююю.. так таки и не надо? а если сеть тормозит где-то между Зимбабве и Луной и запрос от клиента приходит за несколько минут равно как и ответ?
> А с этим любой lighttpd или nginx легко справляется, безо всякого "параллелизма".
и трекером то-же nginx поработает?
> Хотя с эрланговскими процессами, наверено, работать проще, чем напрямую с epoll или kqueue.
по всей видимости легче. другой вопрос, на сколько это действительно масштабируется на практике и будут ли шевелиться 10k erlang потоков так же шустро, как 10 обычный но с 1к соединений на каждом.