Попугай - могу ли я использовать это? И как?

StackOverflow https://stackoverflow.com/questions/4294438

  •  28-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Компилятор Python 3 «Pyynie» имеет довольно способ пойти. Вот репо http://bitbucket.org/allison/pynie.. Отказ Может быть, вы хотели бы помочь? Прямо сейчас это довольно молодо, даже не даже объекты.

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

  1. Вроде. Это не быстро и языки, которые целены, не завершены, но он не будет сбиться или повредить вашу память.
  2. Обычно вы пишете код на своем любимом языке высокого уровня (Python) и компилируйте код .py Code в Parrot (и оттуда, вы можете скомпилировать его на нативный код, если вы хотите). Другой разработчик может написать свой код Perl (6) и компилировать его в Parrot и, если компиляторы были написаны с учетом взаимодействия, вы сможете вызвать функцию Perl из Python

Другие советы

  1. Это все еще работает в процессе, но это достаточно зрелого для языковых норм и разработчиков библиотеки. Предостережение: Некоторые подсистемы переработаны (сборка мусора, встраивание), поэтому на дороге может возникнуть несколько ударов.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top