甲府方重信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.8 - Ada対Java

Adaチュートリアル セクション16.8 - Ada対Java

E-mail Print PDF

 

セクション 16.8 - Ada対Java

AdaとJavaの二つの言語を比較して、議論をまとめるのは意味があることでしょう。

AdaとJavaは、違いよりも似ている点を多く持っています。Ada言語とJava言語は、安全性を重視して設計されています。 (どちらの言語も強い型付け、ポインターの排除、多くのコンパイル時点、実行時のチェックの実施をサポートしています) 二つの言語は、単一継承階層をベースにしたオブジェクト指向アプローチをサポートしています。クラスファイルを生成するとき、AdaもJavaもガベージコレクション、マルチタスク、プラットフォーム独立グラフィカル・ユーザー・インターフェース(GUI)をサポートしています。

もちろん、違いもあります。ここでは、Java言語に比べてAda言語がいくらか技術的に優れている点を挙げています。 (SigAdaは似たようなリストを持っています):

  1. Adaは数え上げ型をサポートしています。
  2. Adaは、 接中辞オペレータに対するオーバーロード・オペレーターをサポートしています。 (例えば、プログラマーは複素数に対する接中辞 + 操作を定義することができます。)
  3. Adaはジェネリックスをサポートしています。Javaにはこれに相当するものがありません。しかしながら、Javaの「インターフェース」と、そのルート・オブジェクトクラスは同等の行為をするために使用されることがあります。
  4. Adaはパラメーターの使用を、文書化するために「in」、「out」、「in out」をサポートしています。そして、これらの修正子は、タグ付け型とスカラーの両方の上で動作します。
  5. Adaは、いくつかの場合においては読みやすいものとなっています。 (「&&」に対し「and」であったり、「for (i=1; i <= 10; i++)」に対し、「for I in 1..10」であったり、「a==b」に対し「a=b」であったりします。)
  6. Adaはあらゆるスカラーについて開始のための配列境界を許しています。Java言語では、配列境界は0で開始することを要求し、「ワン・オフ」エラーのよくある原因となっています。
  7. Adaは組み込み型以外にも、より特定の数値範囲チェックをサポートしています。これは、Javaでは不可能なエラーの発見に使うことができます。
  8. Adaは名前付け、非順序パラメーターを使ったメソッド呼び出しをサポートしています。そして、デフォルト・パラメーター値をサポートしています。
  9. Adaは、サブプログラム・アクセス型と、ネストされたサブプログラムをサポートしています。

Adaに対して、Javaもいくつか技術的なアドバンテージがあります。:

  1. Javaは、「インターフェース」型をサポートします。Adaにはこれに標準的に相当するものがありません。しかしながら、Adaのジェネリックスとオブジェクトのネスティングが同様の行為に使われることがあります。Adaのプログラムは、特殊なプラグマを使用することによって、Javaのインターフェースを定義したり、使用したりすることができるJavaのコードを生成します。
  2. Javaは、連環する仕様を許しています。 (AがBに依存し、そのBがAに依存する場合)、一方でAdaは許していません。連関した参照は、構造化がしっかりしていないシステムを示すので、優越点ではないという議論がありますが、使用が容易であるという意味では、アドバンテージでもあります。
  3. Javaのクラス定義は、Adaのものより短い傾向があります。ここでは、その理由をいくつか挙げています。:
    1. Adaは、オブジェクトとオブジェクトへのアクセス値の区別を明確にしています。これは、より長い定義の原因となっています(例えば、AdaにおいてはX_ObjとX_Ptr型の定義をどこでも行わなければなりません。一方で、Java言語においてはこれは使われていません。)
    2. Adaは、定義されているクラスにおいて(「with」ステートメントによって)使われるすべてのクラスのリストを明確にすることを要求しています。Javaは、使用するクラスのリストを要求はしていません。 Adaにおいて「use」句と同じように、最も近いJavaは「import」ステートメントを持っています。
    3. Javaは、staticではないメソッドに対して明確な「this」パラメーターを持っています。;Adaは、明確にリストされたすべてのパラメーターを要求します。
    4. Javaのインターフェースは、Adaのやや不器用なシンタックスを使って取り扱わなければなりません。
  4. Javaは、例外定義の階層をサポートしています。Javaはまた、各メソッドによって挙げられるかもしれない例外を、そのめそっど定義の一部として含むことができます。

自然に、技術的課題以上のものが決定を行います。ここでは、Javaアプレットやアプリケーションを作成することに対するJava言語とAda言語の利用にかかわる、これ以外の課題を挙げています。:

  1. 一連のツールについての課題があります。本記事執筆時点では、JavaコンパイラーよりもAdaコンパイラーの数が多いのですが、読者がこの記事を読む時点までには、どちらの言語にも多くのコンパイラーが存在しているに違いありません。ほとんどのAdaコンパイラーは、ハードウェアのアドバンテージを生かすことのできるネイティブな(高速な)コードを生成します。一方、Javaコンパイラーは登場したばかりです。しかしながら、現在は、ただひとつのAdaコンパイラーだけがクラスファイルとアプレットを生成することができるのtに対し、アプレットやクラスファイルの作成に単に興味があるだけであるなら、Javaコンパイラーの数に傾くようになるでしょう。 プログラマーは、ツールの能力を自身で比較する必要があるでしょう。: どのIDEがより使いよいか、とか、ユーザーインターフェース・ジェネレーターのような追加の機能は何がよいか。ジャスト・イン・タイムJavaコンパイラーはJavaとAdaの両方をコンパイルすることができるクラスファイルを取ることができるので、言語の選択は、ジャスト・イン・タイム・コンパイラーに対しては関係がありません。
  2. 両方の言語に対して、再利用可能な巨大なライブラリーコンポーネントがあります。それぞれ、目的が異なっているので、自身のアプリケーションに対してそれぞれの言語の関連した再利用コンポーネントを比較してください。
  3. Adaに対してはISO(国際的な)標準化が行われています。一方、Javaの標準化はおそらく何年もかかるでしょう(原稿執筆時点において)
  4. Adaコンパイラーには、巨大な標準テストセットがあrますが、Javaにはまだそれがありません。
  5. Java言語に対しては、安全性に対してクリティカルなシステムに対する使用を回避するベンダー制限があることがあります。Adaは、通常、そのような領域に利用されるので、コンパイラーはそのような制限を持っていません。
  6. Javaのリアルタイム・アプリケーションは現在研究段階でしかありません。一方、Adaはすでにそのような領域で使用されていますし、何年も経過しています。
  7. ほとんどのJavaの資料、ツールはユーザーがJava言語を使っていることを仮定しています。このように、プログラマーがAdaでJavaアプリケーションを開発する場合、プログラマーは(前のセクションで議論したような)翻訳規約を学ばなければなりません。そして、精神的にもそのような翻訳を行わなければなりません。Java言語を使うのであれば、そのような翻訳作業は必要ありません。

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

Last Updated on Thursday, 20 December 2012 11:36  

ニュース速報

リナックスアカデミー新宿アネックス校舎で、LPIC2の資格対策講座を開催した

 

受講生は、12名。

1日目の演習で、研修室の半分のネットワークが動かないトラブルが発生。

システム部の人に、調査してもらった。教務部に、連絡しておく必要がある。

企業からの研修生が多かったため、演習の進度が速く、時間が若干余った。

別途、サーバー構築で作成していた演習課題を追加して、時間を調整した。

20代、30代の若手社員が多かった。