Ada, 그 설계와 언어를 만든 언어
핵심 내용
Ada의 설계 철학과 현대 언어에 남긴 영향을 정리한다.
자세히 보기
1970년대 미 국방부의 소프트웨어 혼란 속에서 Ada는 강한 정적 타입, 명세-구현 분리, 캡슐화, 동시성, 계약 기반 설계를 핵심으로 등장했다.
- DoD는 450개가 넘는 언어와 방언이 난립한 상황을 정리하기 위해 요구사항을 수년간 정제했고, Steelman 문서로 설계 원칙을 확립했다.
- 1979년 경쟁 끝에 Jean Ichbiah의 Green 팀이 선택되었고, 언어는 Ada Lovelace를 기려 Ada로 명명되었다.
Ada의 핵심은 package 구조다. 명세(specification)와 본체(body)가 물리적으로 분리되어 있고, 클라이언트는 공개된 계약만 보게 된다. private type은 내부 표현을 숨겨 완전한 캡슐화를 제공한다.
타입 시스템도 강하다. type Age is range 0 .. 150 같은 범위 제약 타입으로 도메인 오류를 컴파일 타임에 잡고, discriminated record는 현대의 sum type / ADT와 유사한 표현력을 제공한다.
generic은 타입, 값, 서브프로그램, 패키지를 매개변수화하는 정적 다형성을 제공하며, 런타임 타입 손실이 큰 언어들의 한계를 넘어선다.
동시성은 언어에 내장되어 있다. 초창기 Ada의 task와 rendezvous는 메시지 전달 기반 모델을 제공했고, Ada 95의 protected object는 안전한 동기화를 지원했다. 여기에 SPARK Ada는 정형 검증을 더해 데이터 경합, 범위 오류, 사전·사후조건 위반까지 수학적으로 배제하려고 한다.
Ada 2012의 contracts는 precondition, postcondition, invariant를 언어 차원에 포함했고, Ada 2005의 not null은 null 참조를 컴파일 타임에 줄였다. 예외 처리도 구조적으로 설계되어 예외 전파가 명확하다.
표준은 Annex 구조로 확장 기능을 분리하고, 분야별 독립 인증과 ACATS 적합성 검증을 지원한다. 이런 특성 때문에 Ada는 항공, 철도, 방위 같은 고신뢰 시스템에서 지금도 쓰인다.
대중적 인지도는 낮지만, 현대 언어들이 뒤늦게 채택한 많은 원칙을 이미 오래전에 제시한 언어로 정리된다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.