문제

앵무새는 원래 Perl 6 용으로 설계된 가상 머신입니다.

Parrot VM은 어떤 기술 기능을 제공합니까? Java Virtual Machine (JVM)/핫스팟 VM 그리고 일반 언어 런타임 (CLR) 부족?

도움이 되었습니까?

해결책

다음 답변은 2009 년에 작성되었습니다. Raiph의 2015 업데이트.

@reed를 확장하고 일부 하이라이트를 지적하기 위해 Parrot의 Opcodes는 대부분의 가상 머신보다 훨씬 높은 수준입니다. 예를 들어, 대부분의 기계는 정수와 부유물을 저장하지만 기본 레지스터는 정수, 숫자, 문자열 및 앵무새 마술 쿠키 (PMC)입니다. 줄을 내장 한 것은 JVM에서 한 단계 더 올라갑니다.

더 흥미로운 것은 JVM의 객체 유형과 비슷하지만 훨씬 더 열렬한 PMC입니다. PMC는 용기입니다 다른 모든 더 복잡한 유형 배열, 테이블, 나무, 반복자, I/O 등과 같은 실제 언어로 필요합니다. 앵무새는 언어를 구현하는 지저분하지만 필요한 부분에서 부끄러워하지 않습니다.

내 정보는 구식이지만 Opcode가 플러그 가능하다고 생각합니다. 언어 요구 사항이 포함 된 앵무새 VM을 배송 할 수 있습니다. 그들은 또한 당신의 언어가 배열이 재고 앵무새 어레이와 약간 다르게 작동하기를 원한다면 그 하위 클래스를 할 수 있다면 상속 될 수있었습니다.

마지막으로 앵무새는 어셈블러뿐만 아니라 (pasm)뿐만 아니라 약간 높은 수준의 언어, 앵무새 중간 표현 (PIR). PIR에는 루프, 서브 루틴, 현지화 된 변수 및 일부 기본 수학 및 비교 OP가 있으며, 사람들이 금속에서 너무 멀리 떨어져 있지 않고 사람들이 프로그래밍 언어로 기대하는 모든 기본 사항이 있습니다.

대체로, Parrot은 언어 디자이너들에게 매우 친절합니다. 언어를 디자인하십시오 그리고 가능한 한 많은 구현을 다른 사람에게 맡기십시오.

다른 팁

당신은 이것의 많은 부분에 대해 읽을 수 있습니다 앵무새 VM 소개 페이지.

Parrot가 JVM 또는 CLR에 대한 주요 장점은 역동적 인 언어를 먼저 지원하도록 설계되었으며 동적으로 입력 한 언어에 대한 더 나은 지원과 성능을 제공한다는 것입니다. JVM과 CLR은 정적으로 입력 한 언어를 지원하기 위해 더욱 조화되어 있으며, 많은 디자인 결정에 따라이를 보여줍니다.

앵무새가 대부분의 VM과 다르게 만드는 또 다른 것은 (JVM과 확실히 다르 든) 스택 머신이 아닌 레지스터 머신이라는 것입니다. 그러나 나는 사람들이 오랫동안 오랫동안 이점이라고 불릴 수 있는지 오랫동안 논쟁 할 것이라고 생각합니다.

나는 JVM과 CLR을 충분히 모르지만 내 팁 :

  • 동적 언어 (클로저, 다형성 스칼라, 연속, 공동 경로) 지원 (속도)
  • 동적 메소드 디스패치,
  • 일등석 기능,
  • 일류 연속성,
  • 매개 변수 (선택 사항, 이름, ..),
  • 등록 기반
  • 어셈블리 수준에서 HLL 상호 운용성이 제공됩니다
  • 플랫폼의 범위

업데이트 : JVM이 요즘 Rakudo Perl 6 백엔드 중 하나이므로 이것은 아마도 관련이 없습니다. 보다 JVM의 Rakudo Perl 6 (Perl 6 Advent Calendar 2013, Day 3).

앵무새는 원래 Perl 6 용으로 설계된 가상 머신입니다.

지금 있습니다 원래 Perl 6 용으로 설계된 VMS; 커밋 MOARVM 2012 년에 시작되었습니다.

Parrot VM은 JVM (Java Virtual Machine)/Hotspot VM 및 CLR (Common Language Runtime) 부족과 같은 경쟁하는 가상 머신을 제공하는 기술 기능은 무엇입니까?

~ 안에 이 페이지의 또 다른 답변, 현재 (2015 년 4 월) Parrot Lead Dev 인 Reini Urban은 JVM 및 CLR VM과 앵무새를 간략하게 비교합니다.

Reini에 따르면, Parrot가 MOARVM보다 핵심적인 장점은 "효과적으로 잠금식 스레드"입니다.

JVM과 CLR에 대한 주요 장점과 기술적 차이는 그 유형입니다.클래스 PMC라고 함) 및 OPS (행동 양식) 효율적인 사용자 제공 C 구현에서 동적으로로드 될 수 있으며, 구문 분석 프레임 워크는 언어를 작성하고 확장 할 수 있습니다.

이 질문은 구식입니다. Rakudo Perl 6은 더 이상 앵무새를 백엔드로 타겟팅하지 않습니다. MOARVM은 JVM 백엔드가 진행중인 작업을 통해 선호하는 백엔드입니다 (일반적으로 작동하지만 많은 Perl 6 기능이 구현되거나 현재 깨지지 않음). JavaScript를 세 번째 백엔드로 추가하기 위해 개발 작업 (사용자가 준비되지 않음)이 수행되고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top