2009-08-12 2 views

답변

21

가장 어려운 부분은 효과적인 프로그래밍 언어를 설계하는 것입니다. 많은 사람들이 자신의 모든 직업을이 일에 전념했습니다. 여기에 언어 디자인 및 일반적인 구문 분석 질문에 대한 많은 질문이 있었기 때문에 CLR을 대상으로하는 측면에 특히 중점을 둘 것입니다. 바이너리 형태

장점

  • 생성 바이트 코드는 System.Reflection.Emit 네임 스페이스와 .NET 4.0의 멋진 새 System.Linq.Expressions 능력을 사용하여 매우 간단합니다. 이 설정은 CLR을 목표로하는 개인적인 욕구의 주요 동기 중 하나입니다.
  • 코드는 CLR의 JIT 및 메모리 관리자에 내장 된 많은 최적화 기능을 활용할 수 있습니다.
  • 일반적으로 CLR을 대상으로 선택하고 고유 한 코드를 작성하는 경우 적은 시간에 언어에 맞는 작동 컴파일러를 빌드 할 수 있습니다.

단점

  • 그것은 단지 .NET 프레임 워크가 실행되는 플랫폼에서 실행됩니다. P/Invoke 호출을 피하면 Mono 프로젝트의 도움으로 문제가되지 않습니다.
  • 언어의 의미 구조를 CIL 지침 및 CLI 개체 모델에서 표현 가능한 형식으로 낮춰야합니다. 강력하고 형식이 강하고 필요에 따라 객체 지향적 인 언어의 경우 절차가 간단합니다. 기능적 또는 동적 유형 언어의 경우 이것은 매우 어려울 수 있지만 이러한 기능이 필요한 경우 DLR에서 도움을 얻을 수 있습니다.
  • 일반적으로 기계 고유 함수에 편리하게 액세스 할 수 없으므로 고성능/벡터화 된 과학 컴퓨팅을 목표로하는 언어의 경우 현재 구현에서 성능 문제가 발생할 수 있습니다. Mono는이 문제에 적극적으로 노력하고 있지만 Mono 또는 .NET Framework는이를 "확립 된 기술"로 자리 매김하지 않았습니다.

어려움 (언어 및 컴파일러 프론트 엔드를 계산하지 않음)

  • 는 가장 "흥미로운"측면은 CLR의 제한에 따라 언어의 의미 구조를 표현하는 당신의 방법을 누워있다.
  • 여기에 말할 거리가 너무 많지 않습니다. 다른 대상과 비교할 때 CLR을 쉽게 타겟팅 할 수 있습니다.

요약

CLI는 새로운 언어 구현에 일하는 사람들을위한 최고의 선택이 될 것입니다. 이를 통해 일반적인 컴파일러 백엔드에서 벗어나 언어 자체의 의미에 집중할 수 있습니다. 나는 그렇지 않을 수도 있습니다 누군가가 새로운 언어를 만들지 만, 결정하면 CLI는 좋은 여행이 될 것입니다.

+0

와우 그게 좋은 답변이야! – RCIX

관련 문제