Perl 6http://perl6.ru/Сайт-блог одного актера, который знакомится с Perl 6 и рассказывает об этом в интернете.ru-ruThu, 29 Jul 2010 19:11:57 +0300Thu, 29 Jul 2010 19:11:57 +0300 Габор Сабо. Массивы в Perl 6http://perl6.ru/articles/cast-arrays/Thu, 29 Jul 2010 22:40:00 +0300perl6Вышел Rakudo Starhttp://perl6.ru/6ijflyji0w97isab541z/<a href="http://github.com/rakudo/star/downloads">github.com/rakudo/star/downloads</a>Thu, 29 Jul 2010 16:24:00 +0300rakudoperlperl6Габор Сабо. Скаляры в Perl 6http://perl6.ru/articles/cast-scalars/Thu, 29 Jul 2010 02:06:00 +0300perl6Июньский релиз Rakudo — «Kiev»http://perl6.ru/s67vktr4s77fqzhdzq71/<p>30-й релиз <a href="http://rakudo.org/">Rakudo Perl 6</a> вышел под кодовым названием «Kiev».</p> <p>Решение о названии принято после того, как <a href="http://onperl.ru/onperl/2010/06/xakmit-na-perl-mova-yapcrussia.html">на хакмите в Киеве</a> в разработку было успешно вовлечено несколько желающих (никогда раньше этим не занимавшихся) и сделано несколько коммитов.</p> <p>Сейчас компилятор проходит 33 378 тестов из спецификации, что составляет около 83% их общего числа.</p>Fri, 18 Jun 2010 10:56:00 +0300kievrakudoperlperl6Daily dose of Perl 6http://perl6.ru/aaron-sherman/<p>Aaron Sherman начал публикацию ежедневных заметок с примерами кода на Perl 6 и объяснениями.</p> <p><a href="http://www.google.com/profiles/AaronJSherman#buzz">www.google.com/profiles/AaronJSherman#buzz</a></p>Sat, 29 May 2010 17:58:00 +0300shermanexplanationexamplecodesnippetperlperl6Дамиан Конвей про Perl и его будущееhttp://perl6.ru/interviews/damian-conway-on-perl-and-its-future/Thu, 27 May 2010 22:19:00 +0300perl6Карл Мэсак о Perl 6http://perl6.ru/interviews/carl-masak-on-perl6/Thu, 20 May 2010 00:25:00 +0300perl6Разбор программы построения множества Мандельброта. Часть Ihttp://perl6.ru/mandelbrot-1/<p>В октябре 2003 года я рассказывал о синтаксисе Perl 6 на примере программы, которая <a href="http://perl6.ru/15/">рисует фрактальное множество Мандельброта</a>. Настало время повторить историю: если прежняя программа входила в состав самого первого прототипа компилятора языка, то теперь появились отдельные небольшие проекты, посвященные тестированию Perl 6. Сегодня речь пойдет о <a href="http://github.com/colomon/mandelbrot/">программе mandelbrot</a>, размещенной на гитхабе. Интерес, прежде всего, вызывает сам язык: в прошлый раз он был намного ближе к Perl 5 и содержал лишь островки нового синтаксиса.</p> <p style="margin-left:40px">Небольшое отступление о том, что такое множество Мандельброта. Это фрактальная область, закрашенная на комплексной поверхности, в каждой точке <i>c</i> которой последовательность <i>z<sub>n+1</sub> = z<sub>n</sub><span style="margin-left:-0.2em">&#178;</span> + c</i> не уходит в бесконечность при росте <i>n</i> (<i>z</i> начинается с нуля). Другими словами, суть в том, что постоянная добавка от квадрата точки будет либо компенсироваться из-за того, что мнимая единица дает отрицательную величину, либо — при большом расстоянии от начала координат — накопит бесконечную сумму.</p> <p style="margin-left:40px">На самом деле, математику, стоящую за множеством, придумал Пьер Фату, а Бенуа Мандельброт лишь построил картинку на компьютере, когда они появились (еще задолго до Perl 6).</p> <p>Программа начинается инструкцией:</p> <tt><p>use v6;</p></tt> <p>Раньше было увлечение именовать файл с программой на Perl 6 с расширением .p6, но ведь, действительно, лучше внутри написать use v6, а расширение оставить прежним — .pl.</p> <p>Далее следуют не очень интересные инициализации переменных:</p> <tt><p>my $height = @*ARGS[0] // 31;<br /> my $width = $height;<br /> my $max_iterations = 50;</p></tt> <p>Здесь следует обратить внимание на три факта: аргументы командной строки содержатся в глобальном массиве @*ARGS (на глобальность указывает второй сигил [твигил] звездочка), нумерация аргументов начинается с нуля, а сигил массива остается неизменным даже при обращении к отдельному элементу. Кроме того, в первой строке присутствует оператор defined-or (<tt>//</tt>), который уже больше двух лет доступен <a href="http://onperl.ru/cgi-bin/mt/mt-search.cgi?blog_id=1&tag=5.10&limit=20">в Perl 5.10</a>.</p> <p>А дальше начинается срыв башки:</p> <tt><p>my $upper-right = -2 + (5/4)i;<br /> my $lower-left = 1/2 - (5/4)i;</p></tt> <p>В этих строках определены границы прямоугольной области, в которой будут вестись все вычисления. Во-первых, в именах переменных разрешены дефисы (это всегда удобно, хотя и может привести к небольшой путанице в арифметических выражениях, но необходимость сигилов в именах переменных спасает положение). Во-вторых, без всяких хлопот создаются константы — комплексные числа. (<a href="http://perl6.ru/18/">Как и с интервальными условиями</a>, близость к математической нотации делает код прозрачнее и понятным большему числу читателей.)</p> <p>Программа печатает на стандартный вывод данные в формате BPM (второй вариант программы делает цветной PPM) — картинку, сериализованную в обычный текст с координатами цвета в точках.</p> <tt><p>say "P1";<br /> say "$width $height";<br /> <br /> for subdivide($upper-right.re, $lower-left.re, $height) - $re {<br /> my @line = subdivide($re + ($upper-right.im)i, $re + 0i, ($width + 1) / 2).map({ mandel($_) });<br /> my $middle = @line.pop;<br /> (@line, $middle, @line.reverse).join(' ').say;<br /> }</p></tt> <p>Встроенная функция say, опять же, доступна и в Perl 5.10.</p> <p>Дальше идет цикл for с переменной цикла $re. Переменная объявлена после «стрелочки» <tt>- </tt>, слева от которой стоит вызов функции, возвращающей список. Здесь же следует обратить внимание на то, что комплексные переменные предоставляют аксессоры для доступа к действительной (.re) и мнимой (.im) частям. Они доступны в переменных типа Complex, как и метод .abs (он встретится далее), возвращающий модуль числа.</p> <p>Тесты к спецификации по комплексным числам находятся в файле <a href="http://svn.pugscode.org/pugs/t/spec/S32-num/complex.t">t/spec/S32-num/complex.t</a>.</p> <p>Дальше — игнорируя алгоритм построения самого множества — код понятен, если держать в голове воплощенный в Perl 6 принцип о том, что на любом значении можно вызывать методы (если это имеет смысл). Соответственно, вместо вызова встроенных (глобальных) функций map, pop, join, reverse и say с соответствующим числом аргументов автор использует ОО-нотацию и вызывает одноименные методы (число необходимых аргументов при этом уменьшается на единицу).</p> <br /> <p><i>Продолжение будет,</i> но для привлечения внимания вот картинка, построенная описываемой программой:</p> <p><img src="/img/201.gif" width="201" height="201" alt="Множество Мандельброта, построенное программой на Perl 6" /></p>Tue, 11 May 2010 01:41:00 +0300rangemandelperlperl6Апрельский релиз Rakudo — «Moscow»http://perl6.ru/moscow-rakudo/<p>28-й релиз <a href="http://github.com/rakudo/rakudo/downloads">Rakudo Perl 6</a> вышел под кодовым названием «Moscow».</p> <p>Решение о названии, в частности, принято из-за того, что в апреле в Москву приезжал Джонатан Вортингтон, один из разработчиков Rakudo.</p> <p>Сейчас компилятор проходит 30 931 тест из спецификации, что составляет около&#160;79% их общего числа.</p>Thu, 22 Apr 2010 16:29:00 +0300moscowrakudoperlperl6Хакатон, посвященный Perl 6http://perl6.ru/7l1wnm48z8uhwozwuy88/<p>Открылась регистрация на хакатон <a href="http://conferences.yapceurope.org/hack2010dk/">Perl 6 Hackathon</a>&#160;2010 года, посвященный Perl 6. Мероприятие состоится в Копенгагене 6 марта.</p> <p class="img" align="center"><a href="http://conferences.yapceurope.org/hack2010dk/"><img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" alt="" width="500" height="460" src="http://perl6.ru/img/hack2010dk.jpg" /></a></p>Wed, 27 Jan 2010 23:07:00 +0300hackathoneventperlperl6