The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Ларри Уолл представил Perl 6.0.0"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Второй уровень иерархии тем в форуме реализован через вкладку "Показ ключевых тем".
"Ларри Уолл представил Perl 6.0.0" +/
Сообщение от opennews (ok), 07-Окт-15, 10:44 
Ларри Уолл (Larry Wall), создатель языка программирования Perl, в своём выступлении в музее Эксплораториум в Сан-Франциско, представил (http://www.pigdog.org/auto/software_jihad/link/3138.html) первый тестовый выпуск Perl 6.0.0 (http://www.perl6.org/), пошутив, что теперь основным приоритетом станет исправление ошибок, которые случайно могут быть приняты за новые возможности. Объявляя дату финального релиза, Ларри воспользовался (http://www.10zenmonkeys.com/2015/10/06/the-night-larry-wall-.../) старой шуткой ("Дата релиза давно известна – это канун Рождества, в тайне пока остается только год этого события."), но на этот раз год релиза известен.


Perl 6 развивается более 15 лет, причём из них около 10 лет продолжалось ожидание финального релиза. Язык Perl 6 кардинально отличается от Perl 5 и может рассматриваться как созданный с нуля отдельный язык программирования, обладающий средствами метапрограммирования (возможность определения собственных синтаксических конструкций для расширения языка, в том числе создания новых инфиксных операторов) и встроенными объектно-ориентированными возможностями.

Вместо использования интерпретатора, в Perl 6 программы компилируются в байткод, который затем выполняется в специальной виртуальной машине. В качестве базовой  реализации Perl 6 развивается компилятор Rakudo (http://rakudo.org/), который может работать (http://perl6.org/compilers/features) с виртуальными машинами MoarVM (http://moarvm.org/) (по умолчанию), JVM и Niecza (https://github.com/sorear/niecza) (ранее используемая виртуальная машина Parrot (http://parrot.org/), в последних выпусках Rakudo не поддерживается).


С особенностями Perl 6 можно познакомиться в серии обзоров (http://pragmaticperl.com/authors/2) Андрея Шитова. Краткое резюме основных отличий от Perl 5:


-  Возможность определения типизированных переменных ("my Int $i;" или "sub count(Int $i){", если присвоить $i строковое значение будет выведена ошибка). Поддерживаются типы  Bool, Int, Str, Array, Hash, Complex, Num, Pair;
-  Система классов для объектно-ориентированного программирования (определение "class A {has $.i; method test($what)...}" и вызов "my $a = A.new(i => 1); say $a.i;"). Для наследования при объявлении класса следует указать родительский класс ("class B is A {" или "class C is A is B {").


-  Упрощение определения переменных ("my @list = 1, 2, 3;" или "my %hash = 'test1' => 1, 'test2' => 2;") и возможность использования Unicode в именах переменных ("my $переменная = 1;");
-  Определение области видимости переменной и элементов классов при помощи "твиглов" (%*ENV, $?FILE);
-  Возможность указания необязательных аргументов функции и значений по умолчанию ("sub func(Int $i?)", "sub func(Int $i = 1)");
-  Поддержка передачи аргументов функции по именам (определение "sub power(:$base, :$exponent)", вызов "power(:base(2), :exponent(3))");
-  Возможность создания вложенных функций и определения нескольких функций с одним именем (разделение по типам аргументов);
-  Методы параллельного программирования: каналы (http://pragmaticperl.com/issues/24/pragmaticperl-24-%D0...) и механизмы синхронизации (http://pragmaticperl.com/issues/26/pragmaticperl-26-%D0...);
-  Анонимные блоки-замыкания (http://pragmaticperl.com/issues/25/pragmaticperl-25-%D0...) ("my $cube = -> $x {$x ** 3};"), динамические переменные ("my $*var = 'Alpha'"),
-  Изменённый (http://pragmaticperl.com/issues/26/pragmaticperl-26-%D0...) синтаксис  регулярных выражений и возможность определения грамматик;
-  Широкий набор метаоператоров (http://pragmaticperl.com/issues/27/pragmaticperl-27-%D0...);
-  Метод ".WHAT" для быстрого определения типа переменной ($scalar.WHAT) и оператор "===" для сравнения объектов типов ("if  ($value.WHAT === Int)");
-  Переменная "$/" для записи результата сопоставления в регулярном выражении (совпавшую строку можно получить через $/.Str, для подстрок используется синтаксис $/[1] идентичный $1);
-  Переменная "$!" для доступа к сообщению об ошибке.


URL: http://developers.slashdot.org/story/15/10/06/217239/larry-w...
Новость: https://www.opennet.ru/opennews/art.shtml?num=43104

Ответить | Правка | Cообщить модератору

Оглавление
Ларри Уолл представил Perl 6.0.0, opennews, 07-Окт-15, 10:44  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру