пятница, 24 сентября 2010 г.

Современный Perl и современный Perl-программист.

В последние время встречается много постов на тему, что такое современный Perl. Попробую и я высказать свое мнение по этому поводу.

За последние 10 лет произошло колоссальное развитие Perl . Это развитие похоже на то, как развивается Java. Сам язык программирование Java - практически не меняется, но развивается инфраструктура. Сегодня знание Java - это знание фреймворков, а не знание синтаксиса языка.

Аналогичная ситуация происходит с Perl. Я не спорю, что 5.6 и 5.12 существенно отличаются, но эти отличия скорее эволюционные, которые не меняют подхода к написанию программ. Инфраструктурное развитие языка - это и есть основная составляющая того колоссального развития Perl. Инфраструктура - это фреймворки, а фреймворки - это каркас архитектуры приложения, который задает подход. Таким образом развитие фреймворков меняет подходы к написанию приложений.

Знание CPAN - это сегодняшнее требование к профессиональному Perl-программисту. Знание CPAN - это не умения устанавливать модули, это умение применить подходящий инструмент для решения задачи.

Вот небольшой список инструментов современного Perl-программиста:

  • Moose || Mouse
  • Catalyst || Mojolicious || Dancer || Jifty || CGI::Application
  • DBIx::Class || Rose::DB::Object || ORLite
  • AnyEvent || POE || IO::Lambda
  • HTML::Template || Template::Toolkit || HTML::CTPP2
  • DateTime && Devel::NYTProf && TryCatch
Если в этом списке для Вас есть незнакомые названия, советую исправить эту проблему. После этого Вы будете вооружены и в случае чего будете знать каким инструментом можно решить проблему.

Желательно, как минимум, знать про существование таких вещей. А про возможности модулей, которые идут в поставке с Perl вы просто обязаны знать!

Вы должны знать про новые стандартные модули/прагмы (очень приятные и душевные модули ;)) :
  • Params::Check
  • Term::UI
  • Object::Accessor
  • Time::Piece
  • Time::Seconds
  • File::Fetch
  • parent
  • autodie
И не забывать про те, которые уже давно поставляются вместе с Perl: strict, warnings, lib, constant, Carp, Data::Dumper, Storable, Exporter, Encode, FindBin, Hash::Util, Scalar::Util, List::Util, File::Path,File::Copy, File::Basename, Memoize, Locale::Maketext, Sys::Hostname, Time::HiRes, CGI::Fast. Это те, которые часто приходится использовать мне (кроме Locale::Maketext, но я не мог его пропустить), а весь список "perldoc perlmodlib".
Если в это списке есть незнакомые названия, то Вы просто обязаны ввести perldoc Имя::Модуля.

PS: Хотите быть конкурентным на рынке программирования, тогда не отставайте от современного Perl ;).

7 коммент.:

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

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

послед — это что-то акушерско-гинекологическое, казалось бы, при чем тут Perl?

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

Я бы до кучи добавил еще базовое представление про perl6. Плохо. когда не знаешь куда движется язык, которым чаще всего пользуешься.

+ Мне кажется, что забивать голову фреймворками не есть позитивным явлением. Лучше сосредоточиться на базовых модулях, таких как DBI, JSON, Log::Log4perl, GD, Image::Magick, Cache::Memcached::Fast и т.п.

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

2Антон:
Фреймворки это одни из тех вещей, которые требуют немало времени для изучения. Сегодня работодателя интересует не просто знание языка, а умение работать с определенным фреймворком. Это актуально для Java и даже для PHP. Про .net я вообще молчу :). Все больше вакансий где требуется знание определенного фреймворка, также часто бывает, что заказчик хочет, чтобы проект создавался с использованием указанного им фреймворка(поскольку потом проект проще поддерживать). Для Perl - это менее актуально, поскольку перловиков мало, а начни перебирать, то вообще не найдешь подходящего.
По поводу базовых модулей, я согласен, что это важно, но базовые модули - это только база. Эти модули нужно было знать 10 лет назад, а сегодня, зная исключительно эти модули, ты остаешься в прошлом и за бортом. Кроме того часто разные фреймворки реализовывают свое АПИ к этим модулям и расширяют их возможности. Еще один плюс фреймворков это то, что они предлагают нам каркас/архитектуру приложения разработанную опытными программистами, когда мы используем их наработки, мы перенимаем их опыт и подходы.
Кстати, посмотри в сторону JavaScript, там фреймворки(Jquery, Prototype,...) уже захватили власть.

Про perl6 согласен.

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

2Антон: Перефразирую свой комментарий.

Главная идея поста в том, что современный программист должен знать не только язык, но и инфраструктуру. Весь CPAN можно отнести к инфраструктуре. А фреймворки - это всего лишь часть CPAN, инструменты, мощные инструменты ;).

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

2koorchik: Мне кажется, что профессиональный perl-программист, может/должен знать о том что существуют такие фреймоврки, но это не значит, что при выходе нового инструмента, он должен тратить кучу времени на изучение как он работает.
Например, мы знаем, что есть Moose, неплохой инструмент для работы с объектно-ориентированными системами. Я знаю, что ты часто пишешь ООП-код на perl. Но признайся ты же его никогда не использовал на продакшене?
Или, например, ты разобрался как работает Mojolicious. Реализовал на нем n-проектов. Написал несколько своих расширений. Можно, считать, что ты профи в Mojolicious. Когда ты это осознал, ты же не переходишь на Dancer или Jifty (разве что кто-то тебе за это заплатит).

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

Я так и написал в посте: "Если в этом списке для Вас есть незнакомые названия, советую исправить эту проблему. После этого Вы будете вооружены и в случае чего будете знать каким инструментом можно решить проблему"

Нужно знать про популярные существующие инструменты для того, чтобы в случае возникновении проблемы знать, что ее есть чем решить. Используй один веб-фреймворк, но знай, что есть и другие , я ж через "||" и написал :) :
"• Catalyst || Mojolicious || Dancer || Jifty ||" CGI::Application

კონსტანტინე (კოკა) ვეკუა комментирует...
Этот комментарий был удален администратором блога.

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

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