пятница, 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 ;).

четверг, 16 сентября 2010 г.

История одного коммита

Год назад прочтением Олди, дождливой погодой ... и багами в коде было навеяно написание данного текста :)

Код изогнулся, как большой кусок оргстекла, поблескивая константами и переменными... он выдержал, он всегда выдерживал. Хотя такое случалось все чаще и чаще, но никто не обращал на это должного внимания, многим даже нравилось данное зрелище : "Так чудесно переливается в свете мониторов", - думали они. Все было точь-в-точь, как всегда и в этот раз, но что-то пошло не так... Монолитная твердая гладь заволновалась и по ней вдруг побежали волны. Казалось, еще чуть-чуть и все пойдет трещинами, расколется, разлетится на мелкие крупицы, закричат вдруг процедуры и функции и будут хвататься за острый край мироздания, моля о помощи своих друзей, напарников, но те, непонимая чего от них хотят, просто будут пялится и "укать" как слабоумные. Это был очередной Васин комит....


Через момент уже все вернулось на круги своя, только местами код, который должен быть прозрачным, как родниковая вода, помутнел, и если вглядеться, то можно было разобрать нечеткие очертания какого-то существа с большим количеством ног... или не ног. Но, как обычно, никто не обратил на это внимания ... Затем уже все привыкли и к мутностям кода. "Главное, что работает", - звучала всеми любимая фраза то здесь, то там...

среда, 8 сентября 2010 г.

GPL говорит, что я обязан открывать исходники моего сайта?

Лицензия GPL позволяет нам использовать и модифицировать код в своих целях. Мы имеем право модифицировать код и не делиться им ни с кем если мы не распространяем( не имеет значение платно или бесплатно) програмных продукт на основе этого кода.

Вроде как все логично и понятно. Например, если мы скачали исходник Apache и модифицировали его код, то мы можем без проблем продавать модифицированную версию с тем условием, что мы должны предоставить исходники нашей версии сохранив на код лицензию GPL.

Теперь относительно веб-приложений. Допустим мы создали написали фейсбук и использовали для этого модуль CGI.pm. Спрашивается должны ли мыть предоставить исходники пользователям нашим сервиса.
Вроде бы как и не должны поскольку мы не распространяем приложение, но ...