プログラマーとは
扱っているプログラムってそもそも何?
プログラムって何だと思いますか?
プログラマーを目指す人に「じゃあプログラムって何ですか?」と聞いてみます。たどたどしくも自分なりの回答をしていただければOKですが、「Java」とか「C言語」とか言語名のみを言ったあなた、NGですよ。
致命的というわけではないのですが、言語はあくまで手段であってプログラムの本質ではありません。プログラマーを目指すのであれば手段の勉強はもちろんですが、本質となる『コンピュータの仕組み』についても知っておく必要があると私は考えます。勉強するための良い本もいっぱい出てますので、ここでは私が学んだことをざくっとお話しします。
コンピュータの仕組みとプログラム
前記事でも書かせて頂きましたが、私たちの身の回りには自動改札機やゲーム機、パソコンなど様々な電子機器で溢れています。これらの中に用いられているのが『コンピュータ』です。
『コンピュータ』というとパソコンだけを思い浮かべがちですが、ゲーム機だって、あまつは携帯電話であっても『コンピュータ』を使用しています。ではまず『コンピュータ』とは何でしょうか?「計算をする道具」を作ろうとした長い歴史の中で生まれたのが、ほかでもない『コンピュータ』です。よって「計算機」と呼ぶ人もいます。現代では「計算」どころか様々なことが出来るようになりました。これを可能にしたのが『プログラム』の存在です。
人間が動作させたいことを「命令」として『プログラム』に書き、コンピュータに読み込ませます。するとコンピュータは、読み込まれた『プログラム』に書かれた命令を忠実に実行する事により、人間がしたいことを実現しているのです。
プログラム言語の歴史
前述した通り、『プログラム』は「命令を書く事」です。しかし、コンピュータは電気信号が流れるか流れないか、すなわちデジタルと呼ばれる「1」か「0」かで全てを表現しています。よって、コンピュータが理解出来るのは『機械語』と呼ばれる「1」と「0」の羅列です。『機械語』をもう少し発展させてニーモニックという『アセンブリ言語』があるのですが、現代では触れる機会もないので飛ばして『高級言語』の話をさせて頂きます。(興味がある方は是非独学して下さいね。)
『高級言語』とは、「1」と「0」の羅列である『機械語』よりももっと「人間が感覚的にわかるようにした」言語です。例えば「1+2」という計算を『機械語』で書くと大変なことになりますが、『高級言語』では「1+2」と書く事により、コンピュータが「1+2=3」と計算してくれるようになったものです。
種類は様々で、古くは科学技術計算用のFORTRAN、事務処理用のCOBOL、初心者でも使えるようにしたBASIC、アルゴリズムを明快にするために生まれたALGOLなど。
ALGOLの登場には、コンピュータは単に「1+1」といった数値の計算結果を求めるだけでなく、『駅スパート』のように、「○○駅から△△駅まで、最短経路はなんだろう?」といった少し複雑な問題を効率的に解決するための手順を組み入れてプログラムを作成したいという要求が背景にあります。この基本的な考え方は、のちのC言語やJAVAにも受け継がれています。
プログラムの高級言語は英語と一緒
私自身は入社後にC言語、C++、Javaなどの開発経験がありますが、他の言語も読解する事は出来ます。頑張れば書く事も。
つまり私にとっては「言語によってお作法が違うだけ」という認識なので、そのお作法を文法に置き換えればまさに英語を学ぶのと一緒です。実際、海外の方が作っているので記述も英語ですしね。「やべっ、英語苦手だ!」と思った人もあなたが生きてきてずっと使っている日本語にだって文法はあるので、それを使いこなせているのですからご安心を。最後に、言語の勉強に関するアドバイスです。
様々な言語を経験する事も重要ですが、まずは一つ好きな言語を極めてみると応用がききます。今すぐにでも何か始めたいと言う方や初めてまたはあまり得意ではない方は、私の経験談からすると、WEB系でサイトを作りながらJavaScriptの言語に触れ、プログラムに慣れるといいと思います。ある程度出来る方は、もっとコンピュータの仕組みも考えられてとっつきやすいC言語から始めて、JAVAにいくと非常に考えの違いやありがたみがわかると思います。
とはいえ、あくまで個人的なアドバイスなので、やってみたい言語があればそれから始められるのが一番いいと思います。皆さん、頑張って下さいね。

