プログラミングって何なの?
最近小学校の義務教育にも組み込まれたり、なにかと注目をあびている「プログラミング」ですが「プログラミングってそもそも何なんだろ……?」
と思っている人はとても多いと思います。今日はそういった人に向けてプログラミングとは何か?プログラミングを勉強するメリット・プログラミング言語の種類について、極力専門用語を使わずに超分かりやすく説明していきたいと思います。
まずはWikipediaの説明を見てみましょう。
コンピュータのプログラミング(英: programming)とは、コンピュータプログラムを作成することにより、人間の意図した処理を行うようにコンピュータに指示を与える行為である。(コンピュータ以外にも「プログラミング」という語は使われるが、それらについては扱わない)
上の通りに説明されていますが、これではよくわかりません。つまりどういうことかというと「プログラミングとはコンピューターに指示を与えること」を意味します。コンピュータは従順で計算処理などが人間よりも圧倒的に早い凄いパワーを秘めている訳ですが、人間と違い、空気を読んだりすることはできず、指示された通りの事しか出来ません。少しでも指示におかしな点があるとエラーになり、何もしてくれません。
そして、このスゴイ計算パワーを秘めたコンピューターをうまく活用するためには、コンピューターに対して、「自分がしてほしい事」を、「コンピュータが理解できるような言葉やしぐさで正確に指示を伝える事」が必要になってきます。つまりコンピュータに「こういう作業をして欲しい!」と伝えるための作業が「プログラミング」なのです。
この作業というのは、基本的にインターネットにアクセスして、自分のほしい情報を取得する、コンピューターの中にあるファイルを定期的に実行するなどの電子的なタスクで一般的で、僕がやっている簡単な例であればtwitterにアクセスして、その日の日経平均とダウの価格と取引量データを取得するなんていうものがあります。
ですが、昨今はIoTという言葉に代表されるように現実のモノとコンピューターを接続することが容易になったため、モノを動かす・掃除をするなんていうリアル世界での作業もコンピューターに行わせることがドンドン簡単になってきています。
「プログラム」とは何か?
プログラムについてはWikipediaの説明では次のように説明されています。
コンピュータが機能を実現するためには、CPUで実行するプログラムの命令が必要である。 コンピュータが、高度な処理を人間の手によらず遂行できているように見える場合でも、コンピュータは設計者の意図であるプログラムに従い、忠実に処理を行っている。実際には、外部からの割り込み、ノイズなどにより、設計者の意図しない動作をすることがある。また設計者が、外部からの割り込みの種類を網羅的に確認していない場合もある。
つまり、コンピュータ上での「プログラム」とは、「コンピュータがするべき仕事の手順や内容が書いてある文章」を意味します。要は料理を作るときの「レシピ」や、仕事をこなす上での「マニュアル」のような、やってほしい仕事内容を書いた紙みたいなものです。
「プログラム」とはまずはじめに何をして、その次に何をして…という指示が、「コンピュータが理解できる言葉で順番通りに書かれている電子テキスト」という認識です。ものだとイメージです。
プログラミングとは魔法である
プログラミングは「もっとこうだったらいいのに」や「こんな機能が欲しい!」という、何でも自分の願いを叶えることができる魔法のような行為です。ただ「プログラミング」も完全な魔法ではなく、今の技術レベルではまだ何でもできるわけではありません。
例えば最近人工知能やAIが騒がれていますが、あれも要はコンピューターがプログラムという指示書に乗っ取って計算しているだけで、今の技術ではドラえもんのような万能なAIを作ることはまだできませんし、そこにはまで技術的な障壁が存在しています
ただ、コンピュータは人間の思考速度などとは比べ物にならない性能を持っているのが事実で、その性能も年々加速的に向上しており昔は簡単な計算作業が精一杯でしたが、今では人間が到底叶わない仕事をしてもらうことも簡単にできるようになりまし、スマホの登場で世界中どこでもすぐ連絡が取れるようになりました。
そういう意味ではプログラミングはまだ完全な魔法ではないけども、技術進歩により年々魔法に近くなりつつあるモノ」とはいえると思います。コンピューターが魔法の杖であるならば、プログラミングというのは魔法の杖の振り方に当たると言えます。そしてプログラミングができる人は魔法使いになります。ただその技量次第で使える魔法は限られる。そんなところでしょうか?
そして、プログラミングの具体的な例を挙げると、例えば数万枚に画像ファイルの書かれているテキストの内容を全部文字に起こす作業を行うとします。これを人間が一々読んでそれを文字に起こして書くという作業をすると、途方もない人月が掛かりますが、その作業内容をプログラムに書いてコンピューターに実行させれば一瞬で終わります。
他にもtwitterの一時間おきに自分のサイトの記事をランダムで投下したり、話題になっているツイートを抽出して、メールにして送る。1秒ごとに為替の価格データを取得して、高頻度売買を行うというようなプログラムをコンピューターに行わせていますが、これらの作業を人間が手動でするのは不可能に近いですし非常に手間が掛かります。
コンピュータは超高速処理を実行できる道具であり、どう働いてもらうかを的確に指示することで、まさに魔法のようなことができるのです。そういう意味ではプログラミングの本質とは、「人間だけでは到底できない量の仕事を、コンピュータに仕事をさせる」ということです。
このコンピューターに作業させるという感覚が、プログラミングを勉強するおいて大事な要素の1つだと思います。
つまり、プログラミングとは魔法に近いものでありそれを使えるか使えないかでは作業に大きな差が出てくるわけです。特に日本の生産性が悪いと言われる原因はこのプログラミングを使える人が少ないというのも起因していると思います。
「プログラミング言語」の種類と用途
人は「プログラミング言語」の書き方を覚えることで、様々な命令を表現することができ、コンピュータに効率的に指示を出せるようになります。そして、プログラミング言語は、最終的にコンピュータが理解できる形の「機械語」に変換されて動作しています。
プログラミング言語は、コンピュータと会話するために必要な言葉のことです。人間同士が会話するために使う日本語や英語などは「自然言語」と呼ばれますが、プログラミング言語もこれと存在理由は同じです。ただ、プログラミング言語はどんどん新しいものが出てきます。
• もっと難しくても良いから処理を早く実行できるものが欲しい
• もっと子供でもわかるように簡単に書けるようにしたい
そういった様々なニーズから日々新しいプログラミング言語が開発されていており、現在ではプログラミング言語は約200種類以上もあると言われています。
日本人には日本語で、アメリカ人には英語で、ドイツ人にはドイツ語でというように、話す相手によって適切な言語が必要になります。プログラミングの世界でも同様で、作業用途に応じて効率的に命令を伝えられるように色々なプログラミング言語が作られています。
現在実務(webアプリ制作・データ分析・システム構築)などで使われている人気なプログラミング言語には以下のようなものがあります。
• C言語/C++ • Java • Python • PHP
• HTML/CSS • Javascript • SQL/Oracle
次はプログラミング言語の種類と用途についてより詳しく解説していきます。「プログラミングを勉強したいけど、どのプログラミング言語を勉強すればいいか分からない・・・」 「何をすればいいか分からない・・・」という方々に向けて分かりやすく書いています。
コメント