디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

1.1 Ada의 역사

나르시갤로그로 이동합니다. 2025.07.31 01:17:47
조회 94 추천 0 댓글 0

Ada 프로그래밍 언어의 역사는 특정 목적, 즉 대규모의 장기 실행, 고신뢰성 소프트웨어 시스템 개발을 위한 표준화된 도구의 필요성에서 시작되었습니다. 그 기원은 1970년대 중반 미 국방부(United States Department of Defense, DoD)의 소프트웨어 위기 인식으로 거슬러 올라갑니다.

1.1.1 문제의 대두: 국방부의 소프트웨어 위기

1970년대에 미 국방부는 임베디드 컴퓨팅 시스템에 사용되는 프로그래밍 언어의 수가 폭발적으로 증가하는 문제에 직면했습니다. 국방부 시스템 전반에 걸쳐 수백 개의 서로 다른 언어와 그 방언들이 사용되고 있었으며, 이는 심각한 비효율성을 초래했습니다. 각 프로젝트마다 새로운 언어, 컴파일러, 개발 도구 및 교육이 필요했으며, 이는 소프트웨어 개발 및 유지보수 비용을 천문학적으로 증가시켰습니다. 또한, 코드의 재사용성과 이식성이 극도로 낮았고, 시스템의 신뢰성을 검증하고 보장하는 것이 거의 불가능했습니다.

이러한 문제를 해결하기 위해, 국방부는 1975년에 고차 언어 실무 그룹(High Order Language Working Group, HOLWG)을 설립했습니다. 이 그룹의 임무는 국방부의 요구사항을 충족할 수 있는 단일하고, 표준화된, 범용 프로그래밍 언어를 정의하거나 선정하는 것이었습니다.

1.1.2 요구사항 정의와 언어 설계 경쟁

HOLWG는 먼저 현존하는 언어들(예: Pascal, PL/I, Algol 68)이 국방부의 요구사항을 충족하는지 평가했습니다. 평가 결과, 어떤 언어도 실시간 처리, 예외 처리, 병행성, 대규모 시스템 모듈화와 같은 핵심 요구사항을 완전히 만족시키지 못한다는 결론에 도달했습니다. 따라서 새로운 언어를 개발하기로 결정했습니다.

이후 HOLWG는 일련의 요구사항 문서를 작성했으며, 이는 최종적으로 Steelman 요구사항 명세서로 집대성되었습니다. 이 명세서는 새로운 언어가 갖추어야 할 기술적 특성을 매우 상세하게 정의했습니다. 주요 요구사항은 다음과 같았습니다.

  • 강력한 타입 시스템 (strong typing): 컴파일 시점에 오류를 최대한 발견하여 런타임 오류를 줄입니다.
  • 모듈성 (modularity): 패키지(package) 개념을 통해 대규모 소프트웨어를 논리적으로 분할하고 관리할 수 있도록 지원합니다.
  • 예외 처리 (exception handling): 런타임 오류 발생 시 시스템이 안정적으로 복구하거나 종료될 수 있는 메커니즘을 제공합니다.
  • 병행성 (concurrency): 여러 작업을 동시에 처리할 수 있는 기능을 언어 자체에 내장합니다. (태스크, rendezvous 개념)
  • 데이터 추상화 (data abstraction): 사용자가 데이터의 내부 구현을 알 필요 없이 인터페이스만을 통해 데이터를 조작할 수 있도록 합니다.
  • 가독성 (readability): 코드 작성의 용이성보다 코드 판독의 용이성에 중점을 두어 장기적인 유지보수를 용이하게 합니다.

이러한 요구사항을 바탕으로 국제적인 언어 설계 경쟁이 시작되었습니다. 여러 팀이 경쟁에 참여했으며, 제출된 설계안들은 코드명(Red, Green, Blue, Yellow)으로 불렸습니다. 치열한 평가 과정을 거쳐 1979년, 프랑스 CII Honeywell Bull사의 Jean Ichbiah가 이끄는 팀이 제안한 Green 설계안이 최종적으로 선정되었습니다.

1.1.3 Ada의 탄생과 표준화

선정된 언어는 19세기 초, 세계 최초의 프로그래머로 인정받는 Augusta Ada Byron, Countess of Lovelace의 이름을 기려 Ada로 명명되었습니다. Ada Lovelace는 Charles Babbage의 해석 기관(analytical engine)을 위한 알고리즘을 작성한 인물로, 그녀의 선구적인 업적은 Ada 언어가 지향하는 정밀성과 신뢰성의 가치를 상징합니다.

Ada 언어의 첫 번째 공식 표준은 1983년에 미국 국립 표준 협회(ANSI)에 의해 승인되었으며(ANSI/MIL-STD-1815A), 이후 국제 표준화 기구(ISO) 표준으로도 채택되었습니다. 이 버전을 Ada 83이라고 부릅니다. Ada 83은 당시로서는 매우 진보적인 개념들을 포함하고 있었으며, 특히 대규모, 고신뢰성 시스템 설계에 강력한 기반을 제공했습니다.

