この項目 こうもく では、プログラミング言語 げんご について説明 せつめい しています。その他 た の「Ada」については「ADA 」をご覧 らん ください。
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年 ねん の規格 きかく は、オブジェクト指向 しこう の他 ほか 、下記 かき のような仕様 しよう も標準 ひょうじゅん 化 か されている。
他 た 言語 げんご (C /FORTRAN /COBOL ) との相互 そうご 運用 うんよう インターフェイス
この時点 じてん でC++との相互 そうご 運用 うんよう インターフェイスが標準 ひょうじゅん 化 か できなかったのは、C++の標準 ひょうじゅん 化 か がまだだったからである(C++の標準 ひょうじゅん は、紛糾 ふんきゅう を経 へ て約 やく 3年 ねん 半 はん 後 ご の1998年 ねん 9月 がつ 1日 にち に承認 しょうにん された)
分散 ぶんさん 処理 しょり (RPC)
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個 こ )のインデント が使 つか われている。大文字 おおもじ と小文字 こもじ を区別 くべつ しないが、識別子 しきべつし は慣例 かんれい 的 てき に単語 たんご の先頭 せんとう を大文字 おおもじ にして、さらに単語 たんご 間 あいだ をアンダースコア でつなぐ(キャメルケース とスネークケースの併用 へいよう )。
-- Ada.Text_IO パッケージを取 と り込 こ む。
with Ada.Text_IO ;
-- use 節 ぶし で指定 してい することでパッケージ名 めい の修飾 しゅうしょく を省略 しょうりゃく することも可能 かのう 。
--use Ada.Text_IO;
procedure Program is
begin
Ada . Text_IO . Put_Line ( "Hello, world!" );
--Put_Line("Hello, world!");
end Program ;
with Ada.Text_IO , Ada . Integer_Text_IO , Ada . Float_Text_IO ;
use Ada.Text_IO ;
procedure Program is
I : Integer := 0 ;
F : Float ;
begin
for I in 0 .. 10 loop
-- 左寄 ひだりよ せで出力 しゅつりょく 。
Ada . Integer_Text_IO . Put ( I , 0 );
if I mod 2 = 0 then
Put_Line ( ": even number." );
else
Put_Line ( ": odd number." );
end if ;
F := Float ( I ) * 0.1 ;
Ada . Float_Text_IO . Put ( F , 0 , 1 , 0 );
Put_Line ( "" );
end loop ;
end Program ;
最近 さいきん [いつ? ] の利用 りよう 例 れい としてはF-22戦闘 せんとう 機 き や97式 しき 魚雷 ぎょらい などがある。ただしこの分野 ぶんや でもAdaの陳腐 ちんぷ 化 か が進 すす んでおり、F-35戦闘 せんとう 機 き 以降 いこう はC++へ移行 いこう している。
民生 みんせい 品 ひん ではあまり利用 りよう されていないが、信頼 しんらい 性 せい を重視 じゅうし する航空機 こうくうき の制御 せいぎょ ソフトウェアに利用 りよう されることがある。例 れい としてはボーイング777 など。
^ 先進 せんしん 的 てき ということは、い換 いか えれば「こなれていない」ということであり、兵器 へいき のようなシステムでは冒険 ぼうけん 的 てき 過 す ぎると言 い えなくもない。
^ この講演 こうえん は、2通 とお りのソフトウェアの設計 せっけい 構築 こうちく 法 ほう について述 の べた "One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies." ; 「ひとつめの方法 ほうほう はあきらかに 欠陥 けっかん が無 な いようにso simpleにするというもので、もうひとつの方法 ほうほう はあきらかな 欠陥 けっかん が無 な いようにso complicatedにするというものである」という文章 ぶんしょう でも知 し られる。