@kazuki_sumi さんの『「プログラミング言語」って何?』の記事にコメントしたのですが、せっかくなので記事にさせていただきます。


プログラム

「プログラム (program)」の語源は、pro-gram、pro-=前/先に、gram=文/書を書く。事前に書く、実行/実演する前に書いたもの、これから実行/実演する内容。

運動会でこれから子供たちが実行することが書かれているプログラム。

演奏会でこれから実演する内容が書かれているプログラム。

コンピュータにこれから実行させることが書かれているプログラム。


コンピュータ

コンピュータの動作原理は、電気を流すか流さないかで電球を点灯・消灯させるようなもの。

電球をディスプレイのドットにして、ドットに赤緑青(RGB)の色を付けて無数に並べ、オンオフで明るさを調整して、フルカラー動画を見せることができる。

スピーカーにつなげて音を鳴らしたり、ネットワークに信号を流して通信したり、すべて電気のオンオフで仕事してる。


バイナリ

電気の オン か オフ、それを数値の 1 と 0 で表現。

1 か 0 を並べた数値は「2進数=バイナリ=binary」。bi=2、2輪=バイク、バイシクル。

1 か 0 かの情報1個を「ビット」。4個で「ニブル」、8個で「オクテット」。「バイト」はアーキテクチャ依存だったけれど、現在は8ビット=1バイト。

「ニブル」で表現できる2進数は 0000 ~ 1111。10進数にすると 0 ~ 15、16進数にすると 0 ~ F (0~9とA~Fの16個を使用)。

2進数で表現すると長くなるから、2進数8桁を16進数2桁に短くした表現が使われる。

16進数は「ヘキサデシマル=hexadecimal」。「hexa」は6、「deca」は10だけど、「hex」だけで16進数という意味に使われる。

hexagon=6角形、deciliter=10ml、decade=10年=一昔。december=旧10月=現12月。


機械語

コンピュータに仕事をさせるために0と1の組合せで作った「命令」が「機械語」。

8ビットCPUであれば、8ビットの組合せで様々な命令が作られている。64ビットCPUであれば1命令64ビット。

機械語はバイナリ(0と1の羅列)なので、機械語命令を保存した実行ファイルを「バイナリファイル」と呼んだりもする。


プログラミング言語

機械語は人間が理解しにくいので、機械語と1対1で文字にしたのが「アセンブリ命令」「ニーモニック」。

機械語/アセンブリ命令は単純な仕事をさせる命令。単純な命令を組み合わせて複雑な仕事をさせる。

複雑な仕事を機械語/アセンブリ命令でプログラムすると膨大になり、人間が理解するのが難しい。

複雑な仕事を人間が理解しやすいように書ける多種多様なプログラミング言語が存在する。