1.1.4 진화하는 언어: Ada 95, Ada 2005, Ada 2012, Ada 2022

소프트웨어 공학 기술이 발전하고 프로그래밍 패러다임이 변화함에 따라 Ada 언어 역시 지속적으로 개정되었습니다.

  • Ada 95: 첫 번째 주요 개정판인 Ada 95는 ISO에 의해 표준화된 최초의 객체 지향 프로그래밍 언어였습니다. 이 버전에서는 상속, 다형성 등 완전한 객체 지향 기능을 지원하기 위한 태그드 타입(tagged type) 개념이 도입되었습니다. 또한, 보호 객체(protected object)를 도입하여 병행성 처리 모델을 개선하고 데이터 경쟁(data race)을 방지하는 더 안전하고 효율적인 방법을 제공했습니다. 계층적 라이브러리(hierarchical libraries)와 표준 라이브러리의 확장도 이루어졌습니다.

  • Ada 2005: 이 버전은 Interfaces라는 개념을 도입하여 Java나 C#과 유사한 다중 상속의 유연성을 제공했습니다. 또한, 표준 라이브러리가 더욱 확장되었고, 실시간 시스템 지원 기능이 향상되었습니다. pragma와 같은 언어의 세부적인 부분들도 개선되어 프로그래머의 편의성과 코드의 명확성을 높였습니다.

  • Ada 2012: 계약 기반 프로그래밍(design by contract)을 언어 차원에서 본격적으로 지원하기 시작한 버전입니다. 서브프로그램의 사전 조건(precondition), 사후 조건(postcondition), 타입 불변식(type invariant) 등을 명시할 수 있는 구문이 추가되었습니다. 이를 통해 개발자는 프로그램의 정확성을 더욱 엄격하게 명시하고 검증할 수 있게 되었습니다. 또한 멀티코어 프로세서를 더 잘 활용할 수 있도록 병행성 관련 기능들이 개선되었습니다.

  • Ada 2022: 가장 최신 표준인 Ada 2022는 이전 버전의 개념들을 더욱 발전시키고 새로운 기능을 추가했습니다. delta 애그리게이트, 더 정교해진 계약 기반 프로그래밍 지원, 병렬 프로그래밍을 위한 새로운 속성 및 parallel 키워드 등이 포함되었습니다. 이러한 개선 사항들은 Ada를 현대적인 하드웨어 아키텍처와 개발 방법론에 더욱 적합한 언어로 만들었습니다.

이처럼 Ada는 단순한 프로그래밍 언어를 넘어, 소프트웨어 공학의 원칙을 체계적으로 구현한 도구로서 설계되었습니다. 그 역사는 신뢰성과 안전성이 최우선으로 요구되는 시스템을 구축하기 위한 끊임없는 노력의 과정이며, 오늘날에도 항공우주, 국방, 철도, 의료 등 실패가 허용되지 않는 핵심 시스템에서 그 가치를 증명하고 있습니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 의외로 연애 못할 것 같은 연애 하수 스타는? 운영자 25/08/04 - -
AD 가전디지털, 휴대폰 액세서리 SALE 운영자 25/08/08 - -
2877339 애초에 루비야 넌 그냥 피해망상 정병이잖냐 ㅆㅇㅆ(124.216) 08.02 74 0
2877338 매미 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 08.02 53 0
2877336 재활용했다 탄소중립포인트 없어진데 당분간 넥도리아(223.38) 08.02 45 0
2877335 이정부랑 전정부사람들의 공통점 이탓 넥도리아(223.38) 08.02 59 0
2877332 근데 루비야 니가 그 커뮤니티를 황폐하게 만드는 놈인데 누굴 탓해 ㅆㅇㅆ(124.216) 08.02 65 2
2877331 Ada 설계 철학을 책에서 3개 다루는데 나르시갤로그로 이동합니다. 08.02 53 0
2877330 x.y 절 하나 검토하는데 하루 걸리는데 나르시갤로그로 이동합니다. 08.02 53 0
2877327 요새 집필 중인 Ada 프로그래밍 서적 나르시갤로그로 이동합니다. 08.02 58 0
2877326 사마천은 궁형을당해 고자가 되고. 사기를 집필함 프갤러(183.101) 08.02 53 0
2877324 커뮤 남탓 하기 전에 넌 무얼했느냐 나르시갤로그로 이동합니다. 08.02 54 0
2877317 스승님은 항상 주 언어 con을 무조건 보면서 감각을 익히라고하는데 [3] ㅆㅇㅆ(124.216) 08.02 69 0
2877313 태연 ㅇㅅㅇ [7] 헤르 미온느갤로그로 이동합니다. 08.02 77 0
2877311 1차 납품 11시에 하고 자야지.. [1] ㅆㅇㅆ(124.216) 08.02 56 0
2877309 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.02 56 0
2877308 MS 기반 아키텍트 고대로 따라하면 내가 설계했다기보다는 [2] ㅆㅇㅆ(124.216) 08.02 81 0
2877307 아 씨발 [1] 루도그담당(58.239) 08.02 56 0
2877306 요즘 아키텍트 디자인 방법론보면 플랫폼 종속성 패턴이 대부분 [1] ㅆㅇㅆ(124.216) 08.02 61 0
2877305 전반적으로 아키텍트 관련 서적 최근에 4~5권 읽었는데 ㅆㅇㅆ(124.216) 08.02 58 0
2877304 내가 느끼는게 전반적으로 나보다 지피티가 더 잘짠다. [3] ㅆㅇㅆ(124.216) 08.02 78 0
2877299 ㅆㅇㅆ가 느끼는 한국개발커뮤니티 노답이라 느끼는거 ㄹㅇ 프갤러(183.101) 08.02 630 0
2877297 노란봉투법이 통과되면 [6] 개멍청한유라갤로그로 이동합니다. 08.02 93 0
2877294 챗지피티 4.1 vs 지미나이 프로 [2] 프갤러(149.22) 08.02 62 0
2877287 석열 이 디스했더니 차단당했다 옆갤에서 넥도리아(220.74) 08.02 68 0
2877286 아마존 Q 해킹 당했었구나 ㅆㅇㅆ(124.216) 08.02 61 0
2877285 이번에 중국 바이트댄스 오픈소스 보는데 ㅆㅇㅆ(124.216) 08.02 58 0
2877284 내가 느끼는 것은 한국 프로그래밍 커뮤니티는 배울게 없다 [1] ㅆㅇㅆ(124.216) 08.02 83 2
2877281 내란 세력 부패 척결 부패한 경찰관 척결 척사광이 와야함. 넥도리아(220.74) 08.02 40 0
2877274 디코로 얼마전에 자주 가는 아키텍트 서버서 이야기하는데 [1] ㅆㅇㅆ(124.216) 08.02 71 0
2877273 인지과학조져라 [1] 손발이시립디다갤로그로 이동합니다. 08.02 72 0
2877272 마우스 패드 없이 마우스 쓰는데 프갤러(110.10) 08.02 47 0
2877271 마우스 사이드 버튼이 너무 싫다 프갤러(110.10) 08.02 43 0
2877270 근데 진짜 신기하지 않냐 원리만 놓고보면 다 간단한데 저걸 저렇게 ㅆㅇㅆ(124.216) 08.02 63 0
2877269 1차 납품 준비 끝 [2] ㅆㅇㅆ(124.216) 08.02 77 0
2877267 근데 저 기술을 해킹말고 역공학에써서 ㅆㅇㅆ찡갤로그로 이동합니다. 08.02 72 0
2877266 해킹하는 애들 댓글단거보니까 이렇다네 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 08.02 119 0
2877265 종합적으로 봤을때 네이버쪽에서 MSA 적용과정에서 문제 생긴거라 생각중 [2] ㅆㅇㅆ(124.216) 08.02 99 1
2877264 근데 네이버도 저 수준이면 한국은 보안 의미없는거 아님? [2] ㅆㅇㅆ찡갤로그로 이동합니다. 08.02 103 0
2877263 해킹하는 애들 머리 존나 좋긴하네 [5] 루도그담당(58.239) 08.02 129 0
2877262 이번에 원리 찾아봤는데 네이버쪽 API 설계 결함인듯 ㅆㅇㅆ(124.216) 08.02 107 0
2877261 아스카 밤샘작업 중 [2] 아스카영원히사랑해갤로그로 이동합니다. 08.02 79 0
2877260 아니 근데 네이버 저게 사실이면 저런 대기업도 ㅆㅇㅆ(124.216) 08.02 94 0
2877259 이번에 우왁굳인가? 걔네 이파리 ㅈㄴ 대단하네 [2] ㅆㅇㅆ(124.216) 08.02 151 0
2877258 해킹 공부 너무재밌는데? [2] 루도그담당(58.239) 08.02 88 0
2877257 Ada 프로그래밍: 5.3 goto 문 [2] 나르시갤로그로 이동합니다. 08.02 105 0
2877255 내가 아주르로 읽는 이유=원어 존중 [5] ㅆㅇㅆ(124.216) 08.02 78 0
2877253 챗 지피티 4.1 vs 지미니.. 프로 어떤게 [1] 존존갤로그로 이동합니다. 08.02 68 0
2877252 애저가 맞긴한데 아주르로 읽어도됨 ㅆㅇㅆ(124.216) 08.02 48 0
2877251 MS azure 는 아주르 아니고 "애저" 라고 읽는데 [6] 프갤러(183.101) 08.02 84 0
2877247 우리집 ㄱㄱㄱㄱ 프갤러(220.86) 08.02 135 1
2877246 멍유 2차흑화하면 닉 이걸로 바꾸냐? [1] 프갤러(119.71) 08.02 61 0
뉴스 '착한 사나이' 이동욱X이성경, 단둘이 떠난 여행부터 달콤한 입맞춤까지 ‘설렘 폭발’ 디시트렌드 08.09
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2