« モデリングの勉強方法 | トップページ | Subversionのログを使って開発チームの状況を調べよう »

プログラミングのパラダイム

プログラミング・パラダイムとは、ソフトウェアを作るときの基本的な考え方を、プログラマに与えるものだ。次のように考えるとわかりやすい。

今、一人の新卒エンジニアがいるとする。彼は会社の新入社員向けのプログラミング講座で、始めてプログラミングとC言語を学んだ。
その彼に、Pythonの入門書と次のような問題を与えてみる。

問題「0から9までの整数のうち、偶数だけをコンソールに出力するプログラムを作りなさい」

彼はたぶん、こんなコードを書くだろう。

for i in range(10):
    if i % 2 == 0:
        print i
    else:
        pass

このコードはもちろん、次のC言語のコードからの類推だ。

#include <stdio.h>

int
main()
{
        int i;
        for(i = 0; i < 10; i++) {
                if (i % 2 ==0) {
                        printf("%d\n", i);
                }
        }

        return (0);
}

彼はC言語で手続き型の考え方しか学んでいないのだから、当然だろう。
ここで彼に、さっきの問題は素直に手順として見るだけでなく、例えば次のような見方もできるだろうと伝えてみる。

問題「0から9までの整数のうち、偶数だけをコンソールに出力するプログラムを作りなさい」
 ↓
・0から9までのリストをつくる
・そこから偶数だけ抜き出して別のリストをつくる
・その偶数だけのリストをコンソールに出力する

この見方を理解できれば、その新卒エンジニアはPythonの入門書を読みつつ、次のようなコードにたどり着くだろう。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

b = [x for x in a if x%2==0]

for x in b:
        print x

両方のプログラムとも、結果は同じなのだが、過程が異なる。一方は問題を一連の手続きとして見ているのに対し、もう一方は問題をさらに小さな問題の連続として見ている。前者が手続き型のプログラミング・パラダイムで後者が関数型のプログラミング・パラダイムだ。

このように、パラダイムは、ある問題をみたときの捉え方、つまりその問題を解決するソフトウェアを作る時の基本的な考え方を、プログラマに与えるものだ。
いろいろな問題を臨機応変に上手く解決していくには、いろいろなパラタイムを知っていることが重要だと言える。

★WOZ★



|

« モデリングの勉強方法 | トップページ | Subversionのログを使って開発チームの状況を調べよう »

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1286769/33063079

この記事へのトラックバック一覧です: プログラミングのパラダイム:

« モデリングの勉強方法 | トップページ | Subversionのログを使って開発チームの状況を調べよう »