プログラミング学習をおこなう前に知っておいて欲しいプログラミング言語についての知識をざっくりの概要で説明します。
コンピュータに命令しているマシン語は0と1しかない
まずコンピュータとは、ソフトウェアに記載された内容通りに動作する箱と考えて下さい。一般的にコンピュータは、ソフトウェアから0と1で構成された信号を受け取り動作します。その0と1で構成された文章は「マシン語」と呼ばれ、コンピュータはこの0と1を超高速で読み取ります。
私たちはマシン語を使えない
当然ですが、私たちにマシン語を使ってコンピュータに命令を出すことは困難(不可能)です。0と1の羅列では、私たちにはまったく理解出来ないですからね。
そこで私たちが理解し、コンピュータに命令しやすくなる様にコンピュータ言語と言うものが誕生しました。
プログラミングの進化
- マシン語から高級言語への変化
- コンパイル言語の登場
- インタプリター言語によるコンパイル不要
- UIによる操作とオブジェクト指向プログラミング
- スクリプト言語の登場
マシン語から高級言語への変化
コンピュータに命令を出すソフトの内容(ソースコード)が0と1の羅列では人間には理解出来ません。そこで、コンピュータ言語が登場しました。どの様にしているかというと、人間にとって理解できるコンピュータ単語を使った文章を、マシン語(0と1)に翻訳し、コンピュータに読み取らせることで、人間の命令をコンピュータに上手く伝えます。
これにより誰でもコンピュータに命令を出す「ソフト開発」が出来る様になるました。この人間に理解できる単語を「高級言語」と呼びます。
※コンピュータ言語が、なぜ語学のように扱われているかは、コンピュータに命令を伝える為の「言語」と「翻訳機」の2つが複数存在し、その言語の特徴を考慮して選択する必要がある為です。
コンパイル言語の登場
コンピュータに理解させるために、高級言語からマシン語に翻訳を行うことを「コンパイル」と呼びます。「コンパイル」を行うプログラミング言語のことをコンパイル言語と呼び、FortranやC言語、C#、C++、Javaなどが該当します。特徴としては、プログラミングで記述し終わった際に、コンパイルソフトを使用してコンパイル(マシン語へ翻訳)を行う必要があります。これら言語は比較的古い言語になりますが、特徴として高速処理が可能なため自然科学などの分野で計算ソフトとして現役で使われています。
インタプリター言語の登場
コンパイル言語は、ソースコードを全て作ってから、一括でコンパイル(翻訳)する必要があり、大規模なソフト開発が難しいなどの問題がありました。
そこで一括のコンパイル(翻訳)ではなく、小刻みに翻訳しながらソースコードを作れる言語が登場しました。この言語をインタプリター言語と呼び、PythonやJavaScript、PHP、Ruby、Perlなどの言語が該当します。最近のプログラミング学習では、このインタプリター言語が主流となっています。
そのほかにも沢山の言語がありますので気になる言語を調べてみるのもいいかもしれません。
このインタプリター言語の特徴としては、コンパイル不要である為、ソフト開発が分散して開発できる点が最大のメリットと言えます。
UIによる操作とオブジェクト指向プログラミング
Windowsが登場してから、画面上のボタンやプルダウンメニュー、入力ボックスを使って操作する「ユーザーインターフェース(UI)上の操作」が当たり前になっています。これにより、一つの操作をオブジェクト(モノ)であるかのように扱う手法が一般的になってきました。この手法のことをオブジェクト指向プログラミングと呼びます。
なかなか理解しづらいですが、情報(ソースコード)の型を決めることにより、コンピュータに機能を追加しやすくなるというメリットが生まれたと考えてください。
スクリプト言語により簡単にプログラミングができる時代
ある程度決まった動作をあらかじめソースコードとして纏めておけば、ソースコードはもっと短いコードで記述できるはずです。またプログラミングの文法もシンプルになる為、わかりやすいコーティングが可能となります。
そのような考え方で、少ないソースコードで、一連の動きができる様にしている言語をスクリプト言語と呼びます。
これからプログラミングを始めたいという人は、スクリプト言語の便利さについてそんなに意識しないかもしれませんが、20年前辺りからプログラミングをしている人にとっては、「プログラミングがかなり簡単に記述できるようになったなぁ」と感じるはずです。
自分は何の言語を学ぶべきか?
これからプログラミング言語を学ぼうとしている人にとっては、何の言語を学べばよいかを手っ取り早く知りたいと思います。しかし、どんな言語が自分にあっているかを判断するには自分が何をしたいのか?どういうことをプログラミングでしたいのか?をまずははっきりとさせる必要があります。
そこから自分が学ぶべき言語がわかるはずです。