Джесси Винсет[email protected]@obra
Perl 5.16 и что мы о нём ещё не знали
Возвращение Perl 6Менеджер проектов
Возвращение Perl 6Менеджер проектов
Perl 5 Pumpking
Perl 5 Pumpking
Perl 5 Pumpking
Perl 5 Pumpking
Что такое Pumpking?
BDFL(Великодушный пожизненный диктатор)
BDFL(Великодушный пожизненный диктатор)
BDFL(Великодушный пожизненный диктатор)
Я принимаю решения
(непопулярные)
Я ставлю
(реальные задачи)
Я документирую
(ход работы и принципы)
Я снимаю стресс
(у других людей)
Я — менеджер
Итак, кто делает Perl?
Много замечательных людей
Я же просто стою в сторонке...
...пока другие люди заняты
замечательными вещами
Твоё имя есть в списке авторов Perl?
Ты CPAN-автор?
Ты крут!
Ты делаешь Perl
Правилаклуба Perl
commit e8cd7eae0498ecc1fd3801fe3160Author: Гурусами Сарати <[email protected]>Date: Sun Oct 10 23:48:07 1999 +0000
добавил perlhack.pod от Натана Торкингтона <[email protected]>
Правило первое
Ларри всегда знает, что Perl должен делать
Правило второе
Ларри вправе менять своё
мнение со временем...
...несмотря на то, что есть Первое
правило
Я не Ларри
Я и рядом с ним не стою
У меня нет таких ярких рубашек
У меня нет таких ярких рубашек
Правила существуют не только для Ларри
Не только для парней из Pumpking
Они также работают для Perl 5
Как?
Правило первое
Perl всегда прав!
(TMTOWTDI)
Правило второе
Perl 5 может...
изменить своё мнение?
Поменять наше мнение просто
Нам вообще легкоэто удаётся
Перестать носиться туда-сюда и менять решение — очень
сложно
...и из-за этого появляются проблемы
По крайней мере, я не слышал, что
Perl умер!
Perl умер!1!!
Perl умер!1!!один!
Всё, что я недавно слышал было...
Куда мы идём?
Всё меняется слишком быстро. Давайте чуть
медленнее?
Вы сделали регекспы сложными? /$#@!/l?
"Умное сопоставление" названо неверно...
Какое же оно умное, если это полная шиза?
Раз Perl 5 не мёртв, может переименуем его?
Меня обвиняют в том, что у меня нет видения Perl 5
Чегоу меня нет,
так это защитного костюмаhttp://en.wikipedia.org/wiki/File:Dance_Dance_Immolation.jpg
Чегоу меня нет,
так это защитного костюмаhttp://en.wikipedia.org/wiki/File:Dance_Dance_Immolation.jpg
perl5-porters
Если бы я рассказал о своем видении
2 года назад...
Вы бы смеялись надо мной
Улучшение Perl 5 не имело смысла
Мы даже новый релиз выпустить не могли
А за прошлый год...
ПятьСтабильныхРелизов
Десятокрелизов для разработчиков
Perl 5.14.2 — стабильный релиз Perl 5 на сегодняшний день
Вышел в сентябре
Чтобы подготовить релиз у нас уходило
3 недели
Но мы заставили парней из Pumpking
сделать это
Теперь на подготовку релиза уходит меньше дня
Задокументирован процесс
из 43-х шагов
Мы постоянно меняем
релиз-инженеров
Многие из них — новые коммитеры
Релиз-инженерам нужны commit-биты
С тех пор как мы перешли на git,
мы почти удвоили число коммитеров
И конец света не наступил
Многие из релиз-инженеров
стали продуктивными контрибьюторами
Теперь когда с релизами понятно...
Видение Perl 5
Новые версии Perl 5 не должны ломать
ваш софт
Старый синтаксис и семантика
не должны останавливать развитие Perl 5
Нам необходимо ошибаться, если мы решили переделать Perl 5
Мы будем ошибаться, если мы решили переделать Perl 5
И мы ошибались, пока переделывали
Perl 5
И нам нужно немного прийти в себя
Сейчас runtime слишком длительный, его нужно сократить
У Perl должно остаться адекватное поведение по умолчанию
Нам нужно прийти в себя после прошлогодних
«адекватных поведений»
Нужно сделать возможным, чтобы в
Perl 5 было больше Perl 5
Perl должен запускаться везде
Правило второе: Perl может менять своё мнение
И это уже так
И это вредит программам и программистам
Когда код работает, вы не думаете о его семантике
use v5.14;
«А есть Perl 5.14 или новее?»
«Что-нибудь посвежее, чем 5.14.0
было бы великолепно!»
«Хорошо. У меня 5.30. Наслаждайтесь!»
Это бесполезно
Нужно что-то менять
Отныне объявляйте ожидаемую вами версию Perl
use v5.16;
«Хочу, чтобы Perl 5 работал как 5.16»
Runtime должен гордиться такой просьбой
Perl должен обладать максимально
близкой семантикой, о которой вы просите
Новые фичи не должны работать,
указывая ‘use v5.$тарый;’
Нам критически необходимо развиваться
Нам нужен запасной выход
Нам нужноВторое Правило
Если вы объявляете старую версию, то получаете старый синтаксис и семантику
...по крайней мере, насколько это возможно
Совершенство недостижимо
Мы можем пойти намного дальше, нежели сейчас
Нарушение существующего кода должно стать
крайней мерой
В исключительных случаях мы можем нарушить обратную совместимость
Некоторые сумасшедшие штуки нельзя исправить
опционально или лексически
Это займет уйму времени и сил
Уйму времени и сил!
Но это не невозможно
Устаревшие конструкции
Сейчас исправление устаревших конструкцийзанимает 1 год
«В 5.16.0 есть ещё предупреждения»
«В 5.18.0 будет всё в порядке»
Выясняется, что это слишком быстро
Совсем немного ОС выпускаются
так же часто
Мы можем вносить изменения быстрее
Если в старом коде это ещё работает, меняем так, чтобы не было
периода устаревания
Иногда необходимо выпускать говнофичи, чтобы они не
блокировали важных улучшений
Если мы не можем эмулировать старые фичи для старого кода, период устранения затягивается
«Это не работает в коде с объявлением
‘use v5.16’»
«В старом коде на 5.16.0 сыпятся
предупреждения»
«И в 5.18.0 тоже сыпятся!»
«Зато в 5.20.0 такого уже
не будет»
Правило второе иСтарые Модули
Мы заняты не только устаревшими конструкциями и
задрачиванием старых неработающих фич
Мы делаем то же самое и со старыми
модулями
Все они окажутся на CPAN
Это вредит пользователям,
которые пишут код, «не используя внешние
модули»
Нам же нужно это упростить, чтобы добавить в Perl 5 две штуки:
Hotel California(Eagles)
Last thing I remember, I wasRunning for the doorI had to find the passage backTo the place I was before’relax,’ said the night man,We are programmed to receive.You can checkout any time you like,But you can never leave!
Это традиционный Perl
The Times, They Are A-Changin’(Bob Dylan)
The line it is drawnThe curse it is castThe slow one nowWill later be fastAs the present nowWill later be pastThe order is rapidly fadin’And the first one now will later be lastFor the times they are a-changin’
Это Bootstrappable Perl
Мы занимаемся тем, чтобы упростить язык
Perl — большой язык
Есть языки и больше
Большим языком сложнее управлять
Большой язык сложнее учить
В большом языке сложнее исправлять
баги
У нас всё нормально, но ещё не блещем в разработке языка
У нас замечательные модули, как и сообщество
Как мы сделаем Perl компактнее?
Можно загружать модули, которые вводят новые встроенные
функции
Можно загружать модули, которые вводят старые встроенные
функции
Время начинать...
...рефакторинг
На самом деле, многое в Perl 5 не является частью
языка Perl 5
Всё это — звенья цепи Perl 5
И мне нравится наша цепь
Я имею в виду не только
устаревшие конструкции
...но и удаление
SysV IPC функций
Функций ввода-вывода для сокетов
Функций Unix- пользователя и группы
Функций Unix-сети
Функций процесса и группы процессов
Форматов
Умного сопоставления
...и вероятно ещёкучи всякой всячины
Если вы не используете ‘use v5.16’,
то вы получите то, что было в 5.14
Реализация SysV может быть модулем
Как пользователя Perl 5, вас это не должно тревожить
...и вы даже не сможетеэто заметить
В будущем мы вероятно исправим пару багов в коде
Вы сможете использовать обновления без необходимости
обновлять весь Perl 5
Возможно, однажды мы уберем то, что есть в
runtime по умолчанию
Любая добавленная фича требует столь драгоценной нам
памяти
Любая добавленная фича требует столь нужного
психического здоровья
Таким образом, нужно явно говорить, чтохотите использовать старую фичу
...но только если v5.16
...но только если v5.18
...но только если v5.20
И с уже написанным кодом ничего не произойдёт
Многие, очень многие вопросы пока еще
без ответов
Но все это можно сделать!
Мы двигаемся вперёд довольно
быстро
Мы сделали нечто такое...
Что я никогда бы не сделал снова
Теперь я куда более скептически отношусь
к новым фичам
...по крайней мере, к тем, которые
не упрощают всё и не заменяют собой другие
Нам обязательно нужныадекватные
поведения по умолчанию
Сколько же безумного в Perl 5
Безумный синтаксис
Безумная семантика
Безумие внутри
Безумные модули
Может самое время сделать что-нибудь
с этим?
Мы уже начали
“use v5.12”включает
“use strict;”
Что же дальше?
warnings по умолчанию
autodie-стильпо умолчанию
Мы должны использовать
исключения, а не просто return при
ошибке
Я не хочу, чтобы мы спорили
об иерархии исключений
Чёрт, да я буду счастлив, если мы начнём хотя бы с dying при
«well-defined strings»
(Я в восторге от иерархии исключений)
open() с 2 аргументамиперестало быть по умолчанию
open() с 1 аргументомперестало быть по умолчанию
Не будет больше разделитей '
для имени модулей
Больше не будет считаться, что по
умолчанию кодировкаLatin-1
Везде utf-8по умолчанию
Простая и понятная мета-модель с классами и методами
Никаких косвенных вызовов
у объектовпо умолчанию
Только если, вы объявили “use v5.16”
Только если, вы объявили “use v5.18”
Только если, вы объявили “use v5.20”
Perl должен быть понятнее, проще и легче в работе
Для пользователей...
...и для тех, кто это будет разрабатывать
Perl должен запускаться везде
Не только на любой платформе
Не только на любой ОС
Но и на каждой виртуальной
машине
В каждом Браузере
На каждом Телефоне
Почему Perl 5 не работает на других
runtimes?
«Потому что нет спецификации»
Но это не остановило Ruby
«Только Perl 5 может распарсить Perl 5»
Но это не остановило PPI
Чтобы выжить, отчаянному хакеру необходимо суметь переписать Perl 5
Спасибо за внимание!
Большое спасибо отдельным спонсорам!
Вопросы?http://blog.fsck.com [email protected]@obra
Значит, вы хотите поменять имя?
Что-то типаPerl 7?
Или Raptor?
Наш язык называетсяPerl 5
Perl 6 — наша развитая не по годам
«сестрёнка»
Я бы рад поговорить о переименовании
Perl 5...
...если вы напишите мне вторую реализацию
...которая пройдёт все тесты
Оригинальная презентацияhttp://slidesha.re/FnClbQ7
Перевод — Точка Кипенияhttp://tochkak.ru