Хотел ещё вчера пост написать, но что-то жежешку плющило и колбасило.
Как-то интересовался шестым перлом. Даже книжку купил и читал. Что-то типа "Parrot и Perl6". Не скажу что особо меня тогда это дело зацепило, потому что было сырое и идеология до конца не выстроена. А тут снова попалась на глаза информация. И оказалось что в репах компилятор имеется даже. Ну почему бы не попробовать?
Первым делом я его, конечно, уронил в корку. :D
Ну, "как, как?" - дойдя до (пере)определения операций, знамо дело, попытался описать sub prefix:<Скажи> { say ... }. Вот тут то он и упал в первый раз. Что странно, во второй раз такой номер не прошёл. На следующий день решил повторить, но он падать уже отказался.
Начитавшись, конечно-же, аппетит возбудил. Даже грешным делом подумал, а не писать ли мне новый проект именно на нём? Заманчиво, но, похоже, нереально. То что мне надо - переписать начисто робота. «Начисто» - потому что старый работает на старом (хилом) компе (трастикс) с интербейзом. Переписываю под mysql. Там даже не робот, а набор роботов, которые выполняют наряды нескольких типов. Структура старой базы неудачна для новых потребностей. Семь лет назад создавалась и вполне соответствовала. Но тут условия эксплуатации робота кардинально изменились. Нагрузка возросла и стали вылазить разные издержки конструкций. Ну, это если попытаться нагрузить маленькую машинку (Жука, например) как карьерный самосвал и поставить на неё двигатель от формулы 1.
Ну, не карьерный самосвал и не формульный двигатель, естествнно. :D Это я немного преувеличиваю, но условия эксплуатации вышли за проектные.
Ой, что это я? Надо же про perl6.
В общем, там очень много всякой вкуснятины. Я даже попытался набросать код, как бы робот выглядел на perl6. Грамматики - это классно. Хотя с попыткой определить свои файлы застрял. Засада в новом синтаксисе, в том числе пользования регуляркой. Надо что-то более системное читать. Нашёл наконец «Using Perl 6» но какой-то неудобный формат. Пришлось загрузить в медиавику - вычитываю теперь. Там ещё кто-то вместо обычных «Th», «fi» и т.п. использовал диграфы, которые у меня либо вообще не отображаются, либо отображаются как несаппортнутый символ. Ну и, естественно, нафиг не нужны - приходится вручную и эту беду править. Технология у меня уже отработана, но много противной и ненужной возни. Добью - можно будет начать внимательно перечитывать.
Роботу моему для работы со станцией нужны сокеты, а IO::Socket там ещё не сделали, на сколько я понял. Может есть и другой механизм чтобы изобразить телнет, но в этот вопрос пока не углублялся.
С mysql работать не пробовал, но, похоже, он там только в простом варианте. Тот же prepare - эмулируется. Точнее, как я понял, кешируется.
Сам perl6 загружается две секунды.
И вот вам на закуску:
Похоже они там натурально генерят объекты. Задача такая, у меня, конечно, никогда не возникнет. Но вот так тривально в корку падать - это что-то.
Ах, да! Там же есть say. :)
Если затолкать код в файл, запустить perl6 в интерактив и вызвать "eval slurl 'test.pl'", то по ощущениям исполняется также долго. Это не считая, что сам perl6 загружается тоже секунды две. То есть скорость загрузки - не самая сильная его сторона. Может на исполнении будет получше. Ну и на сопровождении - наверняка. Я уже много чего приглядел, что делается проще, удобнее и быстрее, но пока переписывать робота буду всё-таки под perl5. Это я ещё не вспоминал, что мне нужно будет по нетбиосу/самбе забирать (и отдавать) файлы, а в перспективе работать с Oracle. Поэтому вариантов нет.
Хотя в рамках фана вполне могу пытаться наваять робота и на v6. Особенно если он позволит своими грамматиками парсить мои (то есть станционные) позиционные распечатки "легко и непринуждённо". Это у меня пока только в перспективе учить робота уму-разуму, чтобы он подходил к каждой операции селективно.
Как-то интересовался шестым перлом. Даже книжку купил и читал. Что-то типа "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. Особенно если он позволит своими грамматиками парсить мои (то есть станционные) позиционные распечатки "легко и непринуждённо". Это у меня пока только в перспективе учить робота уму-разуму, чтобы он подходил к каждой операции селективно.