|<<
<
>
>>|
/
XKCD 519 {{img src="images/11th_grade.png" width="535" height="333"}} ---- kapranoff.ru/myths ---- Мифы Перла {{#author|Тим Банс}} {{#author|Алексей Капранов}} {{#date|2010, май, для DevConf 2010}} ---- Мифы и реальность ---- Реальность ---- Перл хороший ---- {{#i|... не значит, что другие языки плохие}} ---- Выбирайте любой язык, подходящий для задачи ---- Хороший программист {{#x|ВСЕГДА}} важнее хорошего языка ---- {{#i|“For all program aspects investigated, the}} {{#i|performance variability that derives from}} {{#i|differences among programmers of the same}} {{#i|language — as described by the bad-to-good}} {{#i|ratios — is on average as large or larger than}} {{#i|the variability found among the different}} {{#i|languages.”}} — «Эмпирическое сравнение C, C++, Java, Perl, Python, Rexx и Tcl» IEEE Computer Journal, октябрь 2000 {{ссылка|http://www.cis.udel.edu/~silber/470STUFF/article.pdf}} ---- {{#i|«Разброс в производительности между разными}} {{#i|программистами был всегда таким же}} {{#i|или большим чем разброс между языками.»}} ---- Тим Банс {{img src="images/bunce.jpg" width="320" height="400"}} Tim Bunce ---- Автор {{#v|DBI}} Участник разработки {{#x|Perl 5}} Релиз-менеджер (pumpking) для {{#x|Perl 5.4.x}} ---- Алексей Капранов ---- программист на Перле с 1998 {{#i|«евангелист»}} ---- Мифы ---- 3 основных мифа ---- {{#v|1.}} Перл умер ---- {{#v|2.}} Перл тяжело читать/тестировать ---- {{#v|3.}} Перл 6 убивает Перл 5 ---- {{#v|1. Перл умер}} 2. Перл тяжело читать 3. Перл 6 убивает Перл 5 ---- Перлу 22 года! Перлу 5 — 16 {{ссылка|http://perldoc.perl.org/perlhist.html}} ---- Сложно назвать новым языком ---- Зрелый язык со зрелой культурой ---- Сколько раз за это время менялся дежурный язык Микрософт? {{#i|(Quick C, Microsoft C, Quick Basic,}} {{#i|Visual Basic, FoxPro, Win16 C, MFC, OLE,}} {{#i|OLE2, COM, Win32 etc.)}} ---- (языку C++, кстати, 27 лет) (языку C — 40 лет) (Яве — 17) ---- Разговоры != Работа ---- О Перле стали меньше говорить Но он продолжает делать свою работу ---- Часто за пределами веба ---- {{#i|“На недавней конференции по финансовым}} {{#i|технологиям в Нью-Йорке подсчитали количество}} {{#i|упоминаний докладчиками базовых технологий.}} {{#i|Топ 3: #3 - XML, #2 - SQL, #1 - Перл”}} — Ричард Дайс, о конференции O'Reilly's Money:Tech, 6-7 февраля 2008 г в Нью-Йорке ---- indeed.com тренды по вакансиям {{ссылка|http://www.indeed.com/jobtrends?q=perl&l=}} ---- Угадайте язык {{img src="images/indeed_guess.png" width="900" height="497"}} ---- {{img src="images/indeed_wd.png" width="900" height="497"}} ---- Количество вакансий «веб-разработчиков» на Перле падает ---- {{img src="images/indeed_wd.png" width="900" height="497"}} похожая ситуация с Питоном! ---- признак зрелости ---- выйдем за пределы веба {{img src="images/indeed_sesd.png" width="900" height="502"}} без PHP ---- Перл упоминается значительно чаще в вакансиях \"software engineer\" и \"software developer\" ---- {{img src="images/indeed_sesd.png" width="900" height="502"}} Питон на втором месте ---- кто-то скажет, что Перл часто упоминают вторым языком ---- \"* developer\" ---- {{img src="images/indeed_xd.png" width="900" height="506"}} ---- ещё один признак зрелости ---- почему Перл так востребован? ---- {{#x|Огромная библиотека модулей}} CPAN 4850 активных авторов 20335 дистрибутивов ~75000 модулей {{ссылка|http://stats.cpantesters.org/statscpan.html}} ---- CPAN существует 15 лет ---- {{img src="images/fresh_cpan.png" width="600" height="240"}} 1/2 модулей обновлены за 17,8 месяцев 1/4 — за 5,6 месяцев {{ссылка|http://andk.vox.com/library/post/how-fresh-is-the-cpan.html}} ---- 5000 релизов за полгода ---- ~60 релизов в сутки {{ссылка|http://search.cpan.org/recent}} ---- количество релизов помесячно {{img src="images/cpan_ups.png" width="640" height="300"}} {{ссылка|http://stats.cpantesters.org/trends.html}} ---- только новые дистрибутивы {{img src="images/cpan_newups.png" width="640" height="300"}} ---- 250 {{#x|новых}} релизов в месяц 8 — каждые сутки! ---- Мысли: {{#x|1.}} библиотека важнее языка ---- Звёзды: DBI DBIx::Class Catalyst Moose DateTime Mojolicious Algorith::* Statistics::* XML::* HTML::* WWW::* Net::* Email::* POE AnyEvent Test::* Devel::* ---- о качестве {{#i|„90% of everything is crap“}} ---- 7500 высококачественных модулей из всех отраслей ---- сложно не гордиться и не хвастаться :) ---- 277 зеркал по всему миру {{img src="images/cpan_mirrors.png" width="512" height="256"}} {{ссылка|http://mirrors.cpan.org/}} ---- {{#x|Сервисы CPAN}}, которые получает {{#x|каждый}} автор: 1. глобальная дистрибуция 2. управление пространством имён 3. баг-трэкинг 4. форум 5. smoke-testing на множестве платформ ---- {{#x|search.cpan.org}} 1. Полнотекстовый и многокритериальный поиск 2. Перелинкованная документация 3. Аннотации 4. Анализ зависимостей ---- Более {{#x|600 000}} уникальных посетителей в месяц ---- {{img src="images/cpan_page.png" width="888" height="538"}} сервисы ---- {{img src="images/cpan_deps.png" width="775" height="430"}} анализ зависимостей ---- CPAN Testers Network ~ 60 платформ ~ 20 версий Перла {{ссылка|http://cpantesters.org/}} ---- распределённый кластер физических и виртуальных серверов, а также тестеры-люди ---- CPAN Testing Service работает в автоматическом режиме и тестирует {{#x|весь}} CPAN ---- все 20000 дистрибутивов постоянно прогоняются на CPANTS и авторы получают письма с отчётами ---- {{img src="images/cpants.png" width="651" height="533"}} ---- немудрено, что в итоге имеем 1. огромную 2. свежую 3. растущую 4. качественную библиотеку кода ---- Мысли: 1. библиотека важнее языка {{#x|2.}} огромное сообщество разработчиков — сообщество пользователей ещё больше ---- DarkPAN ---- пользователь языка = программист ---- Acme::CPANAuthors::Russian 114 авторов CPAN в России {{ссылка|http://search.cpan.org/dist/Acme-CPANAuthors-Russian/}} ---- пользователей на два порядка больше ---- ~500000 Перл-программистов в мире ~10000 — в России ---- вспомним 600 000 уникальных посетителей в месяц на search.cpan.org ---- по грубым оценкам в мире на 1000 человек 1 программист {{ссылка|http://stackoverflow.com/questions/203824/how-many-professional-software-developers-are-there-worldwide}} ---- ~6,5 миллиона программистов ---- 1 из 10-50 пишет на Перле ---- {{#i|«Вот самое важное, что я заметил.}} {{#i|Люди из Перл-сообщества искренни.}} {{#i|Многие из них хорошо знают несколько}} {{#i|языков. Большинство из них порекомендуют}} {{#i|Вам изучать и другие языки и сравнивать.}} {{#i|Мне кажется, что такая уверенность}} {{#i|происходит из того, что люди,}} {{#i|поработавшие на Перле, редко переходят на}} {{#i|другие языки»}} — Кристи Джон {{ссылка|http://thejoysofcomputing.wordpress.com/2009/09/02/why-i-love-perl-already/}} ---- Пирс Коли {{img src="images/cawley.jpg" width="683" height="614"}} Piers Cawley ---- 5 лет назад перешёл на Руби, через 3 года вернулся на Перл ---- {{#i|«Пока меня не было, все проблемы}} {{#i|в Перле, которые меня напрягали}} {{#i|и которые заставили меня уйти на Руби,}} {{#i|оказались решены!»}} — Пирс Коли {{ссылка|http://www.bofh.org.uk/2010/03/10/falling-out-of-love-with-a-language}} ---- Perl Mongers http://pm.org ---- {{img src="images/pms.png" width="795" height="492"}} 256 групп по всему миру ---- {{#x|8 групп в России}} Kazan.pm Kostroma.pm Krasnodar.pm {{Moscow.pm|http://moscow.pm.org}} RostovOnDon.pm Samara.pm SPb.pm Vladivostok.pm ---- Конференции/воркшопы {{img src="images/act.png" width="600" height="400"}} {{ссылка|http://act.mongueurs.net/act-conferences.png}} ---- Перл и Open Source ---- {{img src="images/oss_lic.png" width="755" height="250"}} {{ссылка|http://www.blackducksoftware.com/news/releases/2009-06-30}} ---- Числа явно связаны: 8% программистов в мире пишут на Перле 9% open source кода в мире — на Перле ---- Данные по новым проектам за 2008: {{img src="images/new_2008.png" width="734" height="390"}} ---- TIOBE Index for May 2010 {{img src="images/tiobe.png" width="598" height="347"}} {{ссылка|http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html}} ---- Из PHP, Python, Ruby, Perl только Перл вырос по сравнению с маем 2009 ---- Зарплаты по данным odinjobs.com {{ссылка|http://www.odinjobs.com/Odin/marketstatcompare}} ---- {{img src="images/salary_any.png" width="400" height="350"}} ---- {{img src="images/salary_lead.png" width="400" height="350"}} ---- {{img src="images/salary_lead_rj.png" width="400" height="350"}} ---- {{img src="images/salary_any_rj.png" width="400" height="350"}} ---- {{#x|Выводы:}} 1. огромная быстро растущая библиотека 2. большое, активное сообщество 3. большой объём кода в open source 4. высокие зарплаты ---- {{#s x|1. Перл умер}} 2. Перл тяжело читать 3. Перл 6 убивает Перл 5 ---- {{#s|1. Перл умер}} {{#v|2. Перл тяжело читать}} 3. Перл 6 убивает Перл 5 ---- {{#v|2. Перл тяжело читать/поддерживать/тестировать}} ---- {{#i|«Настоящее величие в том, сколько}} {{#i|свободы вы даёте другим, а не в том,}} {{#i|как вам удаётся заставлять других}} {{#i|делать то, что вы хотите»}} — Ларри Уолл {{ссылка|http://www.wanderings.net/notebook/Main/Quotes}} ---- Перл базируется на свободе для программиста ---- На CPAN существует больше стилей кодирования, чем в мире языков программирования ---- {{#i|„With freedom comes responsibility“}} {{#i|«Вместе со свободой приходит ответственность»}} — Элеонора Рузвельт ---- На Перле можно писать очень плохой код ---- Как и на любом языке! ---- Просто на Перле это делать легче :) ---- На Перле можно писать очень хороший код! {{#i|как и на любом языке}} ---- может быть не легче, но вариантов «хорошести» больше! из-за свободы ---- Перл-сообщество понимает проблему и решает её по-программистски ---- {{#x|Инструменты для написания хорошего кода}} Perl Best Practices Perl::Tidy POD Perl::Critic Test::* Devel::Cover ---- Perl Best Practices {{img src="images/pbp.jpg" width="500" height="656"}} {{ссылка|http://oreilly.com/catalog/9780596001735}} ---- {{#x|Perl::Tidy}} Форматирование кода Очень хороший, можно доверять Масса опций для тех, у кого уникальный стиль Отдельный стиль для соответствия PBP {{ссылка|http://search.cpan.org/dist/Perl-Tidy/}} ---- Perl::Tidy — универсальное решение проблемы нечитаемого стиля кодирования ---- Хорошо подходит для изучения чужого кода ---- {{#x|Документация}} POD — Plain Old Documentation формат появился в 1993 году в Perl 5 ---- „Literate programming“ «Грамотное программирование» — Дональд Кнут, 1984 год {{ссылка|http://www.literateprogramming.com/knuthweb.pdf}} ---- Пример {{img src="images/pod.png" width="812" height="615"}} ---- Документация перемежается с кодом в одном файле ---- Вся документация пишется в этом формате ---- {{#x|Все}} модули на CPAN имеют POD-документацию! ---- 368 модулей Pod::* парсеры, конвертеры, генераторы {{ссылка|http://www.cpan.org/modules/02packages.details.txt.gz}} ---- {{#x|Perl::Critic}} Статический анализ кода 135 политик Основаны на рекомендациях PBP Группируются по уровням и рубрикам Настраивается под любой стиль {{ссылка|http://search.cpan.org/dist/Perl-Critic/}} ---- Фреймворк для написания своих политик ---- http://perlcritic.com {{img src="images/critic.png" width="429" height="527"}} ---- Perl::Tidy исправляет синтаксис Pod документирует Perl::Critic анализирует семантику ---- {{#x|Test::*}} Тесты лежат в основе Перл-культуры ---- Дистрибутив Перла содержит тесты последние 22 года (с версии 1.0) {{ссылка|http://mirrors.develooper.com/perl/really-ancient-perls/oldperl/dist/leo/src/}} ---- Последние 12 лет поставляется фреймворк для написания тестов {{ссылка|http://cpansearch.perl.org/src/BINGOS/Module-CoreList-2.31/lib/Module/CoreList.pm}} ---- Сейчас на CPAN 1032 модуля Test::* {{ссылка|http://www.cpan.org/modules/02packages.details.txt.gz}} ---- Фреймворки, утилиты Test::More, Test::Builder, Test::Class, Test::MockObject, Test::LectroTest, Test::Deep ---- TAP — Test Anything Protocol http://testanything.org 22 года ---- черновик IETF RFC ---- Перл 5.8.0 — {{#x|26725}} тестов Перл 5.10.0 — {{#x|78883}} тестов Перл 5.10.1 — {{#x|92697}} тестов Перл 5.12.1 — {{#x|164260}} тестов ({{#kw|make test}}, потом {{#kw|cd t/ && perl TEST -core}}) ---- {{#i|(для сравнения)}} Руби 1.9.1-p376 — {{#x|945}} тестов в 173 раза меньше ({{#kw|make test}}) ---- Perl::Tidy исправляет синтаксис Pod документирует Perl::Critic анализирует семантику Test::* тестируют ---- {{#x|Devel::Cover}} Анализ покрытия Показывает, какой код тестируется По операторам, по ветвлениям, по условиям Анализирует покрытие документации {{ссылка|http://search.cpan.org/dist/Devel-Cover/}} ---- Отчёты в HTML {{img src="images/cover.png" width="663" height="217"}} {{ссылка|http://pjcj.sytes.net/cover/latest/}} ---- {{img src="images/cover2.png" width="684" height="353"}} ---- Perl::Tidy исправляет синтаксис Pod документирует Perl::Critic анализирует семантику Test::* тестируют Devel::Cover анализирует тесты ---- Все эти инструменты появились не вчера. Набор сформировался за последние 5 лет. ---- {{#s|1. Перл умер}} {{#s x|2. Перл тяжело читать}} 3. Перл 6 убивает Перл 5 ---- {{#s|1. Перл умер}} {{#s|2. Перл тяжело читать}} {{#v|3. Перл 6 убивает Перл 5}} ---- {{#x|Перл 6 спас Перл 5!}} {{#i|«Перл 5 уже начал умирать, потому что}} {{#i|люди воспринимали его как тупиковый}} {{#i|язык.}} {{#i|Странно, но когда мы объявили Перл 6,}} {{#i|Перл 5 неожиданно обрёл второе дыхание»}} — Ларри Уолл, 2002 {{ссылка|http://dev.perl.org/perl6/talks/2002/onion2002/2002.txt.htm}} ---- {{#x|Перл 6 спас Перл 5!}} В 2000 году разработка Перл практически остановилась. Мейллисты погрязли в спорах о будущем. ---- Запуск проекта Перл 6 развязал гордиев узел ---- С тех пор у Перл 5 всё хорошо ---- Очень много рефакторинга в результате проекта Перл-5-на-Пэрроте ---- Пэррот — виртуальная машина для Перл 6 и других динамических языков ---- Масса новых возможностей из Перл 6 попала в Перл 5 ---- 5.8.0 — 2002 5.8.8 — 2006 5.10.0 — 2007 5.10.1 — 2009 5.12 — 2010 5.12.1 — 16 мая 2010 {{ссылка|http://perldoc.perl.org/perlhist.html}} ---- о темпах разработки можно судить по тестам: Перл 5.8.0 — {{#x|26725}} тестов Перл 5.10.0 — {{#x|78883}} тестов Перл 5.10.1 — {{#x|92697}} тестов Перл 5.12.1 — {{#x|164260}} тестов ---- {{#x|Некоторые вехи в развитии Перл 5}} 2002 — Module::Build, Test::Builder 2003 — PAR, Perl 5.8.1 2004 — CPANTS 2005 — PPI, Perl::Critic 2006 — Moose, Strawberry Perl 2007 — Devel::Declare, local::lib 2008 — Padre, EPO, 9000 километров Перла 2009 — PSGI, Perl Marketing, KiokuDB 2010 — Plack, Mojolicious ---- Всё это произошло {{#x|ПОСЛЕ}} запуска Перл 6! ---- Даже если прямо сейчас проект Перл 6 закроется ... ---- Он уже принёс огромную пользу оживив Перл 5 ---- {{#s|1. Перл умер}} {{#s|2. Перл тяжело читать}} {{#s x|3. Перл 6 убивает Перл 5}} ---- {{#s|1. Перл умер}} {{#s|2. Перл тяжело читать}} {{#s|3. Перл 6 убивает Перл 5}} ---- {{#i|«Давно пора бы пересмотреть отношение}} {{#i|к Перлу. Яваскрипт вернулся из}} {{#i|забытья. Пора и Перлу. В прошлом году}} {{#i|я был на докладе Тима Банса, где он}} {{#i|показывал примеры свежего кода. Очень}} {{#i|красивые. Кто-то из зала спросил,}} {{#i|что это за язык? Тим скромно ответил,}} {{#i|что это Перл.»}} — Уолтер Хиггинс {{ссылка|http://jeremy.zawodny.com/blog/archives/009873.html#comment-39486}} ---- {{#kw|say}} {{#v|@bonus_slides}}; ---- Мифы Перл 6 ---- Главный миф Перл 6 состоит в том, что он никогда не выйдет. ---- Мифы вида «событие X никогда не произойдёт» невозможно развенчать :) ---- Поэтому предлагаю подождать месяц. Релиз Rakudo Star намечен на начало июня. ---- Спасибо! kapranoff.ru © Алексей Капранов, 2010, kapranoff.ru, friendfeed.com/kkapp для DevConf 2010 К борьбе против изобретения велосипедов будь готов! æ