[Moscow.pm] use dots

Ivan Petrov i.petro.77.00 на gmail.com
Чт Июн 20 02:47:00 PDT 2013


> А вам не кажется, что точка вместо стрелочки и несколько неважны фич
> из шестерки не та вещь, ради которой стоит напрягаться? Есть мнение,
> что одна из основных проблем перла: убогий интерпретатор устаревший,
> который никто толком переписать не может из-за отсутствующей спеки.
> Шестерка кроме крутого ООП вселяля надежду, что будут различные
> конкурентные реализации, как у руби или питона. Лично я не вижу
> прикола ставить точку вместо стрелки: меня больше волнует
> многопоточность.

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

однако если сравнивать с "конкурентными реализациями", то со стороны C
perl выглядит достаточно изящно, гибко и удобно.

*пере*писать _компилятор_ Perl (изучите матчасть, кстате) конечно
можно, но надо четко определить цели *зачем* это нужно. Повысить
быстродействие? оно итак неплохое. Добавить фичи в язык (вроде
корутин), вероятно это можно будет сделать меньшей кровью даже на
стек-машине (переписав несколько аллокацию стека - для корутин). Что
еще?
как мне кажется Perl'у будет полезнее взять некоторые хорошие вещи в
раздел "Стандартные модули". Например взять в этот раздел Mouse и
AnyEvent. Монс вон давно грозится сваять AnyEvent::XS (чтобы можно
было писать XS приложения для AE), я вот подумываю над Coro::XS,
правда пока видимо еще не дорос до этого.

насчет многопоточности.
нормальной многопоточности нет ни в одном языке. и оно понятно.
поскольку любой скаляр в любом языке представляет собой структуру
данных атомарное обращение с которой в многопоточной среде без
блокировок невозможно, то реализация потоков в любом языке упирается в
это. путей решения тут ровно два:
 - идти по пути изоляции потоков друг от друга (позволит сохранить
   быстродействие)
 - использовать мютексы/локи для каждого скаляра

плюс в обоих случаях необходима реализация стека в многопоточном
варианте. В итоге получаем всегда либо более медленную (нежели
однопоточная) реализацию языка, либо такую, что от использования
форков слабо отличается.

как по мне, так вся эта реализация многопоточности "не нужна" (ц).
а вот работа над корутинами дает куда бОльшие перспективы.

Вы может быть лучше начнете с формулировки *для чего* вам нужны потоки
в Perl? *что* вы хотите на них писать?



Подробная информация о списке рассылки Moscow-pm