Boo
Boo는 Rodrigo B. de Oliveira가 개발한 .NET용 프로그래밍 언어로, Python과 비슷한 들여쓰기 중심의 간결한 문법과 C#처럼 컴파일 시간에 검사하는 정적 타입 시스템을 결합한다. .NET Common Language Runtime(CLR)과 Mono 환경을 대상...
| 분류 | 프로그래밍 언어, .NET 언어 |
|---|---|
| 개발자 | Rodrigo B. de Oliveira |
| 주요 기반 | .NET, Mono |
| 문법 영향 | Python |
| 패러다임 | 객체 지향 프로그래밍, 명령형·함수형 |
| 타입 시스템 | 정적 타입, 타입 추론 |
| 실행 방식 | CLI 중간 언어로 컴파일 |
| 파일 확장자 | .boo |
| 핵심 기능 | 클로저, 제네릭, AST 매크로 |
| 컴파일러 기능 | 확장 가능한 컴파일러 파이프라인 |
| 관련 플랫폼 | CLR, Mono |
| 주요 용도 | 애플리케이션·게임·스크립트 구성 |
| 소스 | boo-lang/boo |
Boo는 Rodrigo B. de Oliveira가 개발한 .NET용 프로그래밍 언어로, Python과 비슷한 들여쓰기 중심의 간결한 문법과 C#처럼 컴파일 시간에 검사하는 정적 타입 시스템을 결합한다. .NET Common Language Runtime(CLR)과 Mono 환경을 대상으로 하며, 프로그램은 관련 라이브러리와 프레임워크의 객체·타입을 직접 사용할 수 있다. 기존 .NET 언어의 풍부한 실행·라이브러리 환경을 유지하면서도 소스 코드를 읽고 작성하는 부담을 줄이는 것이 주요 목표다.[1]
Boo는 변수의 타입을 대부분 컴파일러가 추론하므로 모든 선언에서 자료형을 반복할 필요가 없다. 그렇지만 일반적인 Python 인터프리터와 달리 타입 검사를 컴파일 단계에서 수행하며, 참조하는 어셈블리의 타입을 사용해 CLR용 코드를 생성한다. 객체와 인터페이스, 메서드, 클로저와 함수를 값으로 다루는 표현을 지원하며 필요에 따라 동적 타입에 가까운 접근을 선택할 수 있는 기능도 제공한다.
Boo의 중요한 특징 가운데 하나는 컴파일러와 문법의 확장성이다. 개발자는 AST를 조작하는 구문 매크로(syntactic macro)와 사용자 정의 컴파일 과정으로 소스 언어의 반복적인 패턴을 자동화할 수 있다. 언어 자체의 간단한 구문을 유지하면서 도메인별 코드 변환과 내장형 스크립트 언어의 구성을 시험할 수 있었으며, 생성되는 결과물은 CLR과 .NET의 실행 체계에 통합된다.[2]
역사적으로 Boo는 Python처럼 간결한 코드로 정적 컴파일·.NET 라이브러리 활용을 가능하게 하려는 대안 언어였고, 게임 및 개발 도구 분야의 스크립트 환경에도 사용되었다. Boo와 Python은 표면 문법이 비슷하지만 런타임과 자료형 처리, 기본 라이브러리, 동적 모듈 로딩과 일부 예외·문법의 의미가 달라 같은 소스 파일을 그대로 호환하는 관계는 아니다. Boo는 JVM이 아니라 CLR 생태계를 중심으로 발전한 독자적인 언어로 구분된다.