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

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

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

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

Что конкретно делает Parrot, что делает его таким важным?

7 ответов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам