「プログラミング環境特論」イントロダクション
プログラミング環境とは?
「プログラミング環境」とは何であろうか?この用語はあまり単独で用いられることは少ない。たとえば、「Javaプログラミング環境」とか「Unixプログラミング環境」「ARMプログラミング環境」というように、言語、オペレーティングシステム、プロセッサなどをつけて、用いられることが多いようである。「Javaプログラミング環境」といえば、Java言語を用いてプログラミングするための言語処理系、デバッカ、ライブラリなどのことを意味するし、「ARMプログラミング環境」といえば、ARMというプロセッサを使うためのプログラミングのソフトウエア群を意味する。コンピュータはプログラムを実行する機械であり、そのためのプログラミングをするためのソフトウエア群が必要である。これらのソフトウエア群がプログラミングのための「環境」を構成する。プログラミング環境を構成するソフトウエアとしては以下のような要素がある。
l プログラミング言語(アセンブリ言語の場合もある):どのようなパラダイム、モデルでプログラムをするか(たとえば、オブジェクト指向)
l コンパイラあるいはインタプリタ、すなわち言語処理系:どのようなエラーメッセージをだすのか、あるいはどの程度最適化するか。
l アセンブラやリンカなど、基本ソフトウエア
l プログラムを作成するためのエディタなどのツール、あるいはvisualプログラミングの場合は、グラフィックインターフェース
l プログラムを正しく動作させるためのデバッカ、性能を改善するパフォーマンスツール
l ライブラリ
l オペレーティングシステム(コマンド群)、そのインタフェース(システムコール群)
これらのソフトウエアは、コマンド群である場合もあるし、windowsのvisual Studioのような統合ツールとして提供される場合もある。
プログラミング環境の目標
プログラミング環境の目標は開発したいソフトウエアシステムを
Ø わかりやすく: programming model
Ø 手間をかけずに(楽に): programming cost
Ø 間違いなく(正しい): correctness
Ø 効率的な(速い): efficiency
プログラミングできるようにすることである。わかりやすさは、個々のプログラミング言語だけでなく、その言語が提供するプログラミングモデルが大きく影響する。たとえば、現在重要な技術であるオブジェクト指向プログラミングモデルは、Java、C++、など多くのオブジェクト指向言語のモデルであり、プログラミングのしやすさ、わかりやすさに大きく影響する。また、言語が提供する機能を単に理解するだけでなく、エラーの少ない正しいプログラミングするためには、モデルにもとづき、プログラミング言語を正しくつかうことが必要であり、それは「原則」principalというべきものを理解する必要がある。
「プログラミング環境」を論ずる確固たる理論があるわけではない。開発するプログラム、あるいは言語によりさまざまな「プログラミング環境」がある。しかし、これまで様々なシステムがあり、様々なプログラムが開発され、そこにはそのためのプログラミングを支援するプログラミング環境が提供されてきた。そこには、共通する「原理」あるいは「モデル」をいうべきものがあり、それらを汲み取ることが大切である。
講義の内容
この講義では、いくつかのプログラミング環境を取り上げ解説する。以下の項目を予定している。
Ø オブジェクト指向プログラミングの基礎:JavaとC++
Ø オブジェクト指向プログラミングでのデザインパターン
Ø Javaプログラミング環境:JavaBeans
Ø Java分散オブジェクト指向プログラミング環境:JiniとRMI
Ø 並列プログラミング環境:MPIとOpenMP
Ø Gridプログラミング環境:Globus
はじめに、重要なプログラミング技術であるオブジェクト指向プログラミングを中心に進める。その後、分散プログラミング、並列プログラミングについて解説する。分散並列システムでのプログラミングは、通常の逐次環境よりも数段に複雑であり、プログラミングのためのプログラミングモデル、環境が必要となる。
毎回の講義のはじめに、その講義の内容に関する資料を配布する。この資料は、
http://www.hpcs.is.tsukuba.ac.jp/~msato/lecture-note/
にて、公開する。
参考書、文献等については、そのつど、紹介する。
質問に関しては、
prog-env-lecture@hpcs.is.tsukuba.ac.jp
で、随時、受け付ける。
成績評価については、全講義終了後、レポートの提出により、評価する。