30 Ноябрь 2010

Про Erlang

Любители все тестировать, попробуйте вот эти тесты, о результатах отпишитесь в комментах.

Не знаю, но почему-то раньше при упоминании Erlang меня аж трясло, но теперь я почему-то его решил его осилить. Начал процесс по чтению / просмотру книги Joe Armstrong-а – Programming Erlang: Software for a Concurrent World. Виртуальная машина Erlang у меня стояла уже давно, еще со времен прохождения курса функционального программирования (почему-то на примере языка Erlang) в университете, а может и раньше, когда играл с ejabberd (Jabber-сервер написан на Erlang). Начал повторять те простенькие и не очень примеры из книги, немножко экспериментировать и должен сказать, что меня довольно быстро увлекло. Подходы "все может быть процессом" и "процессы ничего не знают друг о друге, только обмениваются сообщениями" довольно быстро стали не только понятными и приемлемыми, но и интересными для меня.

erlang

"Что в этом плохого?", – возникает вопрос. А плохого в том ровно столько, на сколько мой подход к разработке в Python отличается от вышеупомянутого. При проектировании одной из моих последних вещей мне очень не хватало такой красивой модульной распределенности и возможностей отказоустойчивости, которые мне просто из коробки прям дарит Erlang не прося ничего взамен. Так почему не использовать для той задачи Erlang? Боюсь, что аппаратное обеспечение, на котором будет "крутиться" эта вещь слишком слабенькое. Только дистрибутив виртуальной машины библиотек Erlang будет весить мегабайт 60, что в данном случае не очень допустимо, ибо / dev / hda там мизерный. С другой стороны всей "глобальности и надежности" Erlang-а мне в этой задаче не требуется. Кроме того, другой причиной миграции является панический страх перед подводными камнями, которые могут помешать мне написать хоть какую-то реализацию на таком уровне, на котором она сейчас есть.

"Что делать?", – возникает следующий вопрос. Пошел я путем поиска альтернатив на Python, на котором собственно и написана вся система. Первым, на что я обратил внимание стал Stackless Python. Суть его такова, что вследствие определенных манипуляций со стеком автор смог создавать микротреды вроде Erlang-овских процессов, планируемых внутри единого (для ОС) процесса Python, тем самым добиваясь большей производительности, маленьких задержек при их переключении и возможности создания их в очень больших количествах. Все это хорошо, обмен сообщениями "сопрограммы", возможность "консервировать" (Pickle) Tasklet-ы – все на месте… Только проблема в том, что надо патчить Python, также заставляет держать 2 версии интерпретатора, что также ведет за собой проблему недостаточного свободного дискового объема.

"Зачем мне те микротреды? Поищу библиотеку для обмена сообщениями между обычными тредами", – пронеслось опять в голове. Нашел одну интересную вещь. Правда она у меня абсолютно не заработала, но порадовать – порадовала. Это библиотека Candygram. Первое, что мне сразу не понравилось, что автор ее написал и сразу забросил еще в далеком 2004-м году. Библиотека, по сути, призвана имитировать принципы Erlang в Python: процессы, pattern matching, message passing. Вот только имитация оказалась столь буквальной, что даже синтаксически можно писать в подобному Erlang стиле. Хотя должен сказать, что Python от выразительности Erlang очень далек при использовании такого синтаксиса и pattern matching меня не очень порадовал. Другой весьма интересной библиотекой, по моему мнению, оказалась pysage. По сути, это – "message passing library supporting actor based concurrency", – то, что надо. Авторы ее, как видно из SVN-Коммит, якобы, обновляют, но ее последняя версия требует Python 2.6, что также для меня не есть хорошо, ибо придется мне у себя (что немного тяжелее и напряжнее – на конечных машинках) обновлять его. Гуглинье пока больше ничего из такого light-weightьного не дало (тот самый Twisted я отбросил сразу). Хотя да, конечно, всегда остается вариант написания своего велосипеда… Что же? Может и это будет хорошим выходом. По крайней мере, я учту в нем именно свои пожелания и предложения, что в данном случае важно.

Друзья, кто из вас смотрит до сих пор телепроект дом 2 – скажите, что вас в нем привлекает больше всего?

Рубрика: FAIL

Метки:

Комменарии:

Пока нет комментариев

Оставить комментарий или два