プログラムの基本はデータの流れ!

記事
IT・テクノロジー

プログラムの基本はデータの流れ!

プログラミングを学習する際に、プログラムのイメージが掴めると学習の助けになります。プログラムとは何かというと、一言で言うならば、データをどのように流すかの仕組みです。この記事では、プログラムの基本のデータの流れについて解説します。

コンピュータがやっていることは?

コンピュータに仕事をやってもらうための、「手順書」がプログラムです。 実際に、コンピュータに指示を出すのがプログラムで、プログラムを元にコンピュータは仕事をしてくれます。

この事は、紛れもない事実で、このようにプログラムを説明する事が非常に多いと思います。

コンピュータの利用者に説明する場合はこれで十分なのですが、実際にプログラムを作る人の場合はもう少し違った見方ができるとプログラムを作る上で役に立ちます。実際にコンピュータがやっていることは、基本的に「計算」です。

ところで、「計算」と聞いてどんなことを思い浮かべますか?計算と聞くと、足し算、引き算、掛け算に、割り算といった小学校のドリルでやったようなことの方が真っ先に頭に浮かびませんか?このような計算をする道具として、「電卓」を思い浮かべる人の方が多いのではと思います。最近では、コンピュータという呼び方がよく使われますが、少し前までだと「計算機」と言う呼び方もしていました。勿論コンピュータも、こうした足し算、引き算、割り算、掛け算などの計算も行なっているので、計算機という呼び方も間違ってはいません。

英語には、「compute」と「calculate」という動詞があって、日本語に訳す場合、どちらも「計算」と訳す場合が多いのですが、英語では、プログラムでデータの処理をする物を「computer」と呼んで、電卓は「calculator」というように使い分けられています。このあたりに、実際にやる事の違いが表れています。

完璧な説明ではありませんが、「calculate」というと、数字を対処に計算した「結果(値)」を求めるという感じの意味合いが強くて、「compute」というと「(数字を含む)データを処理」するという感じになります。このあたりにコンピュータがやっている事のヒントがあります。

コンピュータがやっていることは、簡単に言えば、プログラムに「書かれた手順でデータを処理すること」という事になります。

コンピュータが扱うのは数字!

もう少し詳しく、コンピュータがやっていることを見てみるとわかりますが、コンピュータが実際に扱っているのは、基本は「数字」です。中でやっていることは、その「数字」を色々な方法で処理する計算をしています。コンピュータのデータは基本的に数値化されていて、扱っているのは数字ですが、実はその数字に意味を持たせて「色々な事を扱っている」ところが、電卓とは違います。

簡単な例は「文字」です。人間からみると、「文字」ですが、コンピュータは、各文字に「数字(コード)」を割り当てて、特定の文字を表すようにしています。このように数字を扱う事で、文字もプログラムで扱えるようになっています。

コンピュータで音楽を演奏する場合は、特定の音に数字を割り当てるような事をして、コンピュータで演奏できるようにしています。

プログラムの入り口と出口

コンピュータが扱っているのは「数字」というのはお分かりいただけたと思います。 数字を色々な「物」に割り当てて、それを処理しているのがコンピュータであり、その処理のやり方を決めているのがプログラムという事になります。コンピュータは色々な分野で利用されていて、非常に複雑な処理をしているように見えますが、実はその仕組み自体はシンプルです。プログラムを細かく分割すると一つ一つのプログラムはとてもシンプルです。

プログラムの基本は、「データの入り口」と「データの出口」です。厳密に言うと例外も結構ありますが、基本は入り口と出口があります。入り口に処理するデータを入れて、出口から処理したデータを取り出すと言うのがプログラムの仕組みです。 複雑なプログラムは、細かい処理をつなぎ合わせて、複雑な処理を実現しています。

ここまで説明すると、お気づきの方もいらっしゃると思いますが、実はプログラムとは、データを流す道筋を作っていると考えるととても分かりやすくなります。そう考えると「プログラムの基本はどうやってデータを流すか」と言うのもお分かりいただけるのではと思います。

