.. _ja Overview of SPARK Language:

****************************
|SPARK| 言語の概要
****************************

この章では， |SPARK| 言語の概要について説明します．実行と形式検証という面から，詳細は別途記載します．これは， |SPARK| 言語の参照マニュアルではありません．必要に応じて以下を参照して下さい．

* Ada 参照マニュアル（Ada 言語）
* SPARK 2014 リファレンスマニュアル（SPARK 言語に特有の要素）

|GNAT pro| が |SPARK| コードをどのようにコンパイルするかについては， |GNAT Pro| 参照マニュアルを見て下さい．

|SPARK| は，Ada言語の大きなサブセットと見なすことができ，追加のアスペクト／pragma／属性を持ちます．最新の SPARK 2014 は，以前のバージョンの |SPARK| と比べて，より大きなサブセットと見なすことができます．特に次の特徴を持ちます．

* 豊富な型（静的には範囲が定まらない副型，区別子付きレコード型，型述語）
* プログラムの構造化のためのより柔軟な特徴（関数，演算子多重定義，早期return/exit，例外送出文）
* コード共有（汎用体，式関数）
* オブジェクト指向（タグ付き型，ディスパッチ）
* 並列動作（タスク，保護オブジェクト）

この章の残りでは，[Ada 2005] (或いは [Ada 2012]) によって， |SPARK| でサポートしている Ada の特徴が，どの　Ada の版に基づいているかを示します．また， [Ravenscar] と標識がついている部分は， |SPARK| がサポートする Ravenscar プロファイルに基づく Ada の並列処理を示しています． [ |SPARK| ] が示しているのは，|SPARK| のみの特徴です． |GNAT Pro| コンパイラと |GNATprove| 証明器は，ここに示している全ての特徴を支援します．

この節で示すコードの断片の幾つかは， |SPARK| ツールセットと一緒に配布している ``gnatprove_by_example`` の例にあります．ツールセットをインストールしたディレクトリ以下の ``share/examples/spark`` に見つけることができます．IDE(GNAT Studio ないしは GNATBench）からは，メニューアイテム :menuselection:`Help --> SPARK --> Examples` でアクセスすることができます．

.. toctree::
   :maxdepth: 2

   source/language_restrictions_ja
   source/subprogram_contracts_ja
