Попугай - Могу ли я использовать это? И как? - PullRequest
6 голосов
/ 28 ноября 2010

Я присматривал за Попугаем на некоторое время. Я понимаю, что это виртуальная машина, предназначенная для работы с различными динамическими языками и обеспечения некоторой степени взаимодействия (например, вызов функции Perl из скрипта Python). Итак, мой вопрос состоит из двух частей:

  1. Готов ли Parrot для общего пользования? Я вижу, что выпускаются релизы, но не очевидно, хорошо ли это сейчас работает, или все еще в процессе разработки.
  2. Есть ли документация о том, как использовать Parrot? Я посмотрел ссылки в предыдущих вопросах, но во всей документации, которую я могу найти, рассказывается о различных уровнях специфичного для Parrot кода (PIR, PASM и т. Д.) Или о том, как добавить поддержку большего количества языков. Это здорово, но как мне запустить код на существующих языках в Parrot? И как мне использовать код, написанный на другом языке?

Наконец, я не хочу начинать огненную войну, но я знаю, что Parrot связан с Perl 6. Я предпочитаю Python. Я понимаю, что Python является поддерживаемым языком, но на самом деле он воспринимается как многоязычная виртуальная машина или это интерпретатор Perl 6 с другими языками, включенными в список курьезов?

Ответы [ 2 ]

9 голосов
/ 29 ноября 2010

Я в первую очередь разработчик Python, поэтому я предвзят. Но, вероятно, в том же направлении, что и вы.

Parrot предназначен для многоязычной виртуальной машины. Его корни Perl показывают иногда («0» - ложь, язык начальной загрузки NQP - это подмножество perl), но на уровне времени исполнения он не зависит от языка.

Тем не менее, взаимодействие между языками не будет полностью гладким. Например, тип String, скорее всего, будет использоваться в качестве основы всеми языками, но для объекта Ruby, вероятно, потребуются обертки (но не прокси) для действия на pythonic. Там нет истории взаимодействия объектов, по крайней мере, пока.

В компиляторе Python 3 "Pynie" есть какой путь. Вот репо http://bitbucket.org/allison/pynie. Может быть, вы хотели бы помочь? Сейчас он довольно молодой, даже не объекты.

И чтобы ответить на ваш актуальный вопрос:

  1. В некотором роде. Это не быстро, и языки, на которые он нацелен, не полны, но это не сломает или не испортит вашу память.
  2. Обычно вы пишете код на своем любимом языке высокого уровня (Python) и компилируете свой .py код для попугая (и оттуда вы можете скомпилировать его в нативный код, если хотите). Другой разработчик может написать свой код Perl (6) и скомпилировать его для parrot, и, если компиляторы были написаны с учетом взаимодействия, вы сможете вызывать функцию Perl из python
3 голосов
/ 29 ноября 2010
  1. Он все еще находится в стадии разработки, но достаточно зрел для разработчиков языков и библиотек.Предостережение: некоторые подсистемы подвергаются переработке (сборка мусора, встраивание), поэтому в будущем возможны некоторые затруднения.

  2. Каждому языку нужен компилятор, который генерирует код, который понимает Parrot.Эти компиляторы выпускаются отдельно.(см. http://trac.parrot.org/parrot/wiki/Languages) Большинство языков, нацеленных на Parrot, находятся в раннем незавершенном состоянии, поэтому совместимость сейчас не является большой проблемой.Parrot не является интерпретатором Perl 6, но Rakudo Perl 6 оказался одним из наиболее развитых компиляторов, ориентированных на Parrot.

...