perl 5.16 and beyond by jesse vincent (Русская версия)

Post on 11-Jun-2015

11.086 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Доклад с YAPC::Asia 2011Оригинал http://www.slideshare.net/obrajesse/perl-516-and-beyond-yapcasia-2011Перевод http://tochkak.ru

TRANSCRIPT

Джесси Винсетjesse@perl.org@obra

Perl 5.16 и что мы о нём ещё не знали

Возвращение Perl 6Менеджер проектов

Возвращение Perl 6Менеджер проектов

Perl 5 Pumpking

Perl 5 Pumpking

Perl 5 Pumpking

Perl 5 Pumpking

http://flic.kr/p/6StRmB

Perl 5 Pumpking

Что такое Pumpking?

BDFL(Великодушный пожизненный диктатор)

BDFL(Великодушный пожизненный диктатор)

BDFL(Великодушный пожизненный диктатор)

Я принимаю решения

(непопулярные)

Я ставлю

(реальные задачи)

Я документирую

(ход работы и принципы)

Я снимаю стресс

(у других людей)

Я — менеджер

Итак, кто делает Perl?

Много замечательных людей

Я же просто стою в сторонке...

...пока другие люди заняты

замечательными вещами

Твоё имя есть в списке авторов Perl?

Ты CPAN-автор?

Ты крут!

Ты делаешь Perl

Правилаклуба Perl

commit e8cd7eae0498ecc1fd3801fe3160Author: Гурусами Сарати <gsar@cpan.org>Date: Sun Oct 10 23:48:07 1999 +0000

добавил perlhack.pod от Натана Торкингтона <gnat@frii.com>

Правило первое

Ларри всегда знает, что 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 jesse@perl.org@obra

Значит, вы хотите поменять имя?

Что-то типаPerl 7?

Или Raptor?

Наш язык называетсяPerl 5

Perl 6 — наша развитая не по годам

«сестрёнка»

Я бы рад поговорить о переименовании

Perl 5...

...если вы напишите мне вторую реализацию

...которая пройдёт все тесты

Оригинальная презентацияhttp://slidesha.re/FnClbQ7

Перевод — Точка Кипенияhttp://tochkak.ru

top related