2010-11-27 14 views
6

나는 잠시 동안 Parrot을 주시했다. 필자는 다양한 동적 언어를 실행하고 어느 정도의 상호 운용성 (예 : Python 스크립트에서 Perl 함수 호출)을 허용하도록 설계된 가상 시스템이라는 것을 알고 있습니다. 그래서, 제 질문은 두 부분으로 이루어져 있습니다 :앵무새 - 사용할 수 있습니까? 그리고 어떻게?

  1. Parrot은 일반적으로 사용 가능합니까? 릴리즈가 만들어지고있는 것을 볼 수 있지만, 현재 잘 작동하는지 또는 진행중인 작업인지는 분명하지 않습니다.
  2. 사용 방법에 대한 설명이 있습니까? 앵무새? 이전 질문에서 링크를 살펴 봤지만 찾을 수있는 모든 설명서에서는 다양한 수준의 앵무새 관련 코드 (PIR, PASM 등)에 대해 이야기하고 더 많은 언어에 대한 지원을 추가하는 방법에 대해 설명합니다. 좋습니다.하지만 Parrot에서 기존 언어로 코드를 실행하려면 어떻게해야합니까? 그리고 다른 언어로 작성된 코드를 어떻게 사용합니까?

마지막으로 나는 불꽃 놀이를 시작하고 싶지 않지만, 앵무새가 펄 6와 묶여 있다는 것을 알고 있습니다. 나는 파이썬을 선호합니다. 파이썬이 지원되는 언어이지만 실제적으로 다중 언어 VM으로 인식 되는가 아니면 다른 언어를 포함한 Perl 6 인터프리터가 호기심이라고 생각합니까?

답변

9

저는 주로 파이썬 개발자로서 편향되어 있습니다. 하지만 아마 너와 같은 방향으로.

앵무새는 다중 언어 VM을위한 것입니다. Perl의 뿌리는 가끔씩 나타납니다 ("0"은 거짓이고 부트 스트래핑 언어 인 NQP는 perl의 하위 집합입니다).하지만 런타임 수준에서는 언어에 전혀 영향을받지 않습니다.

즉, 언어 간 interop이 완전히 매끄럽게 진행되지는 않습니다. 예를 들어, String 타입은 모든 언어에서 기본으로 사용되지만 Ruby 객체는 파이썬으로 동작하는 래퍼 (프록시는 아님)가 필요할 것입니다. 적어도 지금까지는 객체 상호 작용에 대한 이야기가 없습니다.

파이썬 3 컴파일러 "Pynie"는 아주 좋은 방법입니다. 여기 repo http://bitbucket.org/allison/pynie입니다. 어쩌면 도와주고 싶습니까? 지금은 아직 젊다. 아직 물건이 아니다.

그리고 실제 질문에 대답 :의

  1. 정렬. 그것은 빠르지 않으며 그것을 목표로하는 언어가 완전하지 않지만, 당신의 기억을 부수거나 손상시키지 않을 것입니다.
  2. 일반적으로 여러분이 선호하는 고급 언어 (Python)로 코드를 작성하고 .py 코드를 앵무새로 컴파일합니다. (원할 경우, 원시 코드로 컴파일 할 수 있습니다.) 컴파일러가 마음에 상호 운용성에 기록 된 경우 다른 dev에, 당신은
+2

적어도 파이썬의 관점에서 볼 때 실제로 흥미로운 아이디어 인 것처럼 들리지만 2 년 후에 다시 확인해보십시오. 나는 그것을 개발하는 것을 도와서 긁을 동기가있는 가려움이 정말로 없지만 두려운 것은 내가 어떻게되는지 알기를 바랍니다. –

3
  1. 에게 파이썬에서 그것을 펄 함수를 호출 할 수 있습니다, 자신의 펄 (6) 코드를 작성하고 앵무새 컴파일 할 수 있습니다 아직 진행 중이지만 언어 구현 자나 라이브러리 개발자에게는 충분히 성숙한 상태입니다. 주의 사항 : 일부 하위 시스템이 재 작업되고 (가비지 수집, 포함), 앞으로 도로에 충돌이있을 수 있습니다.

  2. 각 언어는 Parrot이 이해하는 코드를 생성하는 컴파일러가 필요합니다. 이 컴파일러는 별도로 릴리스됩니다. (http://trac.parrot.org/parrot/wiki/Languages 참조) 앵무새를 타겟팅하는 대부분의 언어는 초기 불완전한 상태이므로 상호 운용성은 큰 문제가 아닙니다. Parrot은 Perl 6 통역사가 아니지만 Rakudo Perl 6은 Parrot를 목표로하는 가장 많이 개발 된 컴파일러 중 하나입니다.