- Dada는 Rust와 같은 언어를 만들되, Java나 JavaScript처럼 느껴지고 C++보다는 덜 복잡한 언어를 목표로 하는 사고 실험(thought experiment)
- 커널이나 작은 임베디드 장치에서 사용될 것을 목표로 하지 않고, 최소한의 런타임을 요구하는 언어를 상상하면 어떤 모습일까?
- Dada는 소유권 기반 언어로 Rust와 몇 가지 유사점이 있음:
- Rust처럼 Dada는 가비지 컬렉터가 필요 없음.
- Rust처럼 Dada는 메모리 안전성과 데이터 레이스 프리를 보장함.
- Rust처럼 Dada 데이터 구조는 스택에 할당되고 평면 메모리 레이아웃을 사용함.
- 그러나 Dada는 다른 점도 많음:
- TypeScript처럼 Dada는 점진적으로 타입화된 언어임:
- 타입 주석 없이 인터프리터에서 Dada를 사용하여 언어의 작동 방식을 파악할 수 있음.
- 익숙해지면 타입 주석을 추가하고 Rust와 비슷한 성능을 내는 컴파일러를 사용할 수 있음.
- Dada는 WebAssembly를 주로 타겟으로 함:
- Dada로 네이티브 타겟을 빌드할 수 있지만, FFI 시스템은 WebAssembly 인터페이스 타입을 기반으로 함.
- Dada는 객체 지향적이지만 순수한 방식은 아님:
- Dada는 OO와 패턴 매칭과 같은 좋은 기능을 결합하여 Scala와 같은 언어에서 영감을 받음.
- TypeScript처럼 Dada는 점진적으로 타입화된 언어임:
- Rust와 비교하여 Dada의 몇 가지 제한 사항이 있음:
- Dada는 필수 런타임이 있으며 "베어 메탈 시스템"이나 커널을 대상으로 하지 않음.
- Dada는 인라인 어셈블리나 임의의 안전하지 않은 코드를 지원하지 않음.
Dada의 현재 상태는?
- 현재 Dada는 실제로 존재하지 않으며, 몇 가지 실험적인 프로토타입이 있음:
- PLT Redex에서 구현된 실험적인 운영 의미론이 dada-lang/dada-model에서 찾아볼 수 있음.
- Rust로 작성된 인터프리터는 dada-lang/dada 저장소에서 찾을 수 있으며, Dada 플레이그라운드에서 WebAssembly 기반 빌드를 시도할 수 있음.
GN⁺의 의견
- Dada는 현대 프로그래밍 언어의 트렌드를 반영하여 메모리 안전성과 데이터 레이스 방지 같은 Rust의 핵심 기능을 유지하면서도, 점진적 타입화와 객체 지향적 접근을 통해 개발자 친화적인 언어를 지향함.
- WebAssembly를 주 타겟으로 삼는 것은 웹 기반 애플리케이션 개발에 있어서 Dada가 가지는 잠재력을 보여주며, 이는 브라우저 호환성과 플랫폼 독립성을 중시하는 현대 웹 개발 트렌드와 부합함.
- Dada가 실제로 개발되고 널리 사용된다면, 기존의 Rust 개발자들에게는 더 높은 수준의 추상화와 편의성을 제공할 수 있으며, Java나 JavaScript 개발자들에게는 시스템 프로그래밍 언어로의 전환을 용이하게 할 수 있음.
- 그러나 Dada가 아직 초기 단계에 있고 실제 프로덕션 환경에서의 성능과 안정성이 검증되지 않았기 때문에, 기업이나 개발자들이 이를 채택하기 전에는 신중한 접근이 필요함.
- Dada와 유사한 목표를 가진 다른 언어로는 Kotlin이나 Swift가 있으며, 이들은 이미 널리 사용되고 있어 개발자들에게 좋은 대안이 될 수 있음.