НАЗВАНИЕ

Паррот FAQ - Часто задаваемые вопросы


ВЕРСИЯ

Ревизия 0.3 - 13 Марта 2002
Преобразован в POD и добавлен ``Почему мы не используем внешние утилиты или баблиотеки X?''

Ревизия 0.2 - 03 Декабрь 2001
Добавлена секция ``Паррот и Перл'' и ``Почему переобеспечение Перла''. Включены Dan's Q&A пункты.

Ревизия 0.1 - 03 Декабрь 2001
Заимствовано из статьи Simon Cozens, ``Паррот: кросс-языковая архитектура виртуальной машины''.


ОБЩИЕ ВОПРОСЫ

Что такое Паррот?

Паррот это новый интерпретатор, предназначенный для поддержки наступаюшего языка Перл 6. Он разрабытывается как автономная виртуальная машина, которая может испролнять байт-код компилируемых динамически языков, таких как Перл 6, но и также Перл 5. Идеально, паррот может поддерживать другие динамически компилируемые языки, такие как Питон, Руби и Tcl.

Почему ``Паррот''?

Имя ``Паррот'' связано с первоапрельской шуткой Simon Cozens April Fool's Joke в которой Larry Wall и Guido van Rossum объявили о слиянии языков Перл и Питона.

Тогда не было более тщательно обдуманной шутки чем эта, Simon потратил немного времени как инициативный разработчик Паррота.

Является ли Паррот тем же, что и Перл 6?

Нет. Паррот является реализаций, которая, как предпологается, будет использоваться для выполнения программ Перла 6. Определение языка Перл 6 в настоящие время (Декабрь 2001 года) начато Ларри Волом. Пока что истинная природа Перла 6 по прежднему не известна, она будет в значительной степени симулировать Перл таким, каким мы знаем его сегодня, и будет нуждаться в runtime систему. Более полная информация на стадии определения языка Перл 6, когда закончит работу Larry apocolypses.

Могу я использовать Паррот сегодня?

Ну, почти. :-)

Паррот находиться в ранний фазе реализации. Первоначальный способ использовать Паррот - это писать кода на асемблере Паррота, описанный в PDD6.

Вы можете также создавать динамическое содержание внутри Арача, используя модуль mod_parrot, написанный Ask Bjorn Hansen. Вы сильно знать, что mod_parrot сушествующий сегодня, не должен использоваться с любым производственным кодом.

Почему я должен програмировать на языке асемблер Паррота?

Уйма причин, как не станно. :-)

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

Когда я могу ожидать использование Паррота с реальными языками програмирования?

Это зависит от того, что мы подразумеваете под словом реальный. :-)

На каком языке написан Паррот?

C.

Ради бога, мужики, почему?!?!?!?

Потому, что это лучшие, что мы получили.

Это грустно.

Тоже верно. Так или иначе, но C доступен практически везде. Перл 5 написан на C, так что мы можем потенцианльно собрать любой кусок сброрки Перла 5.

Почему не написать это на... (вставьте сюда (ваш) любимый язык)?

Потому что:

Почему вы не используете внешнии инструменты или библиотеки X?

Наиболее общими проблемами являются:

Эти условия очень жесткие для отбора (pass); в настоящий момент мы надеямся, что мы, вероятно, напишем все, кроме Unicode набивки.

Почему ваша собственная виртуальная машина? Почему не выбрать JVM/.NET?

Эти VM спроектированы для статических типов языков. Это прекрасно, так как Java, C#, и уйма других языков являются статически определенными. Перл не является таким. По многообразным причинам, считается, что Перл будет исполнняться более медлено там, чем на интерпритаторе, приспособленному для динамических языков.

Так вы не будете исполняться на JVM/.NET?

Неприменно будем. Они в данный момент не являются нашей первоочередной задачей. Мы строем нашу собственный интерпритатор/виртуальную машитну, затем, когда она зарабротает мы возмемся за JVM и/или .NET прикладные части.


ПАРРОТ И ПЕРЛ

Зачем нужна модернизация Перла?

Хороший вопрос.

На перл конференции 4.0, летом 2000 года, Larry Wall announced заявил, что пора воскресить Перл из праха. Это подразумевает сам язык Перл, реализацию этого языка, сообщество разработчиков программного обеспечения с открытым кодом, которые добровольно снабжают и поддрерживают язык, и большое общество програмистов, которые используют Перл.

Многообразие причин привело к началу этого проекта:

Вы хотите написать Перл компилятор на Перле?

Конечно. Почему нет? C, Java, Lisp, Scheme, и практически камждый другой язык самоподемны. Почему нет?

Не является ли это проблемой самообеспечения?

Нет, в самом деле нет. Не забывайте, что мы можем использовать Перл 5, что бы выполнять программы Перла 5, такие как компилятор Перла 5 в Паррот.

Так Паррот будет иметь дело и с Перлом 5, и с Перлом 6?

Мы еще не знаем, так как это зависит от формулировки Перла 6. Но мы будем использовать более подходящий из двух Перл компиляторов, в зависимости от того, компилим ли мы Перл 5 или Перл 6. Ларри бурчал что-то о формулировке package, объявляюшей, что файл содержил код Перла 6, но мы до сих пор не вполне уверены, в чем это заключается.

Будет ли Паррот исполнять код Python, Ruby и Tcl?

Вероятно.

Латынь и Klingon также?

Нет, Паррот не достаточно извращен для Damian. Вероятно, когда Паррот портируют на диоды из суперкрутых инонов кальция, хотя...

Ха?

Ты мог быть там.


ВОПРОСЫ РЕАЛИЗАЦИИ ПАРРОТА

А что с чисто регистровой машиной?

Ничего особенного. А почему ты спрашиваешь?

Разве ты не знаешь, что именно стековые машины нужно применять при реализации в софте?

Нет, я не знаю.

Тогда посмотри на все успешно реализованные стековые VMs!

Это какие же? Я знаю только JVM.

А как насчет остальных?

Каких остальных? Это и все, если не считать Perl, Python, or Ruby.

Да, именно они!

Тогда верно. Но согласись,о них никогда не думешь как о VMs, правда? :-)

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

Правильно, толково. Тогда назовите удачную регистровую виртуальную машину!

Компании Apple поставлет с 68K емуляторором все свои PowerPC-включающими версии of Mac OS.

Действительно?

Да, действительно.


LINKS

Первоапрельская шутка: http://www.perl.com/pub/a/2001/04/01/parrot.htm

apocolypses: http://www.panix.com/~ziggy/

Клевые малыши: http://use.perl.org/~acme/journal

Ява байткод в Паррот байткод: http://archive.develooper.com/perl6-internals@perl.org/msg03864.html

http://www.perl.com/pub/a/2000/10/23/soto2000.html

Бать там: http://www.csse.monash.edu.au/~damian/papers/#Superpositions

Действительно.: http://developer.apple.com/techpubs/mac/PPCSoftware/PPCSoftware-13.html