суббота, 29 января 2011 г.

Perl IDE: Eclipse + Epic

Perl IDE
Посмотрел видео с Perl-воркшопа «Saint Perl — 2» (Санкт-Петербург). Доклад "Perl IDEs" Шафиева Наима.

Я в свое время поигрался почти со всеми перечисленными в докладе IDE и редакторами (кроме Kephra и Emacs) и сделал выбор в пользу Eclipse + Epic.

Сразу немного критики в сторону докладчика, который заявил, что  Epic is deprecated и с 2008 без обновлений. Я пользуюсь Epic и наблюдаю там движение.
Версия 0.6.35 вышла в 2009-07-27. Сейчас у меня установлена версия Epic 0.6.39
Если зайти на сайт проекта, то можно увидеть, что последний коммит был сделан 2011-01-16.

Почему ...
Почему не Vim?
Замарочки с конфигом, а я хочу, чтобы все работало с коробки. Кроме того, меня убивают в Vim некоторые вещи при работе с буферами. В общем моя продуктивность при работе в Vim с большими проектами падает. У меня был очень толковый конфиг и я работал в Vim больше месяца по 8 часов в день, возможно это не так много, но я не готов тратить больше времени лишь для того, чтобы подстроить себя под редактор.


Почему не Padre?
Проблемы со стабильностью. Работа с Subversion значительно уступает тому же Subclipse. Я много работаю с JavaScript и хотелось бы вкусных плюшек для JS

Почему не Komodo?
Komodo Edit для меня слаб, Komodo IDE - слишком дорог. Хотя Komodo IDE очень крут :).

Почему Eclipse+Epic?
IDE - это интегрированная среда разработки. В этом плане Eclipse впереди всех. За счет плагинов он позволяет интегрировать в себя практически все что угодно. Eclipse бесплатен и имеет уйму возможностей. Теперь по порядку:
Я устанавливаю версию Eclipse IDE for JavaScript Web Developers. Скачать можно здесь - http://www.eclipse.org/downloads/.
Эта версия сразу содержит инструменты для работы с Javascript, HTML, CSS. Затем я устанавливаю дополнительные плагины:

  1. Epic - поддержка Perl (ссылка на SourceForge)
  2. Subclipse - поддержка Subversion
  3. Mylyn ( иногда ) - Система управления задачами.
  4. Clay Mark II ( иногда ) - проектирование баз данных
  5. YEdit - редактор для YAML файлов( с подсветкой, с отображением всего дерева данных )


Теперь про функциональность Eclipse+Plugins
Общая для всех:

  1. Подсветка синтаксиса ( с настройкой параметров подсветки )
  2. Сворачивание кода/документации
  3. Автодополнение
  4. Хоткеи
  5. Шаблоны(Snippets)
  6. Вертикальное выделение блока текста
  7. Переход к закрывающей скобке (удобно для выделения блока кода)
  8. Сохраняемые Search Scopes.
  9. Перспективы(расположение и параметры отображения всех панелей)
  10. Свернутые панели(view). 
  11. Много всего другого(настройка кодировок, окончания строк, отсупов пробелы/табы, комментирование кода по хоткею, ...)


Epic:

  1. Поддержка perltidy для автоформатирования кода(можно задать свои параметры)
  2. Автоматическая проверка синтаксиса с подсветкой в ошибок в коде. (можно указать пути, для поиска модулей)
  3. Поддержка perl critic
  4. Поддержка perldoc
  5. Переходя к определению функции
  6. Дебаггер(использую очень редко)
  7. Редактор регулярных выражений(не использую вообще)


Javascipt/HTML/CSS:

  1. Валидация
  2. JSDoc
  3. Инструменты рефакторинга
  4. Автоформатирование


В eclipse с Javascipt/HTML/CSS работать прятно :), если кто-то хочет что-то мощнее ставьте Aptana Studio(но оно очень тормозное)

Subclipse  - позволяет все, что и cli svn (и даже больше, и через GUI ) :

  1. Удобная работа с мерджами ( автоматически делаются дополнительные проверки перед мерджом, которые с консоли пришлось бы руками)
  2. Вьювер SVN-репозитариев (можно открыть файл сразу в репозитарии)
  3. Если у Вас 2 чекаута с разных путей одного репозитария, то вы можете закомитить изменения в двух местах за 1 коммит(консольный клиент такого не позволяет).
  4. Шаблоны для комментариев коммита.
  5. Редактор svn атрибутов
  6. Подсветка в дереве svn:externals для папок и файлов
  7. Вообщем поддержка всех возможностей subversion ( скриншоты )


Mylyn - подсистема уравления задачами в Eclipse.
Очень крутая штука. Есть коннекторы для Jira и Trac ( это те, что я использовал )
Для Jira поддержка будет посерьезнее.
Например, мне постоянно не хватало в Jira подсветки задач с непрочитанными комментариями. С Mylyn - это возможно :).
При работе над задачей через Mylyn, измененные файлы связываются с задачей и запоминается интенсивность работы с файлом, открытые вкладки, дерево файлов, вообщем все окружение. И допустим когда Вы переключаетесь между задачами все окружение восстанавливается. Кроме того состояние окружения можно прикрепить к задаче в Jira и другой разработчик может его использовать.

Кроме того всегда можно найти удобный плагин под нужную задачу/язык и писать в знакомой IDE.

PS:

  1. Ну еще мне нравится Geany :)
  2. Прошу воздержаться от комментариев вида "Vim - тру, а Eclipse тормозное УГ"

20 коммент.:

alexchorny комментирует...

Я надеюсь что мы постепенно доделаем Padre для лучшей работы. Я немного улучшил plugin CSS в Padre. Мне кажется что улучшить поддержку Javascript будет не сложно, насколько я помню, JSDoc существует в варианте на Perl.

koorchik комментирует...

>Я надеюсь что мы постепенно доделаем Padre для лучшей работы. Я немного улучшил plugin CSS в Padre.

Еще помню у меня были проблемы в Padre с Perl 5.12. Также при выборе некоторых пунктов меню - IDE проста падала. Но все-таки на нетбуке я себе установил Padre (eclipse cлишком тяжел) :)

Анонимный комментирует...

А как же ноутпад++? Тоже очень крутая штука.

Шафиев Наим комментирует...

>Сразу немного критики в сторону докладчика, который заявил, что Epic is deprecated и с 2008 без обновлений

Ок спасибо за замечание.Я видно не так сильно лазил на их странице(sf) .И до cvs не дошел.А стабильный тока за 2009 год у них почему есть?

Да Padre развивается.Правда разрабы большинство своих сил бросили на сам область редактирования(ну поиск по файлам и т.д) А вот с чем плохо так это - с системами контроля версий и взаимодействие с системами управления задач.
Еще пару у проекто года два развитие шло медленно(все таки и wx alien был тогда бажоват), и только сейчас все побыстрее начало.
Да кстати в последних версиях стабильность лучше.А причина 99% падений это с++ бэкенды(Wx ).Их лучше брать совсем свежими и ставить.

Анонимный комментирует...

komodo ide лучше komodo edit только за счёт дебагера и интеграцией с vcs, но если не хочется платить или воровать ide, то дебажить можно в консоли и второе заменить на standalone софт и встроенные макросы-снипеты..

все плагины для komodo ide подходят для komodo edit: юзаю colortab, morekomodo, html toolkit, zen coding..

koorchik комментирует...

>komodo ide лучше komodo edit только за счёт дебагера и интеграцией с vcs, но если не хочется платить или воровать ide, то дебажить можно в консоли и второе заменить на standalone софт и встроенные макросы-снипеты..

Чтобы не воровать, я выбрал для себя eclipse (и не отказываюсь от удобных для меня функций).
Возможно сейчас все поменялось, но когда я пробовал komodo edit, то в нем даже не было дерева функций/переменных, да и много всего остального. А список отличий говорит сам за себя - http://www.activestate.com/komodo-edit/compare-with-komodo-ide

Инструменты выбираются в зависимости от задач. Как пример, для кого-то Komodo IDE лучше блокнота, только тем, что в Komodo IDE есть подсветка кода. В таком случае этому человеку хватит и Komodo Edit.

koorchik комментирует...

>все плагины для komodo ide подходят для komodo edit: юзаю colortab, morekomodo, html toolkit, zen coding..

И спасибо за список плагинов, у меня есть знакомые, которые пользуют Komodo Edit, думаю этот список окажется для них полезным :).

antonfin комментирует...

> но я не готов тратить больше времени лишь для того, чтобы подстроить себя под редактор.

Редактор надо подстраивать под себя, а не себя под редактор :)

Сам пользуюсь Vim-ом. Соглашусь, что есть небольшие проблемы с конфигом при переходе на другую ОС, а так проблема надуманная. У меня есть копия запакованного конфига на почте, скачать и распаковать его займет чуть больше минуты.

А вообще, выбор IDE для работы это вещь исключительно индивидуальная, зависящая от программиста, что он делает, где и на какой машине.

P.S. Какие были проблемы с буферами? Может подскажу что, так или иначе пригодиться, особенно при работе на удаленных серверах.

koorchik комментирует...

2antonfin
>Редактор надо подстраивать под себя, а не себя под редактор :)
Вот я так и делаю с еклипсом, а с вимом приходилось больше себя подстраивать под редактор, чем редактор под себя :).

>Какие были проблемы с буферами?
Например, есть текст:

File_1 is Ok
Aaa2 is Ok
Bbb3 is Ok

И я хочу заменить "Aaa2" на "File_2" и "Bbb3" на "File_3"
Обычно я решаю это задачу так:
1. Копирую в буфер обмена строку "File_"
2. Выделяю "Aaa" и нажимаю Ctrl+V
3. Выделяю "Bbb" и нажимаю Ctrl+V

В виме такая схема не работает поскольку после пункта 2, в буфере у меня уже будет не "File_"

antonfin комментирует...

2koorchik

Чтобы сделать в 3 действия как у тебя
1) выделяешь File_ - y
2) выделяешь Aaa - "0p
2) выделяешь Bbb - "0p

:help registers

P.S. у тебя проблема не с буферами, а с регистрами. Ибо буфер в vim, это несколько иная сущность.

P.S.S. Я бы для замен лучше использовал регексп:
%s/Aaa\|Bbb/File_/g
(Можно добавить ключ "с" в конце для интерактивного режима)

koorchik комментирует...

2antonfin
Да, с регистрами, препутал :).

> :help registers
Предлагаешь мне прочитать там, где сам(опытный пользователь вима) не смог найти ответа ?
еще бы написал "http://google.com" :)

> %s/Aaa\|Bbb/File_/g
Во-первых, мне нужно провести замену не глобально, а только в двух местах.
Во-вторых, регесп это не лучшее решение. Я могу в еклипсе тоже использовать регесп для поиска и замены, но не использую поскольу, в данном случае, это менее ефективно(дольше по времени).

koorchik комментирует...

2antonfin
С буферами у меня была другая проблема. Я зыкрываю файл. Но при переключении между буферами, файл по новому открывается. Возможно нужно кроме закрытия файла как-то удалить буфер, но опять же это лишние телодвижения )

antonfin комментирует...

2koorchik
>Предлагаешь мне прочитать там, где сам(опытный пользователь вима) не смог найти ответа ?

Ты наверное меня не понял.

Я же тебе написал как это сделать
>
> 1) выделяешь File_ - y
> 2) выделяешь Aaa - "0p
> 3) выделяешь Bbb - "0p
>
Поясню всместо Ctrl-С надо нажать: y
А вместо Ctrl-V - поочередно: "0p

Для справки предлагаю посмотреть :help registers, если возникнет необходимость понять что эти комбинации делают и почему они будут делать, то что тебе нужно.

Если хочешь можешь забиндеть команду "0p для обычной вставки и оно будет вставлять как в "не-вим-редакторах" (то есть то что ты выделил для копирование без учета вырезанных фрагментов).

Соглашусь, чтобы дойти до этого решения возможно обычному пользователю понадобятся некоторое время (возможно много времени). Зато оно дает значительные преимущества, перечисление которых входит в разрез с темой топика, поэтому на этом и закончу.

> С буферами у меня была другая проблема. Я зыкрываю файл. Но при переключении между буферами, файл по новому открывается. Возможно нужно кроме закрытия файла как-то удалить буфер, но опять же это лишние телодвижения )

Курчик, если ты вызываешь команду :q - это еще не значит, что ты зарываешь файл, а значит что ты закрываешь окно (:help quit и :help window). Чтобы удалить буфер, а вместе с ним и закрыть файл надо набрать простую комбинацию :bd. И ничего более.

koorchik комментирует...

2antonfin:

Понял, спасибо, дельный ответ. А то я всегда вставлял просто через "p". :)

Анонимный комментирует...

Скиньте кому не жалко конфиги вима истинного перл программера.

antonfin комментирует...

2анонимный
Читай тут, может чем поможет
http://antonfin.blogspot.com/2011/02/vim-perl.html

Shoorick комментирует...

Чё-то он странный какой-то, эклипс этот: пытаюсь открывать файл эклипсом, он зачем-то запускает gedit. В нём какой-то особый порядок работы?

koorchik комментирует...

2Shoorick:
> Чё-то он странный какой-то, эклипс этот: пытаюсь открывать файл эклипсом, он зачем-то запускает gedit. В нём какой-то особый порядок работы?

Правой кнопкой мыши на файл и в пункте "Open with" выпадет список чем можно открыть.

Еклипс определяет чем открыть файл по его расширению. Например, "*.pl" он открывает при помощи Epic. Если расширение не связано с редактором(например, *.cgi), то еклипс может отрыть системным редактором(в данном случае gedit). Если нет подходящего плагина, то можно выбрать в "Open with" - "Text Editor", тогда будет открываться встроенным текстовым редактором еклипса.

Привязать редактор к расширению можно в настройках General -> Editor -> File asscociations

enruzh комментирует...

Kate решает по части организации рабочего пространства

Alexander Sapozhnikov комментирует...

После всяких экспериментов в итоге пока остановился на Geany — он куда шустрее, чем Komodo Edit (не говоря уж о могучем Komodo IDE), Atom и Visual Studio Code — все эти редакторы/IDE сделаны из браузеров. В нём есть всякие полезные плагины, он умеет проверять синтаксис, отправляя к местам ошибок, умеет (через плагин) работать с системами контроля версий — в общем, вполне годный инструмент. Разве что для отладки перлового кода пока использую обычный консольный отладчик, но на компьютере с двумя здоровенными мониторами это достаточно комфортно.

Отправить комментарий

Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)