Что именно попугай? - PullRequest
       40

Что именно попугай?

24 голосов
/ 23 сентября 2008

Я понимаю, что Parrot - это виртуальная машина, но мне кажется, что я не совсем понимаю идею, стоящую за ней.

Как я понимаю, это виртуальная машина, которая предназначена для работы с несколькими языками. Это правильно?

Каковы преимущества использования виртуальной машины вместо просто переводчика?

Что конкретно делает Попугай, который делает это таким большим делом?

Ответы [ 7 ]

36 голосов
/ 23 сентября 2008

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

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

21 голосов
/ 23 сентября 2008

Крис учел различия между пользователями, поэтому я рассмотрю другую сторону.

Parrot основан на регистре, а не на стеке. Это означает, что разработчики компилятора могут легче оптимизировать способ размещения регистров для данного фрагмента кода. Кроме того, компиляция из байт-кода Parrot в машинный код, теоретически, может быть быстрее, чем код на основе стека, поскольку мы запускаем системы на основе регистров и имеем гораздо больший опыт их оптимизации.

13 голосов
/ 23 сентября 2008

Parrot - интерпретатор байт-кода (возможно, с JIT на будущей стадии). Подумайте о Java и ее виртуальной машине, за исключением того, что Java (на данный момент) больше ориентирована на статические языки, а Parrot изначально ориентирован на динамические языки.

Также см. Отличный ответ Коди! Настоятельно рекомендуется.

8 голосов
/ 23 сентября 2008

Другие дали отличные ответы, поэтому мне остается объяснить, что на самом деле означают «динамические» языки.

В контексте виртуальной машины это означает, что тип переменной неизвестен во время компиляции. В «статических» языках тип (или, по крайней мере, его родительский класс) известен во время компиляции, и многие оптимизации основаны на этих знаниях.

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

Другая характеристика заключается в том, что динамические языки обычно значительно упрощают преобразование типов, например, в perl и javascript, если вы используете строку в качестве числа, она автоматически преобразуется в число.

Parrot разработан для упрощения и ускорения таких операций, а также для оптимизации, не зная информации о типах во время компиляции.

2 голосов
/ 29 сентября 2008

Вот Официальный Вики Попугай .

Вы можете найти много информации и ссылок там.

В нижней части домашней страницы Parrot также отображаются последние заголовки агрегатора кормов Planet Parrot .

В дополнение к виртуальной машине, проект Parrot создает очень мощную цепочку инструментов, чтобы упростить перенос существующих языков или разработку новых.

Parrot VM также обеспечит поддержку других языков под прикрытием для многих новых мощных функций Perl 6 (для получения дополнительной информации о Perl 6 см. Официальную Perl 6 Wiki ).

Parrot обеспечит взаимодействие между модулями разных языков, так что, например, другие языки смогут воспользоваться преимуществами того, что станет огромной версией CPAN для Perl 6 (обширный архив модулей Perl 5, к которому Perl 6 сможет получить доступ через предстоящий Perl 5.12).

1 голос
/ 03 мая 2012
  • Попугай будет тем, к чему стремился Java, но никогда не достигался - виртуальной машиной для всех ОС и платформы
  • Parrot реализует идеи Microsoft Common Language Runtime для любого динамического языка и действительно кроссплатформенного
  • Вдобавок ко всему Parrot есть и будет бесплатным и открытым исходным кодом
  • Parrot станет де-факто стандартом для программирования с открытым исходным кодом на динамических языках
1 голос
/ 29 сентября 2008

Честно говоря, я не знал, что это так важно. Это прошло долгий путь, но просто не вижу особого смысла. Основной целевой язык еще не пришел, и он потерял огромную долю разума среди профессионалов отрасли. Между тем, другие решения, такие как .Net, и проекты, такие как Jython, показывают нам, что «здесь и сейчас» может превзойти любой предполагаемый обман.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...