TOPシステム開発【深きプログラミング言語】なぜプログラムを書くのか?> 第2回:命令型プログラミングはどこに行くのか (1/3)




【深きプログラミング言語】なぜプログラムを書くのか?

【深きプログラミング言語】
なぜプログラムを書くのか?

第2回:命令型プログラミングはどこに行くのか

著者:北海道大学大学院 若槻 俊宏

公開日:2008/11/12(水)

はてなブックマークの登録数

命令型プログラミングパラダイムとは
 現在主流のプログラミング言語は、本質的にはハードウエアの実行メカニズムに深く根ざして発展してきた言語です。すなわち、固定長メモリセル列の上にデータ構造を構築し、状態を表現します。そして機械語命令列をプロセッサが順番に実行し、状態遷移を行うというチューリングマシン的メカニズムです。プログラミング言語が変われば、1つの命令文が扱えるデータ構造の粒度や抽象度も大きく変わりますが、「データ構造を構築し、計算を実行するためのアルゴリズム(命令文の列)を記述する」というパラダイムには変わりありません。

 本連載の視点では、PascalやCなどの構造化プログラミングや、C++やJavaのようなオブジェクト指向プログラミングなども、本質的には命令型パラダイムに含まれると考えます。

 命令型プログラミングは、次回紹介する「宣言型プログラミング」と対になる概念です。「手続き型プログラミング」という用語も、ほぼ同じ意味で使われますが、これはオブジェクト指向プログラミングなどとの対比として用いられることが多いため、本連載の趣旨とは少し離れてしまいます。
図1:命令型パラダイムの発展
(画像をクリックすると別ウィンドウに拡大図を表示します)

命令型パラダイムの歴史
 コンピュータが開発された当初は、非常に高価ものだったので、とても一般人が気軽に使えるようなものではありませんでした。また、性能が貧弱だったため、できることや動かし方も決まりきったものにならざるをえず、ソフトウエアはハードウエアのおまけのような扱いでした。そもそもプログラムという概念、すなわちストアドプログラム方式のコンピュータが生まれる前は、直接ハードウエアを変更することによって動作を変えており、ソフトウエアという概念自体が存在しませんでした。

 しかしその後、コンピュータは飛躍的に進歩し、応用分野も社会的重要性も加速度的に増加してきたというのは、ご存じの通りです。今では私たちの生活の隅々にまでコンピュータが浸透し、社会基盤を円滑に動かし、豊かな生活を送るために欠かせないものとなっています。

 それに伴い、ソフトウエアは、さまざまな問題ドメインを含む、大規模で複雑なものとなってきました。また、ハードウエアが急速に安価になり、かつてはおまけ扱いだったはずの、ソフトウエアを作るコストの方がはるかに高価になってきました。必然的に、ソフトウエア開発を楽にするための技術の重要性が増し、さまざまなプログラミング言語や開発環境、ミドルウエアやライブラリといったものが整備されるようになり、現在に至ります。

 命令型パラダイムの発展を一言で言うならば「記述の高級化(抽象化)と、プログラムのモジュール化(影響範囲の局所化)」と言えます。

 「高級」というのは、人間に近いという意味で、ハードウエアから離れる(ハードウエアを抽象化する)ほど高級と言えます。高級言語というのは、要するにアセンブリー言語以外のすべてのプログラミング言語のことです。高級言語の登場により「すべてをアセンブリー言語でベタに書く必要は無く、高級な記述から機械語を生成すれば良い」という画期的なパラダイムが誕生しました。これは今でこそ常識となっていますが、BNF記法などのコンパイラ技術が成熟するまでは、人工知能と同じような夢物語の一種だったのです。

 しかし、いくら記述が高級になったとしても、全体がスパゲティのように複雑に絡まっているプログラムでは、開発や保守が困難となります。構造化プログラミングは、プログラムの制御構造を整理し、一度に考えなければならない範囲を狭めることに成功しました。CLOSやSmalltalkではなく、C++のような意味でのオブジェクト指向プログラミングは、より積極的にこれを推し進めた、手続きとデータ構造のモジュール化を強力に支援するための枠組みと言えます(図1)。

 続いてプログラミング言語の汎用と専用について考えてみましょう。 次のページ



北海道大学大学院 若槻 俊宏
著者プロフィール
北海道大学大学院 若槻 俊宏
北海道大学大学院 情報科学研究科 博士後期課程(D1)
当初はAI研究に興味を持っていたのだが、現在のプログラミング技術の水準では不十分だと考え、いつの間にかプログラミングの基礎理論を研究する道に。
大学院時代は、等価変換に基づく問題解決、特にルール型プログラムから命令型プログラムを合成するための理論について研究。
2008年11月21日付けで、京都マイクロコンピュータ株式会社に入社予定。今後はデバッガ技術に基づきソフトウエアとハードウエアの本質を突き詰めて行くつもりである。
http://alohakun.blog7.fc2.com/

この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。
ご意見、ご要望にお応えします! インプレスIT INSIDE




INDEX
第2回:命令型プログラミングはどこに行くのか
-> 命令型プログラミングパラダイムとは
  汎用言語と専用言語
  ドメイン特化言語(DSL)
【深きプログラミング言語】なぜプログラムを書くのか?
第1回 プログラミングの常識を疑え!
第2回 命令型プログラミングはどこに行くのか
第3回 宣言型プログラミングの可能性と限界
第4回 等価変換型プログラムをかじる
関連記事
深きプログラミング言語
一気に覚えるPHP!
新・言語進化論
1月記事カレンダー
    123
45678910
11121314151617
18192021222324
25262728293031
-お知らせ -
X’mas 読者プレゼント…
記事評価 Sambaサーバ…
記事評価 2009-2010年…
記事評価 透明PNGの実…
記事評価 あの会社の…
記事評価 パッケージ…
過去のカレンダーを見る

Think IT 過去人気記事

注目おすすめ情報

Think IT人気ライター BEST 5







【PR情報】

転職ならen転職ならエン派遣ならenアルバイトならen履歴書ならen就職ならen求人ならen