Подтвердить что ты не робот

Что такое попугай?

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

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

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

Что конкретно делает попугай, что делает его такой большой сделкой?

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

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

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

Parrot разработан таким образом, чтобы такие операции выполнялись легко и быстро и позволяли оптимизировать, не зная информации о типе во время компиляции.

Ответ 5

Вот Официальный сайт попугаев.

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

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

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

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

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

Ответ 6

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

Ответ 7

  • Попугай будет тем, к чему стремился Java, но он никогда не был достигнут - vm для всех ОС и платформы
  • Parrot реализует идеи, лежащие в основе Microsoft Common Language Runtime, для любого динамического языка и действительно кросс-платформенного
  • В дополнение ко всему, Parrot является свободным и открытым исходным кодом.
  • Parrot станет стандартом де-факто для программирования с открытым исходным кодом с динамическими языками