Perl6

Dec. 9th, 2014 09:15 am
crower: (Crower)
[personal profile] crower
Хотел ещё вчера пост написать, но что-то жежешку плющило и колбасило.

Как-то интересовался шестым перлом. Даже книжку купил и читал. Что-то типа "Parrot и Perl6". Не скажу что особо меня тогда это дело зацепило, потому что было сырое и идеология до конца не выстроена. А тут снова попалась на глаза информация. И оказалось что в репах компилятор имеется даже. Ну почему бы не попробовать?

Первым делом я его, конечно, уронил в корку. :D
Ну, "как, как?" - дойдя до (пере)определения операций, знамо дело, попытался описать sub prefix:<Скажи> { say ... }. Вот тут то он и упал в первый раз. Что странно, во второй раз такой номер не прошёл. На следующий день решил повторить, но он падать уже отказался.

Начитавшись, конечно-же, аппетит возбудил. Даже грешным делом подумал, а не писать ли мне новый проект именно на нём? Заманчиво, но, похоже, нереально. То что мне надо - переписать начисто робота. «Начисто» - потому что старый работает на старом (хилом) компе (трастикс) с интербейзом. Переписываю под mysql. Там даже не робот, а набор роботов, которые выполняют наряды нескольких типов. Структура старой базы неудачна для новых потребностей. Семь лет назад создавалась и вполне соответствовала. Но тут условия эксплуатации робота кардинально изменились. Нагрузка возросла и стали вылазить разные издержки конструкций. Ну, это если попытаться нагрузить маленькую машинку (Жука, например) как карьерный самосвал и поставить на неё двигатель от формулы 1.

Ну, не карьерный самосвал и не формульный двигатель, естествнно. :D Это я немного преувеличиваю, но условия эксплуатации вышли за проектные.

Ой, что это я? Надо же про perl6.

В общем, там очень много всякой вкуснятины. Я даже попытался набросать код, как бы робот выглядел на perl6. Грамматики - это классно. Хотя с попыткой определить свои файлы застрял. Засада в новом синтаксисе, в том числе пользования регуляркой. Надо что-то более системное читать. Нашёл наконец «Using Perl 6» но какой-то неудобный формат. Пришлось загрузить в медиавику - вычитываю теперь. Там ещё кто-то вместо обычных «Th», «fi» и т.п. использовал диграфы, которые у меня либо вообще не отображаются, либо отображаются как несаппортнутый символ. Ну и, естественно, нафиг не нужны - приходится вручную и эту беду править. Технология у меня уже отработана, но много противной и ненужной возни. Добью - можно будет начать внимательно перечитывать.

Роботу моему для работы со станцией нужны сокеты, а IO::Socket там ещё не сделали, на сколько я понял. Может есть и другой механизм чтобы изобразить телнет, но в этот вопрос пока не углублялся.

С mysql работать не пробовал, но, похоже, он там только в простом варианте. Тот же prepare - эмулируется. Точнее, как я понял, кешируется.

Сам perl6 загружается две секунды.

И вот вам на закуску:
user@host:~$ time { perl -e 'my $s; for $a (1..1000000) { $s += $a; }; print "$s\n";' ; }
500000500000

real	0m0.235s
user	0m0.208s
sys	0m0.012s
user@host:~$ time { perl6 -e 'my $s; for (1..1000000) -> $a { $s += $a; }; print "$s\n";' ; }
Ошибка сегментирования (сделан дамп памяти)

real	3m20.519s
user	1m26.817s
sys	0m0.804s


Похоже они там натурально генерят объекты. Задача такая, у меня, конечно, никогда не возникнет. Но вот так тривально в корку падать - это что-то.

Ах, да! Там же есть say. :)

user@host:~$ time { perl6 -e 'my $s; for (1..10) -> $a { $s += $a; }; say $s;' ; }
55

real	0m2.007s
user	0m1.876s
sys	0m0.120s
user@host:~$ time { perl -e 'my $s; for $a (1..10) { $s += $a; }; print "$s\n";' ; }
55

real	0m0.008s
user	0m0.000s
sys	0m0.004s


Если затолкать код в файл, запустить perl6 в интерактив и вызвать "eval slurl 'test.pl'", то по ощущениям исполняется также долго. Это не считая, что сам perl6 загружается тоже секунды две. То есть скорость загрузки - не самая сильная его сторона. Может на исполнении будет получше. Ну и на сопровождении - наверняка. Я уже много чего приглядел, что делается проще, удобнее и быстрее, но пока переписывать робота буду всё-таки под perl5. Это я ещё не вспоминал, что мне нужно будет по нетбиосу/самбе забирать (и отдавать) файлы, а в перспективе работать с Oracle. Поэтому вариантов нет.

Хотя в рамках фана вполне могу пытаться наваять робота и на v6. Особенно если он позволит своими грамматиками парсить мои (то есть станционные) позиционные распечатки "легко и непринуждённо". Это у меня пока только в перспективе учить робота уму-разуму, чтобы он подходил к каждой операции селективно.

Profile

crower: (Default)
crower

February 2018

S M T W T F S
    123
45678910
11121314151617
181920212223 24
25262728   

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 29th, 2026 10:16 am
Powered by Dreamwidth Studios