perl – жив?!
DESCRIPTION
Perl Mova + YAPC::Russia 2010TRANSCRIPT
Perl – жив?!Блиц доклад
Perl Mova + YAPC::Russia 2010
Последние 2 года все говорят только
об одном
Жив ли Perl,мёртв ли Perl?
Мёртв ли живой Perl?
Жив ли мёртвый Perl?
На самом деле я хочу рассказать другой доклад :)
Perl – зло?!Блиц доклад
YAPC::Russia + Perl::Mova 2010
Каждый год на «May Perl»
Я рассказываю про «зло» :)
CGI«CGI.pm – зло?!», May Perl 2008
LWP«Модули Net::*, использующие LWP::UserAgent – зло?!»,
May Perl 2009
POEТакого доклада не было, но это так :)
PHP
ой :)
TT«Template Toolkit – зло?!», May Perl 2010
– зло!
Может быть CGI.pm, LWP, POE, TT
не виноваты?
Может бытьPerl – зло !
Может бытьPerl – зло?!
НЕТ :)
На РИТе 2010 меня попросили рассказать
про «добро»
Поэтому я хочу рассказать другой доклад :)
Perl – добро?!Блиц доклад
YAPC::Russia + Perl::Mova 2010
Однозначно,Perl – добро!
Потому, что это мой доклад :)
Если речь идет о добре и зле
То это сказка :)
Если серьезно
«Мифы Перла»Алексей Капранов
Я пишу про Perl в ЖЖнесколько лет
Решил проверить реакцию читателей
Написал пост«Perl гавно!»
«Я смотрю в будущее и в будущем Perl нет!»
Андрей Шетухин
Реакция на пост
• Пост удалили с planetperl.ru
• «Как сделать так, чтобы меня отпустило, пожалуйста»
• «Бог умер» (с) Ницше
• «БУДУЩЕЕ С RUBY!» Аноним
Язык Perl толком не поменялся с 2003 года
Качество и стильмоего кода изменилсяочень сильно
2003
#---------------------------------------------------------------## index.cgi ## Стартовый файл - путеводитель ##---------------------------------------------------------------#require "functions.cgi";$query = new CGI;$user = get_user(); print $query->header(-charset => 'windows-1251'); for my $i(0..$#menu) { for (keys %{$menu[$i]}) { if ($query->param('menu') eq $_) { $title .= " :: $menu[$i]{$_}"; html_head($title); html_menu(); require "$_\.cgi"; html_right($user); html_foot(); } } } exit(0);
# student.cgi
head_title('Студенты кафедры');print " <tr> <td valign=\"top\" id=left>
</td>";vertical_line();$stud_way = "$path{student}/info.txt";print " <td valign=\"top\">";print $site_construct;print " </td> </tr>\n";foot_way($way{student});
2004
my $dbh = Tools::connect(); my $tpl = new CGI::FastTemplate($PATH{template});$tpl->no_strict;$tpl->define(%DEFINE);
my $q = new CGI; if (my $page = $q->param('page')) { my $url_page = $URL{cgi}.$PARAM.$page; if (my $p = Tools::get_one($dbh, $MENU{1}, $page) { print $q->header(-charset => 'windows-1251'); # информация о разделе меню my $m = Tools::get_one($dbh, $MENU{2}, $p->{menu}); my $k = Tools::get_one($dbh, $SELECT{0}, undef); my (%assign); $assign{IMG} = $URL{images}; $assign{CSS} = $URL{css}; $assign{JS} = $URL{js};
our %SELECT = ( # ФИО по id fio => "SELECT name FROM person WHERE id = ?", ... 0 => "SELECT * FROM info", # id персоны по виду д.з.с. 1 => "SELECT person FROM dzsperson WHERE dzs = ?", # название д.з.с. по коду преподавателя и виду д.з.с. 2 => "SELECT dzs.name FROM dzsperson, dzs WHERE dzs.id = dzsperson.dzs AND dzsperson.person = ?AND dzs.kind = ? AND dzsperson.kind = '0' ",);
unless ($topimg || -s "$PATH{topimg}/$topimg") { $topimg = (substr($fio, -2, 2) eq 'ич') ? 'man.jpg' : 'woman.jpg'; }
2005
my $REQUEST = ( { 1 => sub { require Apache; my $r = shift || Apache->request || return; $r->register_cleanup(sub {1}); return $r; }, 2 => sub { require Apache2::Response; require Apache2::RequestRec; require Apache2::RequestUtil; require Apache2::RequestIO; require APR::Pool; my $r = shift || Apache2::RequestUtil->request || return; $r->pool->cleanup_register(sub {1}); return $r; }, }->{$ENV{'MOD_PERL'} && $ENV{'MOD_PERL_API_VERSION'}} || sub {} )->($config->{'request'});
my $self = $class->SUPER::new( %$config, 'method' => $REQUEST ? $REQUEST->method : $ENV{'REQUEST_METHOD'}, 'type' => $ENV{'CONTENT_TYPE'}, 'query' => $REQUEST ? $REQUEST->args : ( $ENV{'QUERY_STRING'} || $ENV{'REDIRECT_QUERY_STRING'} ) , 'length' => $ENV{'CONTENT_LENGTH'}, 'stream' => \*STDIN,);
2010
use Mojolicious::Lite;
get '/rss' => sub { my $self = shift; my $DB = $self->app->db; $self->render( format => 'rss', list => $DB->select( 'select * from url order by -id limit ' . CONF->{'limit'}->{'rss'} ), );} => 'index';
«Хороший программист всегда важнее хорошего
языка»Тим Банс
«Плохие программисты будут программировать
нечитаемо на любом языке»
Дамиан Конвей
Почему многие программисты ненавидят Perl?
И считают, чтоPerl умер
Либо они плохие программисты
Либо им пришлось поддерживать
Perl-код 1998–2005 гг. :)
Либо они завидуют живому мёртвому
Perl
Что нужно сделать, чтобы поменять мнение хейтеров?
НИЧЕГО :)
Удалить весь свой говнокод
Удалить из индексов Google и Яндекс говностатьи
начала 2000х годов
Продолжать программировать
на Perl
И популяризировать это :)
P. S.
Perl – жив, хотя бы потому что мы живы и собрались здесь :)
use Perlor die
JFDI
Спасибо за внимание!Анатолий Шарифулин
sharifulin