Как стать автором
Обновить

Комментарии 8

было бы намного интереснее, если бы описывалось только, чем perl6 отличается от perl5. Ну или если бы эти отличия хотя бы как-то в тексте выделялись. А то читать и пытаться выловить что-то незнакомое очень напрягает.

Так что там — типы записывать как Тип(), Bool, Pair(), Any(), явное задание строкового и логического контекста. Что еще?
Что касается переменных, хотя Я и не описывал это в статье, для получения элемента массива теперь нужно делать так:
my @arr = (1, 2, 3);
say @arr[0];
@arr = (3, 2, 1);
my %hash = (1=>'a', 2=>'b');
say %hash{2};
%hash = ('c'=>3, 'd'=>4);

т.е. теперь нет разницы, к чему идет обращение — к элементу массива или самому массиву — нужно использовать символ '@'. Аналогично с хэшами.
Так же отличие в том, что теперь по умолчанию переменные обязательно должны быть объявлены с помощью слов my или our или слов из той же группы.
Ещё одно на мой взгляд главное отличие — это способ хранения чисел в памяти — в пятом перле при присвоении переменной слишком большого целого числа, это число округлялось. В шестом округлений как я понял не происходит.
Ну и напоследок добавлю, что переменным можно указывать, какие именно типы будут хранится в них
my Int $number;
my Str $string;

однако это отличие в данной статье не описывалось. Я как раз собирался второй статьей описать возможность по указанию типов.
Честно говоря, читая такие статьи (и понимая что в них всё действительно правда, как не сложно в это поверить) — возникает вопрос: зачем столько сил потрачено на perl6? Ну можно там делать

my %hash = (1=>'a', 2=>'b');
say %hash{2};

— так в пятом теперь можно делать

my $hash = {1=>'a', 2=>'b'};
say $hash{2};

и ради этого десять лет пиара? Столько сил угроблено…
Мне кажется что десять лет хоть и многовато, но в результате получился вполне неплохой (по описанным возможностям) язык — ведь все отличия в одной статье не опишешь.
Отличия описанные в предидущем комменте это отличия, более менее связанные со статьей, но есть и такие отличия как возможность перегрузки функций, имеющих разные сигнатуры, работа с классами теперь идет без прибегания к bless'у, возможно полноценное наследование, так же то что в функциях могут быть указаны именованные (вроде так называется) аргументы, когда вызов происходит как FuncName(param2=>'value2', param1=>'value1'). Ещё можно сказать о файлах: теперь при открытии файла возвращается его дескриптор, который хранится как скаляр, а не как в пятом перле в ещё одном пространстве имен, и дескриптор представляется в виде объекта.
Незнаю существенно это или нет, но теперь Perl6 код по подобию Java компилируется в байт код, который потом интерпретируется виртуальной машиной.
Вобщем отличия есть — некоторые покажутся как косметический ремонт, но есть отличия, которые значительно увеличивают возможности разработчика или облегчают его труд.
Так дело-то в том, что то что Вы описали как отличия — либо отличиями не является, так как работает так же как и в 5-м перле, либо отличия минимальны. Вот наследование и пространства имён более интересно. Хотя мне кажется, что последние изменения в perl5 превратили его в более-менее приемлемый язык для современного использования.

Виртуальная машина вообще сама по себе интересна… точнее интересна, если представить себя в 2000-м году. Мне кажется, perl6 вообще был задуман как проект для обучения студентов, без изначальной ориентации на практическое применение. Иначе не объяснить, что столько людей столько времени делали.

Только что заметил что статья из песочницы. Мог бы — плюсанул бы. Но стоит добавить что-то более интересное.
Как раз наоборот, Perl6 был задуман как замена пятому, а так же «языком будущего» (не помню только где уже вычитал эту фразу). Однако фразу эту подкрепляли тем, что в язык были добавлены возможности многих уже существующих языков программирования, а так же старались не повторять их ошибок.
Но про то получит ли шестой перл популярность мы узнаем когда закончат разработку вирт. машины, а про задумку как проект для обучения — про это буду говорить как только получше узнаю, на что способен шестой перл.
Да кстате, что касается отличий Новый вид регулярных выражений в шестом перле Синтаксис мог конечно с того времени поменяться, однако в синопсах эти грамматики описываются.
Я имел ввиду, что процесс создания perl6 имеет много учебного значения, но мало практического, а не то, что на нём как на языке программирования будут кого-то учить. То есть кучу удовольствия все получают от процесса создания языка, но не от его использования. И это неудивительно — существующие популярные языки были созданы одним автором, из этого правила, наверно, исключения нет, так что будущее perl6 уже понятно.
Шестой перл начали разрабатывать с нуля не от скуки. Делали все это для облегчения написания скриптов, т.к. в пятом все конечно работало, но для работы с теми же объектами приходилось совершать лишние телодвижения. В шестом стало побольше удобных синтаксических конструкций, и самое главное, что различные возможности, как то же создание объекта, сделаны не надстройкой над языком, а уже учтены в самом языке.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации