「アルゴリズム」と「プログラム」は、どちらもコンピューターに関する用語です。ITの世界ではよく使われています。
ところが、この2つの違いをわかりにくいと感じる人は非常に多いようです。そこで本記事では、「アルゴリズム」と「プログラム」の違いをなるべく簡単にわかりやすく解説しました。
アルゴリズムとプログラムの意味
まず最初に、それぞれの意味を辞書で調べてみます。
【アルゴリズム】
⇒ある特定の問題を解いたり、課題を解決したりするための計算手順や処理手順のこと。これを図式化したものがフローチャートであり、コンピューターで処理するための具体的な手順を記述したものがプログラムである。イランの数学者・天文学者、アル=フワーリズミーにちなむ。
【プログラム】
⇒コンピューターへ指示する、計算や仕事の手順を特定の言語や形式で書いたもの。また、それを作ること。
出典:デジタル大辞泉(小学館)
「アルゴリズム」とは「問題や課題を解決するための計算手順・処理手順」を表します。一言で言うと「手順」のことです。
「手順」とは「物事を行う時の順番や段取り」だと考えて下さい。
そして、「プログラム」とは「コンピューターへ指示するその手順を特定の言語で記述したもの」を意味します。言い換えれば、「特定の言語で書かれた指示書」のことだと思って構いません。
この時の言語は、「C言語・HTML・SQL・JavaScript」などのことを表します。いわゆる、「プログラミング言語」と呼ばれるものです。
念のため、それぞれの言語に触れておくと、
- 「C言語」=ロボットやソフトウェアなどを動かすための言語。
- 「HTML」=ホームページやブログなどを動かすための言語。
- 「SQL」=データベースのデータを操作するための言語。
- 「JavaScript」=サイト上の画像などに動きをつけるための言語。
といったものです。
ここではそのような言語があるという程度の認識で構いません。
重要なのは、「アルゴリズム(手順)を元に実際にコンピューターへ指示するものがプログラム」ということです。
アルゴリズムの意味を簡単に
「アルゴリズム」というのは、コンピューターへ指示する前の段階である手順を表します。例えば、あなたが自分のホームページを一からネット上に作成するとしましょう。
この場合、いきなりホームページを作るということはしません。最初に、大まかな手順や段取りを決めます。
家や車などを作る時もいきなり作り出すのではなく、まず大まかな設計図を作成しますよね。それと同じでコンピューターを動かす時も、まずアルゴリズムを作成する必要があるのです。
以下は、簡単なアルゴリズムを例として示したものです。
①「Aという箇所を作成し、次にBを作成する。」
②「Cを作成した後、Dを作成する。」
③「Bに戻ってから、再度C⇒Dと作成する。」
④「最後にEを完成させる」
この時の手順は「フローチャート」によって図式化するのが一般的です。フローチャートとは以下のような図のことです。
フローチャートでは、上から順番に手順を作成していき、一番最後の下までいったところがゴールとなります。
途中で分岐したり上に再度戻ったりすることもありますが、最後に行きつく先は一番下であるということには変わりません。
そして、実際にこのフロチャートを作成することができれば、物事を行う順序や段取りが完成したということを意味します。
すなわち、「アルゴリズム」が完成したということです。
プログラムの意味を簡単に
アルゴリズムが完成したら、フローチャートを元にプログラムを作成していきます。
先ほどの手順を表した図を元に、実際にプログラミング言語を使ってコードを記述していくのです。
今回の場合だと、ホームページを作るための言語なので、「HTML」と呼ばれる言語を使っていくことになります。
以下は、例としてHTMLを記述したパソコンの画面を映したものです。
見て分かるように、「HTML」と呼ばれる特定の言語により、コンピューターに対して指示が出されています。この記述のことを「プログラム」と呼ぶのです。
「プログラム」は特定の言語を使い、詳細かつ論理的に記述されています。この時に記述したプログラムにより、コンピュータは動きます。
もしもコードの記述を間違えていたり、アルゴリズムの構造そのものを間違えていたりすると、コンピューターは正確には動きません。
逆に、アルゴリズムがしっかりとしていて、なおかつ正確にプログラムを打ち込めば、コンピューターは言われた通り動くのです。
そういう意味では、コンピュータを正確に動かすためには、アルゴリズム・プログラムの両方が正しく構築されている必要があると言えます。
アルゴリズムとプログラムの違い
以上の解説をまとめますと、両者の違いは以下のように定義できます。
「アルゴリズム」=手順。(コンピューターを動かすための大元となる構造。)
「プログラム」=指示書。(コンピューターに実際に指示を出す記述のこと。)
つまり、「アルゴリズム」はコンピュータを動かすための大元の部分である手順を表すのに対し、「プログラム」はアルゴリズムを元に記述されたコンピューターへ指示を出すための言語を表すということです。
「アルゴリズム」は手順や順序なので、いかに効率良く正確にゴールへたどり着くかが求められます。そのため、ただ単純に物事の手順を示せばいいというわけではありません。
例えば、東京から大阪へ移動するとして、目的地に着くまで4つの移動手段があるとします。
(A)=「車」→「バス」→「徒歩」
(B)=「電車」→「自転車」→「徒歩」
(C)=「新幹線」→「バス」→「徒歩」
(D)=「飛行機」→「タクシー」
(A)と(B)はどちらも所要時間が10時間を超えてしまいました。一方で、(C)は4時間、(D)は3時間で目的地に到達することができました。
この場合、(A)と(B)のアルゴリズムは無駄が多かったということが言えます。逆に、(C)や(D)は効率よく目標を達成できたと言えます。
特に(D)の方は最も早く目的地にたどり着けたので、「最適なアルゴリズム」ということになります。
このように、アルゴリズムというのは手順なので、そのやり方や方法は1つに決まっているというわけではありません。
そのため、単にゴールにたどり着けばいいのではなく、いかに効率よくゴールにたどり着けるかという点が重視されるのです。
今回のアルゴリズムだと、(A)~(D)のどれも目的地に到達するという命令には従っています。
しかし、たとえその命令通りに動いたとしても、アルゴリズム自体が論理的でないとコンピューターも論理的に動かないという事態が起こるのです。
もしもあなた自身がアルゴリズムを作成し、プログラムを打ち込んでいく場合は、そういった効率面でのことも意識していく必要があります。
本記事のまとめ
以上、今回のまとめです。
「アルゴリズム」=問題や課題を解決するための計算手順・処理手順。
「プログラム」=コンピューターへ指示するその手順を特定の言語で記述したもの。
【両者の特徴】=「アルゴリズム」は順序や流れをフローチャートと呼ばれる図に表す。「プログラム」は、C言語やHTML言語といったプログラミング言語を使い記述する。
「アルゴリズム」とはコンピュータに指示を出すための「手順」のことです。そして、その手順を元に実際にコンピューターに指示を出すのが「プログラム」だと覚えておきましょう。