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. Особенно если он позволит своими грамматиками парсить мои (то есть станционные) позиционные распечатки "легко и непринуждённо". Это у меня пока только в перспективе учить робота уму-разуму, чтобы он подходил к каждой операции селективно.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

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. 6th, 2026 04:50 pm
Powered by Dreamwidth Studios