Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Андрей Шитов
Perl готовится сделать новый рывок и оставить конкурентов позади. До круглой цифры счетчику версий осталось совсем немного, всего 0.1.2 версии.
Про Perl 6 впервые начали говорить в 2000 году, когда было принято решение переписать существующий язык с чистого листа. Исторически сложилось так, что формального стандарта никогда не существовало. Стандартом пятой версии фактически был язык, воплощенный в интерпретаторе. Желание иметь четкие правила – одна из предпосылок к созданию нового языка.
Кроме того, требовались изменения, чтобы, с одной стороны, очистить язык от устаревших конструкций (например, GLOB), а с другой – добавить «современности» (например, включив в язык полноценную поддержку классов).
Часть 1. До языка
К сожалению для разработчиков и к счастью для стандарта, после шести лет еще не существует ни окончательных правил, ни полноценного компилятора. Тем не менее, уже сегодня язык можно применять на практике (хотя так будут поступать разве что истинные энтузиасты), а уж познакомиться с языком просто необходимо.
Общее направление задал создатель Perl Ларри Уолл: в статьях под общим названием «Откровения» (Apocalypses) описано, каким он видит будущий язык.
Позже появился еще один цикл «Толкования» (Exegeses), в которых Дамиан Конвей поясняет «Откровения» на примерах. И, наконец, существует начатый Эллисон Рэндал набор «Конспектов» (Synopses); они по сути являются спецификацией, от которой отталкиваются разработчики компиляторов.
Одна из разработчиков (да, это женщина!) нового компилятора Одри Танг (Audrey Tang) изобразила на условном графике эволюцию Perl 6. Развитие временами напоминает хаос, тем не менее, надежда увидеть работающий Perl 6 есть.
Условная кривая развития Perl 6. (Рисунок Одри Танг)
Perl 6 и Perl 5
Синтаксис пятой и шестой версий не совместим друг с другом. Поэтому, чтобы начать изучать Perl 6, не обязательно предварительно осваивать Perl 5. Однако программистам, знакомым с пятой версией, будет проще понять многие конструкции, которые в новую версию либо полностью перешли из предыдущей, либо изменились только косметически.
Perl 5 и Perl 6 не просто разные версии одного языка. Правильнее будет сказать, что это два разных языка, объединенных одной идеей. Нынешние компиляторы не способны выполнить программу другой версии. Тем не менее изначально предполагалось, что рабочая версия нового компилятора станет универсальной.
Кстати, предыдущий «апгрейд» языка с четвертой версии на пятую тоже требовал от программистов дополнительных усилий из-за некоторых несовместимостей.
Архитектура
«Прошлый» Perl всегда был интерпретируемым языком. Это часто давало повод противникам говорить о невозможности применять язык в критических по времени приложениях. Наличие mod_perl и компиляторов perl2exe не спасает положения, поскольку, например, для программирования под mod_perl требуется учитывать специфические ограничения, а perl2exe редко способен сгенерировать работающий код для программы, более сложной, чем «Hello, World!».
В Perl 6 с самого начало было решено изменить традиционный подход и применить схему «программа – компилятор – байт-код – виртуальная машина». Эта схема не новая, и к 2000 году уже работала с языком Java, а чуть позже в технологии .NET.
Новый цикл разработки программ на Perl 6 дает сразу два преимущества. Во-первых, во время выполнения теперь не требуется интерпретировать исходный код, вместо этого виртуальная машина выполняет предварительно скомпилированный байт-код (идеология Java в чистом виде). Во-вторых, появилась возможность создавать программы из частей на разных языках, для которых созданы трансляторы в байт-код (идеология .NET). На первый взгляд может показаться, что не было смысла создавать собственный формат байт-кода, а воспользоваться, например, правилами .NET. Но основные языки, с которыми работает .NET, – языки с сильной типизацией. Байт-код же, используемый для Perl 6, сконструирован с расчетом на динамические языки без фиксированных типов данных, подобные Perl, например, Python и Ruby.
Наличие промежуточного байт-кода не отменяет преимущества новой версии как традиционного скриптового языка. Программу всегда можно модифицировать на ходу, выполняя ее с командной строки и не задумываясь о том, что происходит внутри компилятора.
Parrot, PASM, IMC, PBC, Ponie, PIR, PUGS, PIL, Perl6::*
История развития за последние шесть лет, даже несмотря на наличие генплана, испещрена названиями и аббревиатурами; часть из них уже потеряли свою актуальность.