そもそもプログラミング言語って何?
プログラミングの概要
プログラムとはコンピュータにしてもらう
指示をまとめたもの。
私たちはプログラムを作ってコンピュータに実行させて、コンピュータに仕事をしてもらいます。
コンピュータは、内部では基本的に0と1だけの
2進数(バイナリ)で表現して動作しています。
しかし人間には機械語は難しいので、
普段私たちが使ってる言語に近い、決まった
文法や単語からなる文で指示を与えて、それをあとで2進数に訳して実行させるという方法が生まれた。
まさしくこれがプログラミングである。
ファイルの種類
①バイナリファイル
コンピュータが記録したファイルでもちろん2進数で書かれている。
②テキストファイル
2進数で決まった規則を使って、人間様のわかりやすくするための自然言語で表したもの。
また.txtなど、拡張子をつけて区別するが
プログラミング言語によってその拡張子は様々である。
また、そのためにファイル編集したりするもので、プログラムのコードを記述するためのものがテキストエディタと呼ばれるもの。
インタプリタとコンパイラ
コンピュータが認識できるのは2進数だと先ほど伝えたが、それを私たちの自然言語で書かれたプログラミング言語を機械語に翻訳する必要がある。
ソースコードを一行ずつ翻訳しながらプログラムを実行していく方法。このような種類のプログラミング言語をスクリプト言語と呼ぶ。
それを翻訳するためのソフトをインタプリタやシェルといいます。
Javascriptや、Pythonなどもそれに含まれる。
また、オブジェクト指向プログラミングを実現できるスクリプト言語がRubyやPHPなどになる。
ソースコードを全部一気に機械語に翻訳してから、機械語のファイルを実行する方法。
このような言語を一般的にコンパイル型言語などと呼ばれる。
プログラムのコードを機械語に翻訳することを
コンパイルという。
つまり、コンパイルするためのソフトウェアののことをコンパイラといいます。
代表例としてはC言語、C++、C#やFORTRANなどがそれにあたる。
またコンパイル型言語では、コード入力に使う言語と、実行ファイルは別である。
そのため、ソースコードを変更してもコンパイルしなければ変更は反映されない。
もちろん実行ファイルには機械語で書かれているので、その分だけ処理が高速になる。
実行ファイルの言語はOSやハードウェアそれぞれに合わせた機械語になっており、OSが異なると実行できなくなってくる。さらに言うと、実行ファイルだけだと元の内容はわからない。
ただその反面、機械語に変換された実行ファイルは配布するプログラムのもともとのコードの内容を秘密にしたいときは便利であるメリットもある。
どちらでもない言語、両方できる言語
プログラミング言語では、インタプリタかコンパイラかのどちらかがはっきりしない言語も存在する。例えばJava。
Javaはコードを記述後と、実行の前にJava専用の中間言語に変換する。
機械語に直接翻訳してないので、中間言語ファイルは特定のOSに依存しないでどのOSでも使用可能です。しかしJava中間言語に翻訳するためのソフトウェアが必要であり、そのようなソフトウェアがJavaランタイム(Javaを利用するためのソフトウェア)には組み込まれている
一見するとJavaのような中間言語生成のプログラミング言語はどのOSに依存しないので理想的なように見てるが、現状かなりの資金が必要でそのためオラクル社という大手IT企業が行っている。
また比較的新しい言語でいうと、両方コンパイルもスクリプト実行もできるのが多くなっており、例えばPythonはスクリプト型言語だが、コンパイルすることもできる。
Go言語やHaskellでは、コンパイルして実行することもできるし、ソースコードをそのまま実行することも可能。