こんにちは、Яeiです。
今回は現役エンジニアの私が、プログラミングとは何かについて小学生でも分かるように解説していきたいと思います。
プログラミングの授業が小学校で必修化されましたが、そもそもプログラミングなんてやったことない方にとってはイメージすらわかないと思います。
しかし、子どもの学習の手助けが出来るように親も最低限の知識はつけておきたいところです。
そこで、当記事では実際にプログラミングをするわけではなく「プログラミングのイメージ」について超分かりやすく解説していきたいと思います。
<注意点>
・イメージを最優先にしているため、ここでは時代背景などは無視しております。
・そのため「順序が逆」ということもしばしばあると思いますのでご留意下さい。
・当記事では主に「コンパイラ型」の言語を例に説明をしていきますのでご認識おき下さい。
プログラミングとは
プログラミングとは、コンピュータにやってほしいことを手順書にする作業のことを言います。
「プログラミングとは」で調べると小難しい定義がたくさん出てきますが、イメージはこれだけで十分です。
それでも「何か難しいことしているんじゃないの?」と思われる方は「料理のレシピ」をイメージしてください。
特に初心者を対象にした「めちゃくちゃ丁寧なレシピ」です。
レシピは目的となる「料理」があって、それを作るまでの手順が書いてあります。
基本的に手順は上から下に読み進めていって、レシピ通りに作れば誰でも作れるようになっております。
プログラミングはこの「レシピを作る作業」に該当するのです。
ただし、レシピは人に向けて作成するのに対して、プログラミングは機械に向けて手順書を作成します。
この点が大きな違いとなります。
では、コンピュータさんに手順書を解読してもらうにはどのようにすればよいのでしょうか。
機械語とは
日本人は日本語で会話をします。
アメリカ人は英語。フランス人はフランス語。ドイツ人はドイツ語。
といったように、その国の言語を使ってコミュニケーションをとるようになっております。
機械も同じで、機械に何かお願いをしようとすると機械語を使ってコミュニケーションをとる必要があります。
しかし、日本語でコンピュータさんにお願いしても当然コンピュータさんは理解できません。
では機械語とはどのような言語かというと、機械語は0と1だけで構成された言語となります。
平仮名でさえ50音もあるのに、たった二つ・・・つまり、先ほどの会話はどうなるかというと以下のようになります。
(あくまでもイメージです。0と1の並びは適当です。)
恐らく多くの人はこう思うわけです。
こんなの絶対に習得できない!!!
そうです。多くの人はコンピュータさんとコミュニケーションをとることすら許されないのです(機械語を習得できなさそうなので)。
プログラミング言語
困ったなぁ。このままではコンピュータさんが廃れてしまうなぁ。
ということで偉い人は考えました。
「人間が理解できる言葉で手順書を書いて、機械語に翻訳するツールを作ろう!」
イメージにするとこんな感じです。
翻訳ツールであれば、凄く賢い人が頑張って作ってくれれば我々はそれをありがたく使わせて頂ければ良い話になります。
「頑張って!凄く賢い世界の誰か!」と言うのもつかの間。
凄く賢い人からこんなお声が届いております。
はい、至極もっともな意見でございます。日本語で見てみても「すみません」の意味って色々な意味がありますよね。
こういったものが各言語分となると確かに難しいわけであります。
そこで、賢い人は素晴らしいアイデアを思いつきました。
ということで、我々が翻訳機を使う場合は指定された言語を使う必要があるのです。
この指定された言語のことを「プログラミング言語」と呼びます。
また、翻訳機のことを「コンパイラ」と呼びます。
つまり、我々がコンピュータさんにお願いしたい場合は、プログラミング言語を用いて手順書を作成して、コンパイラさんに翻訳してもらってコンピュータさんにお届けする流れとなります。
なお、時代とともにコンパイラさんも進化してまして、それに伴いプログラミング言語は数多く存在しております。
(補足ですが、コンパイラさんではなく同時通訳であるインタープリタさんというものも存在するので認識だけ持っておいて下さい)
ここまででプログラミングとは何かのイメージが大体つかめたかと思います。
しかし、ここまで聞いてもピンとこない方向けに「パソコン」について前提知識をおさらいしつつ、もう少しプログラミングとは何かをみてみたいと思います。
(補足)コンピュータさんについて
さて、これでコンピュータさんに手順書をお見せすることができるようになりました。
ところで、コンピュータさんについて我々はあまり知りませんのでここではコンピュータ(以降、分かりやすさ重視のためパソコンとします)さんについて少しばかり知っておきましょう。
パソコンの本体
まず「パソコン」と聞いて以下を思った方はいらっしゃるのではないでしょうか。
いいえ、これはディスプレイです。我々が見るためのものです。
ではこれ?
いいえ、これはキーボードです。我々がパソコンさんに指示を与えるためのものです。
では・・・消去法でこれ?
はい、これがパソコンの本体となります。
ディスプレイもキーボードもなくても動きます。これらは、人間が操作するのに必要だからくっつけてあるだけです。
そのため、人間が見たりいじったりしないのであれば、本体のみどーーん!と置いてあることもあります。
なお、画面と一体化しているパソコンやノートパソコンなどもあります。
一般的に使う場合はディスプレイが必要ですので、セットにしてしまえ!ということですね。
OS(オペレーティングシステム)
コンピュータの魂となるのがこのOSです。
パソコンのみならず、コンピュータであれば基本的にこのOSと呼ばれる魂が入っております。
魂が入っていなければコンピュータはただの箱です。
箱にいくらアプリケーション(例えばGmailとかTwitterとかゲームとか)が入っていても魂が入っていなければ動かすことができません。
正確にはこの魂自体は「ソフトウェア」と呼ばれているのですが、細かいことはここで話すのはやめておきましょう。
さて、この魂の種類は皆様も聞いたことがあると思います。
- Windows
- macOS
- Unix
- Linux
- iOS
- Android
ここでは聞いたことがありそうなものを挙げてみましたが他にもまだまだあります。
とりあえず、自分のパソコンにはどの魂がこもっているのかは意識しておきましょう!
OSの話になってくると、恐らく「役割」みたいな話も出てくると思いますが、恐らく初心者がそんな話を今聞いても「何のことやら」となると思います。
そのため、以下ではその中でも初心者が知っておくべき「ファイル管理」についてみていきたいと思います。
(もちろん、パソコンの魂というだけあってこの他のOSの機能全てが重要です。)
ファイル管理
OSには「ファイルシステム」と呼ばれる名前からして熱い機能が設けられております。
これはざっくりと説明すると「データをファイルとして管理する機能」となります。
「パソコンとファイルで何の関係があるの?」と思う方もいると思いますが、恐らく皆さんが普段利用しているのは何かしらの「ファイル」なのです。
例えば、皆さんが使っている「ブラウザ」、「ゲーム」、「エクセル」などなど。
これらはすべてファイルなのです。
イメージがわかないかもしれないのでもう少し詳細に説明していきたいと思います。
まず、パソコンを起動すると以下のような画面になると思います。
え?ならないって?
ええ、そうです。このような黒い画面だと多くの人は操作の仕方が分からないので、OSさんが人間に分かりやすいように以下のようにグラフィカルにしてくれているのです。
ちなみにIT用語として、皆さんお馴染みのグラフィカルな方を「GUI(グラフィカルユーザインターフェース)」、黒画面の方を「CUI(キャラクタユーザインターフェース)」と呼んだりします。
(初心者の方は、覚えるほどのことではありません)
GUIのメリットはなんと言っても使いやすい点にあります。パソコンに不慣れな人でも、マウスをかちかちクリックしていればある程度操作できてしまいます。
ではここで質問ですが、例えばGoogle Chromeというブラウザを使う場合はどうしますか?
恐らく以下のようなアイコンをダブルクリックすると思います。
でもこのアイコンって何だと思いますか?GUIだとOSさんが気を利かせて視覚的に分かるようにしてくれてますが、実はこれ、ただのファイルなのです。
デスクトップ上に他にもアイコンがたくさんあると思いますが、これらもすべて「ファイル」なのです(あるいはファイルをまとめたフォルダ)。
普段、OSさんが気を利かせてくれて意識することは少ないかもしれませんが、基本的にパソコンさんは以下のようなファイルとフォルダで構成されているのです。
初心者がまず意識するべきことは究極的にはこれだけです(最低限という意味です)。
フォルダは「ファイルをまとめたもの」です。
意外かもしれませんが「デスクトップ」でさえフォルダとなっておりまして、実際には以下のような構造になっていたりします。
(OSによって異なるかもしれません。あくまでも一例と思ってください)
つまり、普段我々一般ユーザはこうした構造を意識することなく「マウスでカーソルをあわせてダブルクリック」してアプリ起動しておりますが、実態はファイルを実行していたのです。
では当記事の「プログラミングとは何か」に少し戻るとしましょう。
「プログラミングとは、コンピュータにやってほしいことを手順書にする作業」と説明しました。
しかし、機械語を使いこなすことができないので、プログラミング言語を使って手順書を作成します。そしてその手順書をコンパイラさんという翻訳機にかけて手順書を作成するのでした。
その最終的な手順書は「実行ファイル」と呼ばれてまして、実行ファイルを実行することでアプリケーションが起動するのです。
(基本的に実行ファイルは拡張子がexeとなっているのでEXEファイルなんて呼ばれたりもします)
少し回り道になりましたが、つまりプログラミングの大きな目的は「実行ファイルを作ること」とも言えますね。
(ただし、必ずしもこうではありませんのでご注意下さい)
当記事は以上となります。
今回はプログラミングとは何かについて、イメージベースで解説を致しました。
パソコン初心者の方は「ファイル管理」のイメージがないのですが、このイメージがつくとぐっとパソコン理解度が増すと思います。
もっと知りたい!という方向けにもコンテンツを充実させていきたいと思いますのでお楽しみにしていて下さい!
長々とお疲れさまでした!