Ada: プログラミング言語

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: 特徴, 標準, コード例 
Adaのデータ型の階層構造

1979年、米国国防総省が信頼性、保守性に優れた、主として組み込みシステム向けの言語を作りたいという意図のもと、国際競争入札を行い4社に発注、各設計仕様書の表紙が赤、青、黄、緑だったことから、そのままそれぞれの言語名称としてRED、BLUE、YELLOW、GREENと呼ばれた。この入札で優勝したのはフランス人チームで、公平を期すため選定時にはGREENと名付けられた。そのような理由から、イメージカラーは緑である。特徴的な要件としては、大規模開発や長期保守性の観点から、

  • コーディング効率よりも可読性を重視すること
  • プリプロセッサマクロを持たないこと

などがあった。

プログラム言語としての機能としては、

  • 強い型検査(コンパイル時および実行時)。属性によって型に関する情報が取得できる。
  • 複雑な型を持つ定数。
  • 手続き・関数・演算子の多重定義。
  • プラグマを使った処理系依存の機能の指定。
  • パッケージ(後にC++namespaceとして追従)
  • 汎用プログラミング(後にC++がテンプレートとして追従)
  • 並行プログラミング(タスク、entry/accept/select文など)
  • 例外

など、当時としては先進的な機能を意欲的に取り入れたため、米国国防総省は大きなものとなってしまった言語仕様をまとめるのに、初版のStrawman(わら男、案山子の意味もある)からWoodenman(木男)、Tinman(ブリキ男、前述の案山子とともに『オズの魔法使い』に出てくる)、Ironman(鉄男)、最終版のSteelman(鋼鉄男)に至るまで5つのバージョンに分けて策定を行った。

言語仕様の大きさや厳密さのため、当時のコンピュータが持っていた資源では、処理系の実装にミニコンワークステーション程度を必要とし、16ビットパソコンには市場性といった事情もあり実装はほとんどない。実際にはAdaは、大企業において、主として信頼性や保守性を要求されるシステムの開発でのみ普及した。というよりも、実際にどの程度徹底されたかは不明だが、策定の主体であった米国国防総省が発注するようなもの、即ち兵器の開発において条件とされたと言われる。

この時期としては先進的であった、その他の特徴としては、

    コンパイラの認定制度
    仕様準拠か否かの検証プログラムキットが規定され、合格しない処理系は「Adaコンパイラ」と称することができない。
    自動ビルド
    複数モジュールの依存性から、再コンパイルの要否を自動判定する(いわゆるMakefileの記述が不要)

などがあげられる。

策定作業中に仕様が大きくなっていった際には、仕様が高度に巨大化した言語が、兵器のように高度な信頼性を要求される分野に、国防総省の「お墨付き」として使用されることを危ぶむ向きもあった。たとえばアントニー・ホーアは1980年度のチューリング賞受賞者だが、その受賞記念講演 (Turing Award Lecture) "The Emperor's Old Clothes" において、自身のALGOL 68(en:ALGOL 68、やはり仕様の巨大化で知られる)に関する経験などに触れたうえで、Adaへの憂慮で締めくくっている。

標準

言語仕様は、最初に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個)のインデントが使われている。大文字と小文字を区別しないが、識別子は慣例的に単語の先頭を大文字にして、さらに単語間をアンダースコアでつなぐ(キャメルケースとスネークケースの併用)。

Hello World

-- 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など。

脚注

注釈

出典

外部リンク

関連項目

Tags:

Ada 特徴Ada 標準Ada コード例Ada 利用例Ada 脚注Ada 外部リンクAda 関連項目AdaAlgolオブジェクト指向プログラミングプログラミングパラダイムプログラミング言語命令型プログラミング構造化プログラミング静的型付け

🔥 Trending searches on Wiki 日本語:

ザ・ドリフターズ三鷹市居酒屋副店長強盗殺人事件ヒトリエ土居志央梨響け! ユーフォニアムXG (音楽グループ)関東鉄道松下奈緒ベン・チャップリン藤浪晋太郎ジャスティン・ターナー中村悠一ウエストランド佐藤嗣麻子ケイン号の叛乱あぶない刑事帝人ヤーレンズ内野航太郎イスラエル・マドリモフアウシュヴィッツ=ビルケナウ強制収容所陰核Fallout シリーズ魔法科高校の劣等生藤原紀香相棒押尾学ガールズバンドクライニカ・シャカラミの死クリストファー・ノーラン山田楓喜ゴジラ キング・オブ・モンスターズ宇垣美里Mrs. GREEN APPLE名探偵コナン ハロウィンの花嫁新選組NiziUダイアン自殺・自決・自害した日本の著名人物一覧鈴木商店K (歌手)清水麻椰若槻千夏漆原大晟石原さとみS**t kingz亀井亜紀子 (政治家)財津一郎八木勇征井俣憲治小林香菜吉川愛目黒蓮乙武洋匡名探偵コナン 黒鉄の魚影メインページ山﨑賢人TM NETWORKイ・ナヨン水上恒司東京卍リベンジャーズ森花子豆柴の大群カール・ルッツADOR原菜乃華萩原健一深見東州サイエントロジー井之脇海矢吹奈子心はロンリー気持ちは「…」MS-DOSONE PIECEジャニーズ事務所松本まりか箭内夢菜平良とみ薬屋のひとりごと🡆 More