この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "Ada"
この項目では、プログラミング言語について説明しています。その他の「Ada」については「ADA」をご覧ください。
AdaAdaのロゴ
パラダイムオブジェクト指向プログラミング、命令型プログラミング、構造化プログラミング、マルチパラダイムプログラミング
登場時期1983年 (41年前) (1983)
設計者ジャン・イシュビア
1995年拡張はS. Tucker Taft主導
開発者ジャン・イシュビア、S. Tucker Taft
最新リリースISO/IEC 8652:2012 (Ada 2012)
型付けnominative, 安全な強い静的型付け
主な処理系GNAT (GCC) 他
方言Ada 83Ada 95Ada 2005Ada 2012
影響を受けた言語ALGOL 68、Pascal、Modula-2、C++、Smalltalk、Java、Eiffel、ALGOL 60、Green、Ada 95
影響を与えた言語C++, PL/SQL, VHDL, Java, C言語 (C99)
プラットフォーム多数
ウェブサイトwww.adaic.org
拡張子.adb, .ads
テンプレートを表示
Ada(エイダ)は、構造化・静的型付け・命令型・オブジェクト指向のパラダイムを持つ汎用プログラミング言語の一つである。構文はAlgol系である。
史上初のプログラマとされるエイダ・ラブレスの名前にちなんでAdaと命名されている。ADAと表記するのは誤り。
フリーのコンパイラとしては、GNATなどがある。
特徴Adaのデータ型の階層構造
1979年、米国国防総省が信頼性、保守性に優れた、主として組み込みシステム向けの言語を作りたいという意図のもと、国際競争入札を行い4社に発注、各設計仕様書の表紙が赤、青、黄、緑だったことから、そのままそれぞれの言語名称としてRED、BLUE、YELLOW、GREENと呼ばれた。この入札で優勝したのはフランス人チームで、公平を期すため選定時にはGREENと名付けられた。そのような理由から、イメージカラーは緑である。特徴的な要件としては、大規模開発や長期保守性の観点から、
コーディング効率よりも可読性を重視すること
プリプロセッサマクロを持たないこと
などがあった。
プログラム言語としての機能としては、
強い型検査(コンパイル時および実行時)。属性によって型に関する情報が取得できる。
複雑な型を持つ定数。
手続き・関数・演算子の多重定義。
プラグマを使った処理系依存の機能の指定。
パッケージ(後にC++がnamespaceとして追従)
汎用プログラミング(後にC++がテンプレートとして追従)
並行プログラミング(タスク、entry/accept/select文など)
例外
など、当時としては先進的な機能[注釈 1]を意欲的に取り入れたため、米国国防総省は大きなものとなってしまった言語仕様をまとめるのに、初版のStrawman(わら男、案山子の意味もある)からWoodenman(木男)、Tinman(ブリキ男、前述の案山子とともに『オズの魔法使い』に出てくる)、Ironman(鉄男)、最終版のSteelman(鋼鉄男)に至るまで5つのバージョンに分けて策定を行った。
言語仕様の大きさや厳密さのため、当時のコンピュータが持っていた資源では、処理系の実装にミニコンやワークステーション程度を必要とし、16ビットパソコンには市場性といった事情もあり実装はほとんどない。実際にはAdaは、大企業において、主として信頼性や保守性を要求されるシステムの開発でのみ普及した。というよりも、実際にどの程度徹底されたかは不明だが、策定の主体であった米国国防総省が発注するようなもの、即ち兵器の開発において条件とされたと言われる。
この時期としては先進的であった、その他の特徴としては、
コンパイラの認定制度
仕様準拠か否かの検証プログラムキットが規定され、合格しない処理系は「Adaコンパイラ」と称することができない。
自動ビルド
複数モジュールの依存性から、再コンパイルの要否を自動判定する(いわゆるMakefileの記述が不要)
などがあげられる。
策定作業中に仕様が大きくなっていった際には、仕様が高度に巨大化した言語が、兵器のように高度な信頼性を要求される分野に、国防総省の「お墨付き」として使用されることを危ぶむ向きもあった。たとえばアントニー・ホーアは1980年度のチューリング賞受賞者だが[1]、その受賞記念講演 (Turing Award Lecture) "The Emperor's Old Clothes" において、自身のALGOL 68(en:ALGOL 68、やはり仕様の巨大化で知られる)に関する経験などに触れたうえで、Adaへの憂慮で締めくくっている[注釈 2]。 言語仕様は、最初に1983年にMIL規格として規格化され、エイダ・ラブレスの生年である1815年に因んで、MIL-STD-1815と採番された。この規格はANSI標準、1987年にISO標準 ISO/IEC 8652:1987 として標準化された。 1990年より、主としてタスキング仕様の改善およびオブジェクト指向の導入を目的として、ISO標準 (ISO/IEC 8652:1987) の改訂作業が開始された。1995年2月15日にISO標準として改訂が承認され、オブジェクト指向言語のうち、史上初の国際標準となった。1995年の規格は、オブジェクト指向の他、下記のような仕様も標準化されている。 2000年にTechnical Amendmentが発行された(ISO/IEC 8652:1995/COR1:2000)。同改訂版は、JISでは2002年版 (JIS X 3009:2002) に対応する。JIS X 3009は本文の翻訳はしていない「要約JIS」であった。2012年1月20日を以って「国際規格周知を目的として要約JISを発行したが,周知としての目的は終了したため。」として廃止されている。 Ada の ISO 規格は、その後、2005年と2012年にも改訂されている。 Adaのソースコードは各パッケージの宣言部を .ads ファイル (specification file) に、実装部を .adb ファイル (body file) に記述する。 リファレンスマニュアルなどでは慣例的に3スペース(空白3個)のインデントが使われている。大文字と小文字を区別しないが、識別子は慣例的に単語の先頭を大文字にして、さらに単語間をアンダースコアでつなぐ(キャメルケースとスネークケースの併用)。
標準
他言語 (C/FORTRAN/COBOL) との相互運用インターフェイスこの時点でC++との相互運用インターフェイスが標準化できなかったのは、C++の標準化がまだだったからである(C++の標準は、紛糾を経て約3年半後の1998年9月1日に承認された)
分散処理 (RPC)
コード例