(Translated by https://www.hiragana.jp/)
Ada - Wikipedia

Ada(エイダ)は、構造こうぞう静的せいてき型付かたつ命令めいれいがたオブジェクト指向しこうパラダイム汎用はんようプログラミング言語げんごひとつである。構文こうぶんAlgolけいである。

Ada
Ada
Adaのロゴ
パラダイム オブジェクト指向しこうプログラミング命令めいれいがたプログラミング構造こうぞうプログラミング、マルチパラダイムプログラミング ウィキデータを編集
登場とうじょう時期じき 1983ねん (41ねんまえ) (1983)
設計せっけいしゃ ジャン・イシュビア
1995ねん拡張かくちょうS. Tucker Taft主導しゅどう
開発かいはつしゃ ジャン・イシュビア、S. Tucker Taft ウィキデータを編集
最新さいしんリリース ISO/IEC 8652:2012 (Ada 2012)
型付かたつ nominative, 安全あんぜんつよ静的せいてき型付かたつ
おも処理しょりけい GNAT (GCC)
方言ほうげん Ada 83
Ada 95
Ada 2005
Ada 2012
影響えいきょうけた言語げんご ALGOL 68、PascalModula-2C++SmalltalkJavaEiffel、ALGOL 60、Green、Ada 95 ウィキデータを編集
影響えいきょうあたえた言語げんご C++, PL/SQL, VHDL, Java, C言語げんご (C99)
プラットフォーム 多数たすう
ウェブサイト www.adaic.org ウィキデータを編集
拡張子かくちょうし .adb, .ads
テンプレートを表示ひょうじ

史上しじょうはつプログラマとされるエイダ・ラブレス名前なまえにちなんで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など。

脚注きゃくちゅう

編集へんしゅう

注釈ちゅうしゃく

編集へんしゅう
  1. ^ 先進せんしんてきということは、いいかえれば「こなれていない」ということであり、兵器へいきのようなシステムでは冒険ぼうけんてきぎるとえなくもない。
  2. ^ この講演こうえんは、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にするというものである」という文章ぶんしょうでもられる。

出典しゅってん

編集へんしゅう

外部がいぶリンク

編集へんしゅう

関連かんれん項目こうもく

編集へんしゅう