甲府方重信Blog

...Shigenobu Koufugatas Blog

  • Increase font size
  • Default font size
  • Decrease font size
Error
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
Home 業務日誌 Adaプログラミング Adaチュートリアル セクション16.3 - Adaのバインディング

Adaチュートリアル セクション16.3 - Adaのバインディング

E-mail Print PDF

セクション 16.3 - Adaのバインディング

前の資料は、ソフトウェア・コンポーネント間のバインディング(インターフェース)を開発するのに役に立つでしょう。一方のコンポーネントがAdaで書かれており、もう一方のコンポーネントが他の言語で書かれているような場合です。自然に、もし誰かがプログラマーが使えるようなツールを作っている場合もあります。

誰かが何か既に行っているかを評価する前に、プログラマーはAdaと他のプログラムの間の主なバインディングの種類について理解しておく必要があるでしょう。これらの種類は、「ダイレクト」と「アブストラクト」と呼ばれています。:

  • 「direct」 (もしくは、「thin」と呼ばれます) バインディングは、他のプログラムが提供するインターフェースが何であれ、Adaと1対1のマッピングを提供します。ダイレクト・バインディングは、もしプログラマーがその他のプログラムのインターフェースを理解している場合には、理解しやすいでしょう。そして、Adaに対するダイレクト・バインディングは作成しやすいです。特に、プログラマーが既存の文書を使用することが出来、それが複雑なインターフェースに対するう非常に重要なアドバンテージである場合にはそうです。(ウィンドウシステムのように)。 不幸なことに、ダイレクト・バインディングは、それをもって動かすのに少しぎこちない場合があり、Adaのインターフェースによって通常提供されている保護を提供していない場合があります。このように、「アブストラクト」バインディングと動作させるのが好ましい場合があるです。
  • 「abstract」 (もしくは、「thick」と呼ばれます) バインディングは、その他の言語のより抽象的で、Adaライクな視点を提供します。不幸なことに、「abstract」バインディングは、こあれにより動作させた場合が好ましい場合があるにもかかわらず、正しい抽象性を作成するのに労力と時間がかかります。このように「abstract」バインディングは、作成に困難が伴うのです。

ここでは、バインディングについてプログラマーが知っておく必要があることについて示します。:

  • 「Direct」と「abstract」は、実際、連続体の両極にあります。 ; 「もっともダイレクト」であるバインディングは、一方では少ししか抽象的でしかなく、「abstract」なバインディングは、一対一のマッピングとしてのダイレクトさは少ししか持ち合わせません。
  • 「thick」という用語と「thin」という用語は、関連した意味を持っています(標準がどのように書かれるかに関連しています)。それは私が「direct」と「abstract」という用語をここでなぜ使ったかに通じます。

さて、プログラマーはこれら基本的な話題を理解しました。次に、このインターフェースの作業を容易にする方法を見つけに行きましょう。Ada Information Clearinghouseは、list of source (including Ada bindings)document listing existing Ada bindings for other products and standardsを保守しています。彼らのリストは完全ではありませんが、開始点としては良いものです。特に、POSIXや、X windows、Microsoft Windows、SQLデータベースのような標準や、共通したプロダクトに対してはそうです。HBAPも既存のAda bindingsを保守しています。もしプログラマーが商用プロダクトとインターフェースする場合、Adaインターフェースについて提供されるベンダーに尋ねてください。プログラマーは、もし何も情報が見つからなかった場合には、comp.lang.adaにリクエストをポストしてください。

ここではいくつか共通して要求されるバインディングについて示します。:

  1. Win32 API. これはマイクロソフト社のWindows NT、Windows 95とOS/2に対するインターフェースです。; Win32のサブセットがWindows 3.1で動作します。
  2. X11Adaは、Intermetrics社によって開発されたMotifとX11へのAda 95バインディングです。その他のX関連バインディングや情報に対してより早いので、一般的な情報をご覧ください。
  3. リレーショナル・データベースは、一般的に自身の問い合わせ言語としてSQLを使用します。他の言語で出来るように、Adaに埋め込みSQL問い合わせを使用することが出来ますが、もっとよいアプローチは、特定のインターフェース言語が双方の言語のアドバンテージをもたらすでしょう。SAMeDLという名前のISO標準(ISO/IEC 12227)の言語があります。SAMeDL specificationrationale for SAMeDLnotes on applicationsをご覧ください。
  4. CORBAのIDLへのAdaバインディングが開発されています。これにより、CORBAを通じて、プログラマーは他のプログラムにリクエストを送信したり受信したりすることが出来るようになります。 (任意の言語で書かれた、任意のマシンとの間で)  プログラマーは、次のページでより詳しく学べます。 Ada bindings working group そして、CORBAの使用を次のページからダウンロードすることが出来ます。 specification from the Object Management Group (OMG).

C言語のライブラリーへのAdaのダイレクト(Thin)バインディングを自動的に生成するツールが存在します。ここでは、三つのツールを取り上げます。 (他にもあります。):

  1. C2Adaは、C言語をAdaに翻訳します。; C2Adaは、完全なプログラムを取り扱うことが出来ますが、基本的にC言語のヘッダーファイルをAdaに翻訳し、Adaバインディングを作成するために使われてきました。C2Adaは、Cbind(下記参照)へ主要な更新として作成されます。 C2Adaは、シンプルなバインディングを作成するためには使用しやすいのですが、また、多くの「フック」を提供し(設定ファイルの形式で)トランザクション処理上の制御をサポートします。C2Adaは、Intermetrics社を通じて入手可能です。
  2. Cbindは、C言語の宣言文とC言語のプリプロセッサの定義をAdaのパッケージに翻訳します。 このプロダクトの強固さは、使いやすいことです。; ただ次のように入力します。:
       "cbind file.h > file.ads".
    
    CbindはRationalWalnut Creekを通じて入手可能です。

     

  3. CtoAdaは、C言語からAdaに宣言文を翻訳します。 CtoAdaの強みは、多くの「フック」を提供し、プログラマーがトランザクションを制御できる点にあります。これは、プログラマーによってより作業が必要な貴重な制御を提供します。

出典: http://www.adahome.com/Tutorials/Lovelace/s16s3.htm

Last Updated on Saturday, 23 June 2012 19:02  

ニュース速報

Joomla! 1.5 - 自由に体験してください!こんなに簡単にあなたのダイナミックなウェブサイトができあがる事はありませんでした。最高のCMS管理画面で、あなたの話すランゲージですべてのコンテンツを管理してください。