プログラミングとは? いまさら聞けないことをプロに聞いてみた

プログラミングの基礎知識

こんにちは! プログラミングに興味を持ちはじめた「ゆき」です!

唐突ですが、あなたは「プログラミングって何?」「どんなことをするの?」と聞かれて答えられますか?

プログラミングは、2020年からは義務教育で必須化されました。小学生から学ぶことになったプログラミングとは何なのでしょうか。

「パソコンでやる仕事・・・」みたいな漠然としたイメージはあるものの具体的に何かときかれると答えるのが難しいですよね。

答えてくれる人

ひらめ
様々なシステム開発を行ってきたシステム屋。気分屋で性格は悪いけどめちゃくちゃ仕事ができる嫌な奴。というのを理解している当サイトの編集者。

あなたが「これからプログラミングを学びたい」とか「プログラミングって難しい・・・」と挫折しそうなら、きっと役に立つハズです。

また、子供に「プログラミングってなに?」と聞かれたときも、これだけ知っていれば、大きな顔ができますよ。

1分要約
  • プログラミングとは「プログラム」を書く作業
  • プログラムは『命令』と『データ』の塊
  • 大切なのは論理的に考える能力

プログラミングとは

プログラミングとは何かと聞かれたとき、IT業界で働く人も実は曖昧な答えしかできません。実際に50人超えのプログラマーに聞いてみたのですが、納得出来る答えは見つかりませんでした。そんな難しい問題を解決したいと思います。

ゆき
ゆき

早速ですが『プログラミングとは何か』を教えてもらえませんか?

ひらめ
ひらめ

プログラミングって、プログラムを作る作業なんだ

ゆき
ゆき

すいません。作るプログラムって何ということが分からないのですが・・・

ひらめ
ひらめ

一言でいえば、プログラムは『コンピュータに対する指示書』

ゆき
ゆき

指示書?

ひらめ
ひらめ

こんなときはこうする。次はこうして・・・ってバカでも分かるように作った指示書がプログラムなんだ。

ゆき
ゆき

バカでも分かる・・・って。コンピュータをバカにし過ぎっ!! コンピュータって何でもできる装置ですよね?

ひらめ
ひらめ

そんなことはない。コンピュータは『偉大なるバカ』なんだよ。プログラミングした指示書通りのことしかしない。反対にコンピュータが、プログラミングされてないことをしちゃ困るんだ

話を進める前に、ここまでの話をまとめておいて。ここまではバカでも分かるハズ。

ゆき
ゆき

バカにし過ぎですっ!!

でも、ちょっとプログラミングについて理解をするキッカケになりそうな話ですね。

ここまでの話をまとめると

  • プログラミングとはプログラムを書く作業
  • プログラムとはコンピュータに対する指示書

つまり、プログラミングとは、コンピュータに対する指示書(プログラム)を書くことのようです。

コンピュータは偉大なるバカ?

ひらめ
ひらめ

簡単にいうとコンピュータはプログラム通りにしか動かない。動いちゃダメなんだ。理由は、コンピュータが意図しない動きをすると制御できなくなってしまうから。プログラミングとは、コンピュータが処理する順番、内容を書く作業なんだけど、その通りに動くことが前提なんだよ。

例えば、税抜き価格を教えるから税込価格を計算して教えてね。税込価格の計算方法は、税抜き価格を1.1倍した価格ね。とプログラミングしたとする。

税抜価格は、200円だけど、税込価格は?

ゆき
ゆき

220円です

ひらめ
ひらめ

そうね。プログラムがあるコンピュータは「220」を返してくるんだけどプログラムが入ってないコンピュータは動けない。動かない。何すればよいか判断がつかないんだ。

ゆき
ゆき

パソコンなら出来そうだけど・・・

ひらめ
ひらめ

それってWindowsやMac OSにインストールされているアプリで計算しているんだよ。アプリケーションってプログラムの塊なのね。アプリケーションって、得意な仕事があって他の仕事は苦手なんだ。目的が違うアプリだとこんな簡単な計算も出来ないんだ。Wordで計算ができる? パワーポイントでは? illustrater、Photoshopでは? 計算出来ないよね? つまりプログラミングされていないことは出来ないんだよ

ゆき
ゆき

言われてみれば、あまり意識をしてないけど目的にあったアプリを選んでいる気がしますね。計算しようとして、LINEは開かないですね・・・。

ひらめ
ひらめ

でしょ? スマホでもタブレットでもパソコンでもスーパーコンピュータでも、プログラム通りにしか動かないんだよ。さっきも話したけど、アプリってプログラムの塊で、膨大なプログラムが書かれているんだ。その指示書(プログラム)を作るのがプログラミングなんだよ

ゆき
ゆき

フムフム。ちょっと、まとめさせてください

  • プログラムとは、コンピュータに対する指示書
  • コンピュータは、プログラム通りしか動かない
  • アプリケーションとはプログラムの塊

コンピュータ(パソコン)は何でもできる機械ではなくて、プログラミングされたことしかできない機械。ちょっとコンピュータに対するイメージが変わってきましたよね。目的に合ったアプリ(アプリケーション)を選択している理由は、アプリごとに指示書が違い、そのプログラム通りにしか動かないから。なんか少しだけ、スッキリしてきました。

プログラムは命令とデータの塊

ゆき
ゆき

それでは次の質問に移らせてもらいますね。コンピュータが動くための指示書『プログラム』って何なんですか

ひらめ
ひらめ

プログラムは、命令とデータの塊

