The OpenNET Project / Index page

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



"Состоялся рождественский релиз Perl 6"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
"Состоялся рождественский релиз Perl 6" +/
Сообщение от opennews (?), 26-Дек-15, 09:42 
Увидел свет (https://perl6advent.wordpress.com/2015/12/25/christmas-is-here/) компилятор Rakudo 2015.12 (http://rakudo.org/) "коледа", который отмечен (https://twitter.com/TimToady/status/680511168713064448) Ларри Уоллом (Larry Wall) как первый релиз языка программирования Perl 6 (http://www.perl6.org/). Rakudo является одним из компиляторов Perl 6, преобразующих программы в байткод, который затем выполняется в специальной виртуальной машине. По умолчанию предлагается виртуальная машина MoarVM (http://moarvm.org/), в качестве опций могут использоваться (http://perl6.org/compilers/features) виртуальные машины JVM (ранее используемая универсальная виртуальная машина Parrot (http://parrot.org/) в последних выпусках Rakudo не поддерживается).

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


С особенностями 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, $!a, $.b);

-  Возможность указания необязательных аргументов функции и значений по умолчанию ("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: https://6guts.wordpress.com/2015/12/26/reflecting-celebratin.../
Новость: http://www.opennet.me/opennews/art.shtml?num=43593

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

Оглавление
Состоялся рождественский релиз Perl 6, opennews, 26-Дек-15, 09:42  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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