영향

영향 (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)