프로그래밍 언어의 우수한 기능 셋
Key Point
정적 타입 언어의 복잡성을 줄이면서 안전성을 높이는 세 가지 언어 설계 아이디어를 소개해, 프로그래밍 언어 설계에서 실용성과 안전성의 균형을 생각할 수 있는 참고점을 제시한다.
핵심 요약
- Crystal의 플로우 타이핑은 정적 타입 언어에서 변수가 실행 흐름에 따라 여러 타입을 가지며, 컴파일러가 각 영역의 타입을 추론해 동적 언어 같은 경험을 제공한다.
- Rust의 빌림 검사기는 컴파일 타임에 메모리 안전을 보장하며 데이터 레이스를 방지한다. 단일 가변 참조 또는 다중 불변 참조만 허용해 읽기-쓰기 잠금과 같은 원리로 동작하면서 런타임 오버헤드 없이 안전성을 제공한다.
- D 언어의 계약 프로그래밍은 assert와 enforce를 구분하고, 함수 수준과 클래스 수준에서 선조건, 후조건, 불변식을 문법적으로 지원해 프로그램 정합성 검사를 체계적으로 작성할 수 있게 한다.