プログラムの流れの基本は、三つです

* 基本は上から下へ:何もしなければ上から下へ
* 繰り返し処理(ループ):同じような処理の繰り返し
* 条件分岐:条件によって違う処理を行う
これだけです!これは実は水の流れに似ています。 水の場合も

* 基本は上から下
* 循環させる(ループ)
* 行き先を分ける(分岐)
です。似ていますよね?

分かりやすいプログラムは、データが綺麗に流れるプログラムという事になります。 途中で流れが滞ったり、データ(水)が漏れてしまうようなプログラムは不具合があるプログラムという事になります。 実際に「バグ」の多くは、データの流れが止まってしまったり、本来の流れから逸れてしまう事によって目的地につかなかったり、間違った経路を通った為に予期しない「形(値)」になる事が原因で発生しています。

デバッガーはこうしたデータの流れを追跡するための道具という事になります。

プログラミング学習のポイントは?

なので、プログラミングをする上で一番重要なのは以下の 2 点です。

* 流れの作り方
* データの形(どうやってデータの形を決めて流すか)
実は、プログラミング言語が違ってもこの基本は基本的に同じなので、書き方に多少差があっても「やっている事は同じ」です。なので、一つをマスターすればそれ以降は簡単に習得できます。

この部分はとてもシンプルですが、難しいのは「色々なデータの形」と「色々なデータの加工の仕方」があって、さらに、データを流す経路も色々あるからです。

レベル毎に学習する内容が変わってくるのはこれが大きな理由です。

初心者は、「流れ」と「データの基本形」で十分ですが、処理する中身が複雑になってくると、「データの形をカスタマイズ」する必要が出てきますし、「加工に使う道具(関数やモジュール)」が増えてくるので、このレパートリを増やす必要が出てきます。

さらに上級になると、一つのプログラムだけではなくて、別のプログラムと連携してデータを流す必要が出てくるので、ネットワークなどの要素が入ってきます。

レベルが上がるごとに、学習の範囲が広がっていくという事になります。理想は全ての方向に広げられれば良いのですが、上級者になる程、広がりが大きくなって対応が難しくなるので、広げる方向を絞って専門分野を持つようになって行きます。

実は、自分の対応できる範囲内の仕事や機能ならば、「全部を勉強しなくてもできる」というのがポイントです。

プログラミング言語は、最初の段階から、上級者のレベルまで同じプログラミング言語で対応していく必要があります。 従って、プログラミング言語の大部分をカバーするには、かなり難しい事も学習する必要があります。これは初心者には大変というのはお分かり頂けますよね?

実は、効率的なプログラミングの学習方法は、全体をカバーする事ではなくて、「必要なことから習得する」事にあります。 これが、「簡単でも良いので、一通りを体験する」のが効果的な理由です。

まとめ
プログラミングの一番シンプルな考え方は、水の配管の設計に似ています。

プログラミングは、水の流れを使って、物(データ)を流す事です。配管も複雑な流れが必要ない場合はシンプルで簡単ですが、流れの途中で「加工」したりする必要が出てくると、流れの制御も複雑になります。つまり、必要な部品や工具も増えてきますし、流れの経路も長くなります。この違いが、初心者と上級者の違いになってきます。

初心者のうちは、使う部品や工具を最小限にしてできる物を作る必要がありますが、上級者になると、さらに色々な種類の部品や道具が必要になってきます。当然ですが、使わない(使えない)部品や道具を持つのは無駄であるのと同様に、プログラミングの学習も使わない事は後から勉強すれば良いことになります。まずは、シンプルでよく使うことに集中して学習することで、基本を身につけると、上達が早くなるのはこうした理由からです。

全部を勉強するより、できることで何ができるかを探すことが短期間でプログラミングを習得する秘訣です。プログラミングの上達も実は流れがあって、その流れ、どのように成長していくかが見通せるとやることもハッキリしてきて学習がスムーズに進むようになります。そういう意味で「流れ」が全ての基本と言っても良いかと思います!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す