- 「実行される」は“動き出す”ではない
- プログラムはただの文字列
- CPUがしていること
- ブラウザの場合
- なぜ「止まる」ことがあるのか
- 実行は1つずつしかできない
- 実際に起きるトラブル
- 注意点:コードは常に動いているわけではない
- 「実行」の正体
「実行される」は“動き出す”ではない
プログラミングを学び始めると、「このコードが実行されると〜」という説明が頻繁に出てきます。
しかし、この「実行」という言葉は直感と少し違います。
プログラムが勝手に考えて動き出す、という意味ではありません。
コンピュータが命令を1つずつ処理している状態を指しています。
重要なのは、プログラムは行動しているのではなく、
CPUが命令を読み取り続けているだけという点です。
プログラムはただの文字列
まず押さえるべき事実があります。
ソースコードはコンピュータにとって文章ではありません。
let a = 1 + 2;
人間には計算に見えますが、このままではCPUは理解できません。
コンピュータが直接理解できるのは、0と1の信号です。
そのため、プログラムは変換されます。
ソースコード → 機械語(バイナリ) → CPUが処理
これが「実行」の本質です。
CPUがしていること
CPUは非常に単純な作業しかできません。
- 値を読み込む
- 計算する
- 保存する
- 分岐する
これを高速で繰り返しています。
1秒間に何十億回も命令を処理します。
つまり、プログラムが実行されるとは、
CPUが命令の列を順番に処理している状態です。
ブラウザの場合
WebページのJavaScriptも同じです。
ブラウザはJavaScriptを直接理解していません。
内部でJavaScriptエンジンがコードを解釈し、CPUが理解できる形に変換します。
document.body.textContent = "Hello";
この1行でも、内部では多数の命令に分解されます。
- 要素を取得
- 文字列を準備
- メモリへ書き込み
- 画面更新
ユーザーからは一瞬ですが、内部では大量の処理が行われています。
なぜ「止まる」ことがあるのか
重い処理を書くと画面が固まることがあります。
これは不具合ではありません。
CPUが他の処理をする余裕がない状態です。
while(true) {}
このコードは永久にCPUを占有します。
結果として、クリックもスクロールも反応しません。
「プログラムが重い」とは、
CPUの時間を使い切っているという意味です。
実行は1つずつしかできない
多くの人が誤解する点があります。
コンピュータは同時に複数のことをしているように見えます。
しかし実際には、1つずつ高速に切り替えています。
これをスレッドやイベントループの仕組みが管理しています。
JavaScriptが「シングルスレッド」と言われるのはここです。
1つの処理が長いと、他の処理が待たされます。
実際に起きるトラブル
ボタンを押しても反応しないのに、数秒後にまとめて反応することがあります。
これはイベントが消えたのではありません。
CPUが処理中で、順番待ちになっています。
つまり、
クリックが無視されたのではなく、
まだ実行されていないだけです。
注意点:コードは常に動いているわけではない
プログラムは常時動いているわけではありません。
イベントが発生したときだけ処理されます。
JavaScriptの場合
- クリック
- 入力
- 通信完了
これらが起きたときに実行されます。
それ以外の時間、CPUは別の作業をしています。
「実行」の正体
プログラムが実行されるとは、魔法でも思考でもありません。
- 命令を読む
- 命令を処理する
- 次の命令へ進む
この繰り返しです。
私たちが見ているアニメーションや画面の変化は、
連続した命令処理の結果です。
つまりプログラムとは、何かをしている存在ではなく、
コンピュータに仕事の手順を渡しているものです。
この理解があると、「なぜ遅いのか」「なぜ固まるのか」を感覚ではなく仕組みで説明できるようになります。
実行とは動作ではなく、処理の連続なのです。