[[분류:절차적 언어]][[분류:객체 지향 언어]] [include(틀:문서 가져옴, title=에이다, version=139, paragraph=2)] [include(틀:프로그래밍 언어)] [목차] == 개요 == {{{#!syntax ruby -- Hello world example -- with Ada.Text_IO; use Ada.Text_IO; procedure Hello is begin Put_Line ("Hello, world!"); end Hello; }}} 이름의 유래는 세계 최초의 프로그래머로 여겨지는 [[에이다 러브레이스 백작부인]]에서 따왔다.[* 그 이유로 '에이다' 라고 읽는다.] 1978년에 당시 존재하던 언어들이 맘에 안 들었던 [[미국 국방부]]에서는 프로그래밍 언어 설계를 공모했고, 거기에 뽑힌 것이 바로 CII 허니웰 벌의 [[진 이히비하]]가 이끄는 팀에서 개발한 Ada이다. 1983년 [[http://everyspec.com/MIL-STD/MIL-STD-1800-1999/ANSI-MIL-STD-1815A_8646/|ANSI/MIL-STD-1815A]][* 표준 번호도 나름 의미가 있는데, 바로 [[에이다 러브레이스 백작부인]]이 태어난 연도이다.]로 지정되어 미국 국방부의 표준 프로그래밍 언어가 되었다. Ada의 목적은 기존 프로그래밍 언어들의 장점을 뽑아 [[미국 국방부]]에서 사용되던 수백 개의 [[프로그래밍 언어]]를 대신하기 위해 만들어진 것이었다. 물론 목적 달성에는 실패했다. [[https://xkcd.com/927/|10개의 표준을 대체하기 위한 새로운 표준을 만들어봤자 표준이 11개가 될 뿐.]] ANSI/MIL-STD-1815A는 1993년 개정판 없이 취소되었으며, 현재의 Ada 언어 표준은 ISO/IEC 8652로 지정되어 관리중이다. == 특징 == 설계방침 자체가 어떤 프로그램이라도 기술할 수 있도록 하였기 때문에 언어 사양이 엄청나게 대규모인 것이 특징이며 특히 대규모 프로그램의 개발과 유지보수가 용이하게 되도록 만들어졌다는 평가가 있다. 실제로 언어 설계를 보면 [[C(프로그래밍 언어)|C언어]]보다 안정적이면서 여러 가지를 고민한 흔적이 많이 보인다. 문제는 이걸 컴파일러로 구현하는 게 결코 쉽지 않았다는 것이다.[* 첫 버전인 Ada 83은 성능상의 문제가 있었다.] 물론 [[C++]]과 비교했을때 언어 사양이 특별히 더 방대한 정도는 아니며, C++과 마찬가지로 언어의 모든 기능이 개발에 다 쓰이는것도 아니다. 오래된 언어이다 보니 최근의 언어였다면 라이브러리로 제공될 기능이 문법으로 제공되는 정도의 차이가 있다. 코드의 Writability보다 Readability를 중요시한다. Ada 언어의 주 사용처가 군사용 무기체계의 [[임베디드 시스템|내장형(임베디드) SW]]의 구현이기 때문이다. 무기체계는 한번 도입되면 짧게는 10여년에서 길게는 수십년까지도 유지보수 해야 하기 때문. [[F-22]] 항공기 항전장비의 [[소프트웨어]]를 비롯하여 미국에서 개발되는 많은 군용 소프트웨어에 Ada가 사용된다. 또한 MIT항공공학 전공자들이 제일 처음으로 배우는 과목 중에 하나이다. 하지만 지나치게 제한적인 용도로 인해 인력풀이 작기때문에 최근에는 군용 소프트웨어도 대부분 C++로 대체되는 형편이다. == Ada 개발환경 == * [[https://www.ghs.com/products/AdaMULTI_IDE.html|AdaMULTI]] - Green Hills Software사에서 개발한 상용 Ada 개발환경([[IDE]] 및 [[컴파일러]]). 항공 업계의 소프트웨어 개발에 널리 쓰인다. * FSF GNAT - [[GCC]] 컴파일러 툴셋의 일부를 구성하는 Ada 언어 컴파일러 구현체. * [[https://www.adacore.com/download|GNAT Studio Community Edition]] - GNAT 기반의 IDE. * [[https://jmeubank.github.io/tdm-gcc/|TDM-GCC]] - [[Microsoft Windows]]용 GCC 컴파일러 배포판. (Ada 포함) * [[http://www.getadanow.com]] - GNAT 가이드 * [[https://www.scitools.com/|SciTools Understand]] - Ada 코드 분석을 지원하는 상용 IDE. 개발보다는 코드 분석과 유지보수에 초점을 두고 있다. == 여담 == * 같은 이름을 쓰는 암호화폐 [[에이다(암호화폐)]]의 블록체인인 카르다노는 에이다로 프로그래밍되지 않았다. 카르다노를 프로그래밍한 언어는 [[하스켈]]이다. * [[F-35]] 개발과정에서 개발자들이 미 국방부의 지정 개발언어인 Ada에 적응하지 못해 C++으로 전환하기 시작한 것이 [[F-35/개발과정|재앙의 시작]]이 되었다는 의견도 있다.