영향
영향 (Influences)
Rust는 특별히 독창적인 언어는 아니에요. 디자인 요소가 아주 다양한 원천에서 왔죠. 그래서 "이 기능은 어디에서 온 걸까"를 따라가 보면 Rust의 설계 철학을 더 잘 이해할 수 있어요. 아래에 그 주요 원천을 정리했어요(지금은 제거된 요소도 포함해요).
출처: Rust Reference
본문
Rust의 각 기능이 어떤 언어에서 왔는지 정리하면 다음과 같아요.
- SML, OCaml: 대수적 데이터 타입(algebraic data types), 패턴 매칭, 타입 추론, 세미콜론 문장 구분
- C++: 참조(references), RAII, 스마트 포인터, 이동 의미론(move semantics), 단형화(monomorphization), 메모리 모델
- ML Kit, Cyclone: 지역 기반 메모리 관리(region based memory management)
- Haskell (GHC): 타입클래스, 타입 패밀리
- Newsqueak, Alef, Limbo: 채널, 동시성
- Erlang: 메시지 전달, 스레드 실패, 연결된 스레드 실패, 경량 동시성
- Swift: 옵셔널 바인딩(optional bindings)
- Scheme: 위생 매크로(hygienic macros)
- C#: 속성(attributes)
- Ruby: 클로저 구문, 블록 구문
- NIL, Hermes: 타입스테이트(typestate)
- Unicode Annex #31: 식별자와 패턴 구문
재미있는 점은 이 요소들이 단순히 차용된 게 아니라, Rust의 안전성과 표현력이라는 목표에 맞게 재해석됐다는 거예요. 예를 들어 C++의 RAII는 Rust에서 소유권(ownership) 모델의 기반이 됐죠.
더 알아보기 (Learn more)
- Rust 참조 소개 — 이 참조 문서의 전체 구조
- 메모리 모델 — C++에서 이어받은 메모리 모델의 Rust 버전
- 변수 — 소유권 모델과 연결되는 변수 규칙