Ada — 미국 국방부가 450개 언어 난립을 정리하기 위해 만든 안전 필수 언어 (1980, Jean Ichbiah)
Entity (인물·조직)lectureverified2026-05-09

Ada — 미국 국방부가 450개 언어 난립을 정리하기 위해 만든 안전 필수 언어 (1980, Jean Ichbiah)

#vch#lecture-intro#A-language#g3

Ada — 미국 국방부가 450개 언어 난립을 정리하기 위해 만든 안전 필수 언어

1. 요약

Ada는 1980년 미국 국방부(DoD) 주도로 표준화된 대형 임베디드·실시간·안전 필수 시스템 전용 언어이다. CII Honeywell Bull의 Jean Ichbiah가 이끈 팀이 1977~1983년에 걸쳐 설계했고, ANSI/MIL-STD 1815(1980)·1815A(1983)로 표준화되었다. 1987년 ISO 표준. 세계 최초의 컴퓨터 프로그래머인 Ada Lovelace의 이름을 따 명명되었다. 1995년 객체지향 확장(Ada 95), 2005·2012·2022년 추가 개정. 항공·우주·철도·금융 등 실패가 곧 사람의 죽음인 영역에서 지금도 사용된다.

2. 등장 배경

1975년 미 국방부가 직면한 문제는 언어 난립이었다. *"over 450 programming languages"*가 방위 프로젝트에서 사용되고 있었고, 다수가 폐기되거나 특정 하드웨어에 종속되어 유지보수 비용이 폭증했다.

DoD는 HOLWG(High Order Language Working Group)를 발족하고 4단계 요구사항 명세를 거쳤다.

단계연도내용
Strawman1975초기 요구사항 — 무엇을 다룰 것인가
Woodenman19751차 정련
Tinman19762차 정련 — 후보 언어 검토 시작
Steelman1978최종 요구사항 명세 — 신뢰성·유지보수성·효율성

이 4단계 명세 자체가 본 강의의 핵심 사례다. 언어를 만들기 전에 무엇이 필요한가를 4년에 걸쳐 명세화한다는 발상은 Spec-Driven Development의 원형이다. 언어 자체를 설계 산출물로 보고, 그 명세를 먼저 박은 거의 유일한 사례.

1977년 4개 후보 언어(Red, Green, Blue, Yellow) 경쟁을 거쳐 Green(Ichbiah 팀, CII Honeywell Bull)이 선정되었고, 이것이 1980년 Ada가 된다.

3. 핵심 특징

  1. 강한 타입(Strong Typing) — Pascal보다 더 엄격. 같은 정수라도 의미가 다르면 별도 타입으로 분리 (예: MetersFeet는 호환 불가). 컴파일 시점에 단위 오류를 잡음.
  2. 패키지(Package) — 분리 컴파일·인터페이스/구현 분리. Modula-2의 Definition/Implementation과 동일 사상.
  3. 태스킹(Tasking)동시성을 라이브러리가 아닌 언어 차원에서 지원. task·rendezvous·protected object. 실시간 시스템의 동시성을 언어로 강제.
  4. 제네릭(Generics) — 매개변수화된 타입·서브프로그램. C++ 템플릿보다 형식적으로 정의됨.
  5. 예외 처리(Exception Handling) — 구조적 오류 관리. raise·exception when 구문.

4. 주 용도

  • 항공기: Boeing 777 fly-by-wire, 유로파이터 타이푼, F-22 Raptor 비행 제어 소프트웨어.
  • 항공 관제: 캐나다 자동 항공 관제 시스템(Canadian Automated Air Traffic System) — 100만 줄 Ada 코드.
  • 고속 철도: 프랑스 TVM(TGV의 차내 신호 시스템).
  • 우주·방위: Ariane 로켓, 위성 시스템.
  • 금융: 일부 대형 은행 백엔드.

5. 그 시대 설계 도구 매핑

도구역할Ada와의 관계
Steelman 요구사항(1978)언어 자체의 요구사항 명세Ada 언어가 준수해야 할 명세
HOOD (Hierarchical Object-Oriented Design) (HOOD WG, 1980년대)Ada 시스템의 계층적 객체 분해유럽 항공우주 산업 Ada 프로젝트의 표준 설계 방법
Buhr 다이어그램 (Ray Buhr, 1980년대)Ada 태스크·런데부 시각화Ada 동시성 설계의 표준 기법
Booch Method (1991)객체지향 설계 (Ada 위에서 객체 시뮬레이션)Booch 자신이 Ada 컨설턴트 출신, Ada 95 OO 확장의 이론적 기반
DO-178B / DO-178C (항공 안전 표준)안전 필수 소프트웨어 인증Ada/SPARK가 사실상 표준 구현 언어

→ Ada의 설계 도구 생태계는 다른 어떤 언어보다 형식화·체계화되어 있다. 즉 언어가 정밀할수록, 설계 도구도 정밀해야 한다. 그 역도 — 형식적 설계 도구가 받쳐주지 않으면 언어만으로는 안전 필수 시스템을 만들 수 없다.

6. 강의 활용

핵심 명제와의 연결: Ada는 본 강의 명제의 극단적 사례다. 언어 자체를 만들기 전에 4년에 걸쳐 요구사항 명세(Steelman)를 작성했다 — 이는 언어 자체에도 Spec-Driven Development를 적용한 첫 사례. 즉 *"코드 한 줄도 없이 4년간 명세만 박았다"*는 사실이 본 강의 No Design, No Code의 가장 강력한 역사적 증거다.

강의에서의 위치: G3 시리즈의 완성형이자 정점. Pascal(교육)·C(시스템)·PL/I(통합)·Modula-2(모듈)에 이어, Ada는 안전 필수 + 동시성 + 모듈 + 강한 타입 모두를 종합한 G3의 정점이자 G4(객체지향)로의 다리.

오늘날의 흔적:

  • SPARK (Ada 부분집합 + 형식적 검증) — 안전 필수 영역에서 활발하게 사용.
  • Rust소유권 시스템동시성 안전은 Ada의 강한 타입 + 태스킹의 정신을 현대적으로 정합.
  • 정부·공공이 언어 자체를 공공재로 명세한 사례는 거의 없지만, 최근 Carbon (Google)·Mojo 등이 공개 명세를 시도하고 있음.

오늘 LLM 시대로의 다리: AI Agent 시스템의 Steelman 요구사항은 무엇인가? — 이것이 본 강의가 던지는 질문이다. Ada는 항공기 추락의 인적 비용을 막기 위해 4년 명세를 박았다. AI Agent도 잘못된 결정의 비용이 사람의 생명·금전·신뢰에 닿는 영역에서는 같은 정도의 Pre-Code Specification이 필요하다. 본 강의 No Design, No Code는 Ada의 Steelman 정신을 LLM 시대로 옮겨 박은 것이다.

출처

  • Wikipedia, "Ada (programming language)", https://en.wikipedia.org/wiki/Ada_(programming_language)
  • Department of Defense. (1978). Steelman: Requirements for High Order Computer Programming Languages.
  • Ichbiah, J. D., et al. (1979). "Rationale for the Design of the Ada Programming Language". ACM SIGPLAN Notices, 14(6).
  • Barnes, J. (2014). Programming in Ada 2012. Cambridge University Press.

그룹 시리즈

synthesis/group-g3 (시대 그룹 종합 카드)