プログラミング言語の基礎構造を語ります!
この記事では、
プログラミング言語とは何なのか?
コンピューターに命令をするにはどうすれば良いのか?
などに関して述べて行きます。
⑴機械語とプログラミング言語
現代ではコンピューターは日常的なモノとなっています。あらゆる仕事でコンピューターによるデータ管理が行われ、皆様も普段からPCやスマートフォン、ゲーム機などでコンピューターに慣れ親しんでいるかと思います。
しかし、コンピューターが理解できる言葉は0と1の文字列しかございません。
これを機械語と呼びます。例えばこの様な文字列です
情報の授業などで2進数、8進数などに触れたことがある方も多いでしょう。コンピューターは、まさにその文字列から命令を読み取っているのです。
ですが、人間が0と1のみで書かれた命令文を解読することは困難です。
そこで人間が理解しやすい様に設計された言葉である「プログラミング言語」を用います。
上の画像はRubyというプログラミング言語で書かれたプログラムです。
0と1だけの文字列に比べたら結構理解しやすいと思いますね!
プログラミング言語を使うことで機械に対して様々な命令を行わせることが出来るわけです。
⑵コンパイルとは?
しかし、機械語しか理解できないコンピューターは当然プログラミング言語を直接理解することは不可能です。
なら、なぜ我々が書いたプログラミング言語に従ってコンピューターが動作をしてくれるのか?
それはコンパイラという機械語とプログラミング言語の間の通訳者がいるからです。
コンパイラの仕事は人間が様々なプログラミング言語で記述したソースコードを受け取り、それを翻訳して0と1のみの機械語に変換することです。
この一連の作業のことをコンパイルと呼びます。
この様に人間とコンピューターの間にコンパイラという優秀な翻訳者が仲介をすることで、我々はプログラミング言語によりコンピューターに命令することが出来る訳です。
⑶補足 インタプリタ言語とは?
Rubyを学んでいる方の中にはこう考える方が居られると思います。
「あれ?コンパイルなんて作業は初めて聞いたし、そんなことした記憶がない」
それは概ね正解です。
何故なら、RubyやPythonなどの言語はインタプリタ言語という機械語への翻訳方法がコンパイルとは異なる言語であるからです。
インタプリタ言語は文字通り、「インタプリタ」という方式で機械語へ翻訳します
そこで「コンパイル」と「インタプリタ」の2つの違いを述べておきます。
まず、コンパイルではプログラミング言語で書かれたファイルを一度、実行形式のファイルに変換する作業を行います。
例えばC言語の場合は以下のコマンドを用います。
上の記述ではC言語で書かれた「HelloWorld.c」というファイルをgcc -oコマンドでコンパイルを行い、「HelloWorld」という実行ファイルへ変換する様子を表しています。
このファイルを実行するには上の様に「./実行ファイル名」という手順を踏みます。
次にインタプリタ言語が実行されるまでの流れを説明します。
はい、これだけです。
Rubyで書かれた「HelloWorld.rb」というファイルをコマンド「ruby ファイル名」で実行しました。
ここでインタプリタ言語の定義について説明しておきます。
「インタプリタ言語とはプログラミング言語で書かれたソースコードや中間表現を逐次解釈しながら実行するプログラムのことを表す。」
注目すべきは「逐次解釈しながら」という文です。
簡単に言いますと、インタプリタ言語では「プログラムの翻訳と実行を同時に行います」というイメージです。
ですので、インタプリタ言語には「コンパイルして実行ファイルを作成した後に実行ファイルを起動させる」というプロセスがございません。
以上がプログラミング言語と機械語の関係の大まかな話になります。
次回以降のプログラミング関連の記事では私自身の復習も兼ねて、RubyやRuby on Railsなどのプログラムを学ぶ、そして今回の記事の様にIT関連のキーワードも学んでいく方針と致します。