コンピュータに「こうしない」という命令を書くのがプログラミングなんだけど、ルールやしきたりがないとコンピュータも困ってしまうでしょ?

だから、コンユータがわかる言葉(プログラミング言語)を使って指示書を書くんだ

ゆき
ゆき

なんか、一気に理解しにくい感じになってきましたが・・・

命令はなんとなく理解できるんですが、データ?

データってどういうことですか?

ひらめ
ひらめ

コンピュータに対する命令だけでは、クソの役にも立たなくて全ての処理(行動)には「何をどうする」っていう目的があるんだ。その「何を」っていうのがデータ

さっきの消費税の計算で言えば「税抜価格」とか「消費税率」とか「税込価格」というのがデータに当たる。

ゆき
ゆき

何をどうするか・・・。ですか・・・。確かに生きている上でも大切な考え方ですよね

ひらめ
ひらめ

・・・ごめんね。人生相談には乗れない・・・。でも「何をどうするか」がないと何をするのが正解かは分からないよね。プログラミングで一番困るのが「何をどうするか」が分からない人からの依頼なんだよね。プログラマーは、どうすれば、できるかは分かるんだけど、何をどうするかっていうこと(仕様)は知っちゃことじゃない

ゆき
ゆき

ごめんなさい。ちょっとめんどくさい話になってしまいそうですね。元に戻しますね!!

ひらめ
ひらめ

・・・ちっ、溜まったうっぷんをはらせなかったか・・・

ゆき
ゆき

プログラムは命令とデータの塊というのは理解しました。プログラムには、複雑な命令が書かれているんですね

ひらめ
ひらめ

そんなことはない。プログラミングの命令って単純なんだ。その単純な命令だけで複雑な処理をさせるんだよ

ゆき
ゆき

えっ? 単純な命令だけで?

プログラミングの醍醐味

ひらめ
ひらめ

どんなプログラミング言語も、すごく単純な命令しか用意されていない。その単純な命令を駆使して、コンピュータに処理して欲しいことを順番に書いて複雑なことをさせるのがプログラミングの醍醐味なんだよ。プログラミングの命令は「こうしなさい」という『単純命令』と条件(データ)による分岐、それと『繰り返し』の3種類の命令に分類される。その単純な命令とデータを駆使して、思い通りにコンピュータを動かすなんて胸熱じゃんっ!?

ひらめ
ひらめ

(・・・「胸熱じゃんっ?!」って言われてもね・・・)

単純な命令だけでアプリを作るってことですが? それってどれだけ命令を書いているんですか? 想像を超える命令の数のような気がする・・・

ひらめ
ひらめ

確かに、複雑なプログラムになると命令だけで数万行、数十万行なんてザラだよ。ちょっとしたシステムになるとその数万行のプログラムがいくつもあって、お互いに連携して動いているんだ

ゆき
ゆき

そんな命令だと間違った命令をしてしまうと大変ですね

ひらめ
ひらめ

それが『バグ』って呼ばれる現象なんだ。僕は『バグ』って聞くだけでイライラするっ!! でも、単純な命令を順番通りに動くコンピュータだから、命令を間違ったら間違った命令の通りに動くんだよ。だから、プログラミングって論理的、効率的にコンピュータが動けるように考えないといけないんだ

ゆき
ゆき

そうですよね。なんとなくプログラミングの難しさが分かってきました。命令をする順番、命令そのものが間違っていたら思い通りに動かないですよね。でも、それって難しくないですか?

ひらめ
ひらめ

簡単ではないと思うよ。だから、僕はプログラミング言語の知識より、プログラマーは、論理的に効率的に考える能力が大切だと思うんだ。ぶっちゃけ、プログラミング言語の仕様なんちゃググれば出てくるし、たくさんの本が発行されている。

でも、稼げるプログラマーになるためには、論理的かつ効率的なプログラムを書くことが大切で、その為には、複雑なことを単純化するスキルを身につけることが必要だと思うよ

ゆき
ゆき

奥が深いですね。ちょっとプログラマーになりたい人へのヒントのような気がするのでまとめておきますね

  • プログラミング言語の知識より、論理的、効率的にモノゴトを考える能力が大切

まとめ

まとめ
  • プログラミングとは、コンピュータが処理をする順番を書いた指示書を作る作業
  • コンピュータへの指示書のことをプログラムと呼ぶ
  • コンピュータは『偉大なりバカ
  • プログラムは単純な命令とデータで論理的、効率的に書く必要がある
  • プログラミング言語の知識より考え方の方が大切
ひらめ
ひらめ

『プログラミングとは』については、こんな感じ。

なんか、初めてで緊張していて、ちゃんと答えられていたか不安だわ

ゆき
ゆき

大丈夫ですよ。

ありがとうございました。プログラミングって、なんか呪文みたいなイメージで、プログラマーの人たちは魔法使いのように感じていたんだけど、ちょっとイメージが変わりました

ひらめ
ひらめ

今回、話したことはIT業界でもなかなか、言語化できていないことだと思うんだ。プログラミングとは何かなんて知らなくてもプログラミングの仕事はできるしね。

『プログラミングとは』という質問は哲学的というか、なかなか考えなかったから話していて面白かったよ。

ゆき
ゆき

なんか難しいと思っていたプログラミングがぼんやりとだけど分かった気がしました

ひらめ
ひらめ

プログラミングを学びたいと思うなら、今回話した内容を頭に入れてから『プログラミング的思考』について学ぶと理解が早いと思うよ

ゆき
ゆき

誰にでも分かる指示書がよいプログラムなんですね。ありがとうございました

コメント

タイトルとURLをコピーしました