Perl – жив?!

Post on 14-Dec-2014

3.617 views 0 download

description

Perl Mova + YAPC::Russia 2010

Transcript of Perl – жив?!

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 – добро!

Потому, что это мой доклад :)

Если речь идет о добре и зле

То это сказка :)

Если серьезно

«Мифы Перла»Алексей Капранов

http://kapranoff.ru/myths

Я пишу про 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