コンピュータは人間の命令に従うだけで凄くない!
皆さんは普段からパソコン、ゲーム機、スマートフォンなど様々なコンピュータを生活の中で使っていると思います。実はTVや電子レンジ、洗濯機、自動車もコンピュータが組み込まれていて、それ無しでは生活が成り立たないくらい恩恵をうけています。
これから未来に向けてICT=Information and Communication Technology(情報通信技術)さらに技術は進み、より便利になるでしょう。
出典:総務省ホームページ (http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h27/html/nc262000.html)
ところが「コンピュータって凄い!」と思われるかもしれませんが、実はできることは決まっています。
① 人間から与えられたデータを記憶する
② 人間から与えられたデータをプログラムに従ってデータを計算などの処理をする
③ 人間から与えられたデータをプログラムで決められた判断により処理を変更する
④ 人間から与えられたデータをプログラムで決められた通り処理を繰り返す
⑤ 人間から与えられたデータをプログラムに従ってネットワークにあるコンピュータ同士がデータをやりとりする
実は大きく分ければこれだけです。意外と少ないのですが、覚えられるデータ量とデータを処理できる速度が人間にはとても叶わないことが凄い、というだけです。
ここでいうデータはお金とかの数値、文章などの文字、画像・動画・音などのことです。コンピュータにデータを人間が与えなければ何も始まりません。
データだけあってもそれを人間が利用しやすいように処理をしてくれるプログラムがないと何もしてくれません。
“プログラム”または“ソフトウェア”とは、コンピュータにデータをどのように処理してもらうか、命令を書いた文章です。
コンピュータは人間の言葉は理解できませんので、人間がコンピュータが判る言葉で書いてあげるという手段を取ります。その言語か“プログラミング言語”といいます。
プログラミング言語でプログラムを作る仕事が“プログラマー”という職種です。
ちょっと考えてみても、この仕事はとても大量に人材が必要だということが判ります。
プログラマーというスキルだけでは現在のトレンドでは無くなりつつあり、プログラムを作るスキルを持ちながら、システム全体の設計までできる“ITエンジニア”が求められているのです。家を建てるのに例えると、プログラマーは大工さんで、ITエンジニアは家の設計ができる建築士です。より広い視野と高いスキルが必要です。
これから未来、ICTがもっと発展するためにはITエンジニアを目指すべきです。
アルゴリズムって何?
アルゴリズム(algorithm)とは、問題を解くための手順のことです。プログラムがコンピュータを動作させるのに重要であることは先ほど説明しました。そのプログラムが様々なデータを処理するわけですが、その手順が悪ければ時間が掛かったり、間違ったことが起きたりする可能性が増えます。
そこで、ITエンジニアにはアルゴリズムを理解するスキルを得て、それを踏まえプログラムを作成する必要があるのです。
“ちょっと難しそう・・・”と思うかもしれませんが、お料理をしたことがあればアルゴリズムは理解できます。パズルゲームが得意な人でもいいでしょう。
下のイラストを見てください。例えば野菜を料理する場合、輪切りにしますが、左の図のように皮をむかずに切ってしまったら、細かくなってしまった後に一つずつ皮をむく無駄な手間が増えますし、見栄えも悪いでしょう。先に皮をむいてから輪切りにすれば効率よくなり、見栄えも良いでしょう。これがアルゴリズムの考え方です。
では実際にコンピュータのアルゴリズムの例を紹介します。人気のランキング順に並べ替えるというのをコンピュータの処理ではよく見かけます。それはどうやっているのでしょうか。並べ替えることを“ソート”といいます。以下のように数字が並んでいます。
これを小さい順にソートするにはどうすればいいでしょうか?
このアルゴリズムを“バブルソート”といい、ちゃんとしたコンピュータのアルゴリズムなのです。面倒でもコンピュータにやらせますから、正確に高速にやってくれます。
「あれ?もっと楽な別の方法がありそうだな・・・」と思い付いた方、ITエンジニアに向いています。パズル感覚で新しい手順を自由に考えてプログラムにするお仕事なのです。
もう少しアルゴリズムを知りたい方へ
スマホアプリで以下の「アルゴリズム図鑑」無料アプリをダウンロードしてみましょう。
先ほどのソートの解説もありますし、独学もできます。残念ながらプログラミングまではこれでは勉強できませんが、予習になります。
Iphoneの方はこちら
Androidの方はこちら
https://play.google.com/store/apps/details?id=wiki.algorithm.algorithms&hl=ja