今日はプログラミングと機械語についてやっていくよ。
機械語??前回やったプログラミング言語とはまた別なの?
プログラミング言語は人間用、機械語はコンピュータ用の言葉って感じ。
うーんわかりそうで、わからない
大丈夫、今回は機械語ってそもそも何?ってところから、プログラミング言語→機械語に変わっていく様子、プログラムが動いていく様子について紹介、解説していくから!
よろしくおねがいします!!
機械語ってそもそも何?
コンピュータは人間と違って、普通の言葉を理解できないんだ。
だから人間がコンピュータと話すためには、コンピュータが理解できる言葉、「機械語」を使わないといけない。
機械語自体は、0と1の二つの数字で成り立っている。
この0と1はコンピュータの電気信号に対応していて、コンピュータがこれを見てプログラムを実行するわけ。
プログラムと機械語の関係、変換
機械語は、0と1の組み合わせで、コンピュータは0と1の組み合わせによって動作をするわけだけど。
逆に機械語だけだと僕たち人間は何をいっているのかわからない。
「000001100100100」という数字を見ただけで、「ああ、文字列Aね!」なんてなれないよね?
だからこそ、人間はプログラミング言語を使ってプログラムを書いて、プログラムを機械語に変換してからコンピュータ側は翻訳された機械語に沿ってプログラムを動かすんだ。
プログラミング言語で書いたプログラムを直接コンピュータに読み込ませることはできないから、機械語に変換してからコンピュータに読み込ませる。
外国人選手とコミュニケーションを取るときに翻訳家を間に挟むイメージだね。
IT用語ではこの翻訳家のポジションをコンパイラと呼び、プログラミング言語を機械語に翻訳する作業のことをコンパイルなんて呼ぶよ。
図にするとこんな感じだ。
なるほど、プログラミング言語はなんとなく、僕たちの話す言葉とか理解できる言葉だけどコンピュータは理解できない。
だから、コンピュータが理解できる機械語に翻訳する必要があるってことだね?
そう!理解が早いねぇたこ!
えへへへへっ♪♪
次はもう少しこの翻訳からコンピュータが動く様子を解説していくね
プログラムがどうやって機械語になって動くのか
プログラムを機械語に変換するためには、「コンパイラ」または「インタプリタ」と呼ばれる特別なプログラムが使われるんだ。
これらはプログラミング言語を機械語に翻訳する役割を持っているよ。
この翻訳が終わると、コンピュータはその機械語に従って動くんだ。
例えば、「x = a + b」とプログラミング言語C#で書いた場合、コンパイラによってコンパイル(翻訳)すると「83 C4 04」みたいな機械語になるんだ。
コンピュータは「83 C4 04」をプログラムに沿って電気信号を操作することで結果的にプログラミングした「x = a + b」という操作を実現させるんだ。
普段は機械語を見る機会がなく、結果だけ画面を見ることがほとんどだから意識することはないけど、コンピュータの中では必ず機械語が動いているんだよ。
すごーい、コンパイラさんってすごい優秀だね。
コンパイラさんは、プログラミング言語はいっぱいあるけど全部を機械語に翻訳できちゃうの?
プログラミング言語ごとにコンパイラはいるって感じかな。
C#を機械語に翻訳するコンパイラ、Javaを機械語に翻訳するコンパイラがそれぞれいて、必要に応じて切り替える感じ
ということは機械語もバラバラになっちゃわない?
大丈夫なんだ。機械語自体はコンピュータの中で統一されている言葉だからどのコンピュータでも基本的に同じ動作になるんだ。
どんな言葉が来ても最終的に日本語になっていれば、僕たちは日本語として理解できるイメージだね。
機械語自体は一つだから、いろんなコンパイルさんも最終的には同じ形に翻訳するイメージ。
ほぉ~、今更だけど機械語をどうして解説してるの?正直プログラミングをするだけなら特に機械語を意識することなんてないと思うんだけど。
いい着眼点だね。
機械語は役に立つのか?そこも解説しておこう。
機械語を知って何の役にたつの?
一般的には、僕たちは直接機械語を書くことはありません。
しかし、機械語の存在と役割を理解することで、コンピュータがどのように動作するのか、プログラムがどのようにコンピュータを制御するのかを理解することができるんだ。
それによって、プログラムの動作をより深く理解することができる。
特に、プログラムをとにかく早く動かしたいという必要が出てきた時は機械語を意識してできるだけ機械語が短くなるように工夫するプログラミングをしたりするよ。
とはいえ、基本的に機械語の勉強が必須かと言われれば、全くそんなことはない。
知っていれば、役に立つ場面が来るかもね?って感じだね。
まとめ
必要不可欠じゃないけど、知っているとプログラミングがより楽しくなる感じだね
そう、プログラミングってのは最初は難しく感じるかもしれないけど必ず慣れるし、慣れた先にいろんな知識を結びつけるとめちゃめちゃ楽しいんだよ
にいちゃん…こわい。目光ってるよ笑
ごめんごめん、プログラミングを熱く喋りだすと止まらなくなっちゃうんだよ
なんとなく知ってた!
今日はこのくらいにして次回はコンピュータの仕組みについて勉強していこうか!