<
  • Главная
Статьи

Perl 6

  1. Документація по Perl 6 [ правити ]
  2. Продуктивність Rakudo [ правити ]

Perl 6 - це високорівнева мультіпарадігменний мова програмування загального призначення. Про плани створення Perl 6 вперше було оголошено ще в 2000 році, передбачалося, що це буде повна переробка Perl 5, створена з нуля. Розробка затягнулася на довгі 15 років і, нарешті, як і було спочатку обіцяно, перша стабільна реалізація Perl 6 з'явилася напередодні католицького різдва в 2015 році.

Perl 6 не є новою версією Perl 5, а є абсолютно самостійною мовою програмування. Обидві мови розробляються і розвиваються незалежно. На відміну від Perl 5, мова Perl 6 визначається з набору специфікацій мови RFC, яких на даний момент вже 361 штука. Таким чином, будь-яка програмна реалізація, яка відповідає даній специфікації, є реалізацією мови Perl 6.

Історично існувало кілька спроб реалізацією мови Perl 6: Pugs, написаний на Haskell, Niezha, реалізована на C #. Незабаром прийшли до ідеї про попередньої компіляції коду Perl 6 в низькорівневий байткод, який потім може виконуватися на будь-якої віртуальної машині. так з'явився Rakudo - реалізація компілятора Perl 6, яка використовувала в якості бекенд віртуальну машину Parrot . Згодом стало зрозуміло, що віртуальна машина Parrot не виправдовує надій, проект перестав розвиватися. З'явився проект компілятора Rakudo, який використовував як бекенд віртуальну машину JVM. А трохи пізніше в обстановці повної секретності була створена віртуальна машина MoarVM , Підтримка якої також була додана в Rakudo.

На конференції FOSDEM в лютому 2015 Ларрі Уолл оголосив, що в грудні 2015 буде випущена перша стабільна реалізація Perl 6, яка буде відповідати специфікації і це буде компілятор Rakudo, на основі віртуальної машині MoarVM. У грудні вийшла версія Rakudo 2015.12, яка отримала кодове ім'я «Коледа» або по-російськи Коляда, тобто Святвечір - свято передодня Різдва. Ця версія і стала першим офіційним релізом компілятора Perl 6.

Для установки компілятора Perl 6 в p8 / Sisyphus достатньо виконати команду:

$ Sudo apt-get install rakudo

У складі залежностей Rakudo є moarvm - віртуальна машина для виконання байткода, а також пакет nqp (Not Quite Perl) - легка реалізація Perl 6 з підтримкою об'єктної моделі і регулярних виразів для віртуальних машин, який використовується як високорівнева шар для реалізації повноцінного компілятора Perl 6.

Відразу після установки доступний компілятор Perl 6, виконуваний файл / usr / bin / perl6, який також є і найпростішим REPL (read-eval-print loop - цикл читання-виконання-друк), тобто консоллю для введення і виконання виразів на мові Perl 6.

$ Perl6> 1 + 1 2

Документація по Perl 6 [ правити ]

Для вивчення мови Perl 6 можна звернутися до офіційної документації Perl 6, доступною по посиланнях на https://perl6.org/documentation/ . В тому числі, хороший вступний документ «Perl 6 Introduction»

Документація російською мовою присутня в мережі, але може бути неактуальна, тому що мова встиг суттєво розвинутися. Можна відмітити статті Андрія Шитова в журналі Pragmatic Perl, починаючи з вступної статті «Perl 6 XXI століття»

Сам по собі мова немислимий без бібліотеки модулів, які надають різні функції і можливості. Пакет rakudo не надає ніяких базових модулів, тому досить актуальним стає установка модулів в систему. Як відомо, для Perl 5 основне джерело модулів це CPAN . Для Perl 6 також створений реєстр доступних модулів - це modules.perl6.org . Він не є сховищем модулів Perl 6, а веде на домашні сторінки модулів, які знаходяться на github.

Для установки модулів в Perl 5 використовуються утиліти cpan або cpanm, для Perl 6 також існує свій менеджер модулів - zef (раніше рекомендувався менеджер panda, але зараз він більше не підтримується). У pепозіторіі Sisyphus існує збірка менеджера zef, для його установки потрібно виконати команду:

$ Sudo apt-get install perl6-Zef

За замовчуванням основний репозиторій модулів поміщається в домашній каталог користувача в каталозі ~ / .perl6, але можлива установка і в системні каталоги. Таким чином, за допомогою zef можна шукати і встановлювати Perl 6 модулі:

$ Zef search Readline ===> Found 1 results --------------------------------------- ---------------------------------------- ID | From | Package | ... - -------------------------------------------------- ---------------------------- 1 | Zef :: Repository :: Ecosystems <p6c> | Readline: ver <0.0.2>: auth <github: drforr> | ... ---------------------------------------- --------------------------------------- $ zef install - force-test Readline == => Searching for: Readline ===> Searching for missing dependencies: LibraryCheck ===> Testing: LibraryCheck: ver <0.0.6>: auth <github: jonathanstowe> ===> Testing [FAIL]: LibraryCheck: ver < 0.0.6>: auth <github: jonathanstowe> Failed to get passing tests, but continuing with --force-test ===> Testing: Readline: ver <0.0.2>: auth <github: drforr> ===> Testing [FAIL]: Readline: ver <0.0.2>: auth <github: drforr> Failed to get passing tests, but continuing with --force-test ===> Installing: LibraryCheck: ver <0.0.6>: auth <github: jonathanstowe> ===> Installing: Readline: ver <0.0.2>: auth <github: drfo rr>

Продуктивність Rakudo [ правити ]

Всупереч розхожій думці, що Perl 6 дуже повільний, ситуація зі швидкістю роботи істотно змінюється. З'являються все нові оптимізації, поліпшується JIT в moarvm. існують бенчмарки для Perl 6 і можна спостерігати зміну в продуктивності компілятора:

Запуск простого привіт-світ займає близько 0.3 секунд, причому більший час витрачатися на парсинг коду. Це навіть швидше, ніж java.

$ Perl6 --stagestats -e 'say "hello, world!"' Stage start: 0.000 Stage parse: 0.251 Stage syntaxcheck: 0.000 Stage ast: 0.000 Stage optimize: 0.002 Stage mast: 0.010 Stage mbc: 0.000 Stage moar: 0.000 hello, world!

У деяких ситуаціях Perl 6 вміє оптимізувати краще ніж Perl 5:

# Сума чисел від 1 до 10млн $ time perl5 -e '$ sum + = $ _ for (1..10_000_000)' 1,30s user 0,01s system 99% cpu 1,309 total # сума чисел від 1 до 1млрд $ time perl6 - e 'say [+] 1 .. 1_000_000_000;' 0,29s user 0,06s system 99% cpu 0,341 total



Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью