Наверное, в самом начале неплохо было б написать про средства отладки, установке Erlang и так далее — так вот, исправляюсь.
Вообще, некоторая проблема с Эрлангом состоит в том, что его разработчики очень не любят писать статьи для начинающих, рисовать туториалы с красивыми скриншотами. Документации по некоторым модулям вообще минимум, по другим — в основном user reference, иногда маленький юзер гайд. Поэтому сначала кажется что разработчик вынужден жить исключительно наедине с консолью интерпретатора — однако это не так!
IDE
В качестве IDE можно использовать ErlyBird — IDE для Эрланга на платформе NetBeans, соответственно получаем от нее все соответствующие плюшки, выглядит очень красиво: Есть еще проект ErlIDE на базе Eclipse, но про него ничего сказать не могу — не пробовал. Ортодоксальные товарищи также, конечно, могут заюзать vim, emacs или Far под виндой (простенькими hrc файлами для colorer могу поделиться). erl это собственно интерпретатор Эрланга. Я, кстати, тут везде подразумеваю, что у вас установлен последний релиз R12 — там действительно есть порядочное количество новых полезных плюшек. Полезные функции интерпретатора: - скомпилировать и загрузить модуль - установить текущую директорию Запустить программу на Erlang отдельно, не из интерпретатора чуть сложнее чем в других языках — видимо, потому что большинство приложений на Erlang запускается один раз и потом работает годами.
Можно это сделать с помощью того же интерпретатора: (Модуль предварительно надо скомпилировать в байт-код, из интерпретатора или с помощью компилятора erlc).
После окончания работы функции интерпретатор останется висеть, чтобы он закрывался автоматически, можно добавить флаг "- s init stop" (тут за подсказку спасибо анонимному комментатору предыдущего поста).
Либо, для большего удобства, предусмотрен вариант запуска программы как скрипта — с помощью утилиты escript. Ей в качестве единственного аргумента передается имя скрипта, а сам он должен экспортировать функцию main(ArgList): Кроме этого есть вполне функциональный отладчик с GUI. Если мы хотим поотлаживать наш модуль foo: - Вызываем монитор эрланговских процессов - загружаем модуль в отладчик - ставим брейкпоинт на загрузку модуля Отладчик, естественно, умеет работать по сети, отслеживать сообщения, приходящие процессам, и много всего другого. Если приложение использует эрланговскую распределенную БД mnesia, то нередко нужен удобный способ заглянуть что лежит в табличках. Для этого есть table viewer, который загрузить можно функцией Dialyzer — утилита для статического анализа модулей. Иногда позволяет найти интересные ошибки без запуска программы. Запускается так: Интерфейс всех инструментов, конечно, весьма неказист, но интуитивно понятен, и их вполне хватает для полноценного процесса разработки. Интерпретатор
> c(boo.erl).
{ok}
> file:set_cwd(Dir).
> erl -noshell -run <module> <function> [Params]
-module(test).
-export([main/1]).
main(Args) ->
io:format("Hello world~n").
> escript test.erl
test.erl:4: Warning: variable 'Args' is unused
Hello world
Отладчик
- компилируем его и загружаем его с отладочной информацией 1> c(foo, [debug_info]).
{ok, foo}
2> im().
<0.181.0>
3> ii(foo).
{module, foo}
4> iaa([init]).
true
Остальное
> tv:start().
> dialyzer:gui().
Хотя с некоторых пор dialyzer идет как отдельное приложение в пакете с Erlang.
6 comments:
Пытался в своё время эту птицу приручить, не понравилась страшно, как и эрланг-мод для эклипса.
Оба умудрялись падать и подвисать.
К слову, у меня довольно слабое железо.
Я таки остановился на erlang-mode для emacs'а. Совершенно шедевральная штука, если попилить напильником.
А как дела с FFI у Эрланга обстоят?
ErlIDE в принципе терпим, но абсолютно не стабилен. Я бы также мог порекомендовать Scite - очень удобен.
Спасибо за статью, весьма полезна!
И сам я, кажется, перейду таки окончательно с erlybird на емакс (хотя у меня она не падала ни разу).
mibori> Оно есть, в нескольких вариантах -- но я им не пользовался, ничего сказать не могу. Наиболее полезно тут выглядят биндинги к окемлу, которые потихоньку пишет Ulf Wiger, один из основных разработчиков эрланга (но еще не дописал).
В емаксе можно использовать не только erlang-mode, но и пакет distel, который позволяет проводить отладку и т.п. Автор этого пакета ведет блог в котором пишет про эрланг, а также иногда и про distel
Про FFI - http://www.wagerlabs.com/blog/2008/02/erlang-ffi---in.html
к примеру.
А ульф - главный за пресловутым AXD301, Эрланг начинали Джо, потом Майк и Роберт подтянулись, может позже и Ульф участвовал, но как спец он неимоверно силён.
Post a Comment