どうも、夏が来るとビールがうまくて逆に太るはっし~だす。
前回に引き続き、『プログラミングとは?』について書こうかと思います。前回は
●プログラミングとは作業指示書
●道案内を考えるのもある意味プログラミング
という内容でした。今回はもう少し掘り下げてプログラミングを考えてみましょう。
コンピュータはプログラムを理解している?
なんか最近耳にする『AIは人類の言葉を理解している?』みたいな感じですが、コンピュータはプログラム言語を理解して処理しているのでしょうか?
答えは『現時点ではNO』です。
一般的にというかほとんどの『コンピュータ』と呼ばれるものは『ノイマン型コンピュータ』と呼ばれるもので、70~80年前から基礎的な構造や設計思想(アーキテクチャ)は変わっていません。
入力(キーボード)、出力(ビデオカード)、記憶(メモリ)、制御(CPU)、演算(CPU)の5つの要素で構成し、プログラム(ソフトウェア)を外部(HDD等)からメモリへ読み込んで実行する方式で、今まで細かい進化はあるものの基本は同じです。
※このあたりのハードの話は詳しくはまた別の機会でやります。
話が少しそれましたが、作成したプログラムは実行時にメモリに読み込まれ、CPUが逐次処理(順番に読み取って処理すること)し、必要に応じて演算(計算)を行います。あ、ちなみにCPUとは “Central Processing Unit” の略で中央演算処理装置のことです。
こう書くと「CPUはプログラム言語を理解しているじゃないか!」と言いたくなると思いますが、CPUへの指示はプログラム言語をさらに変換(翻訳、プログラム用語ではコンパイルという)したもので “0” と “1” だけで表現する “2進数” という表現(機械語やマシン語とも呼ばれる)で、元のプログラムとはその意味もかなり違うものになります。
世界で一番記述されているプログラムである、画面に「Hellow World!」と表示するプログラムも、内部では「指定したこの場所にこの値(数値)を順番に書き込んで」という指示でしかありません。
つまり、コンピュータはプログラムの指示の意味を本当の意味では理解していないのです。
今日のまとめ
・コンピュータはプログラム言語をそのままは理解できない
・内部では “0” と “1” の2進数(機械語・マシン語)で命令しなければいけない
・理解できる言葉に翻訳する事を “コンパイル” と呼ぶ
大体お酒が入った状態で書いているので、乱筆乱文をご容赦くださいませ・・・ではでは