「コンピュータのキモチ講座」第4回

【コンピュータのキモチ】翻訳の魔法:コンパイラが「言葉」を「構造」に変えるまで
プログラミング言語で書いた一行のコード。それがコンピュータに届くまでに、コンパイラという名の「超エリート翻訳チーム」がどんな仕事をしているのか、覗いてみましょう。
1. 字句解析:まずは「単語」に切り分ける
コンパイラの最初の仕事は、ソースコードを最小単位のパーツ(トークン)に切り分けることです。 例えば if ( a > 10 ) というコードがあったら:
- 「if」=予約語
- 「(」=記号
- 「a」=変数名
- 「>」=演算子
- 「10」=数値 というふうに、バラバラのカードに分解します。これが字句解析。辞書を片手に「これは知っている単語かな?」とチェックする作業です。
2. 構文解析(パース):バラバラの単語に「命」を吹き込む
今回の主役、構文解析です。字句解析でバラバラになった単語を、文法というルールに従って「ツリー構造(構文木)」に組み立て直します。
例えば、3 + 4 * 5 という式。 コンパイラは構文解析によって、「あ、掛け算を先にやるんだな」という**構造(親子関係)**を見抜きます。
- 人間の視点: ズルズルと続く一行の文字列
- コンパイラの視点: 枝分かれした「論理のツリー」
このツリーができることで、初めてコンピュータは「何を、どの順番で実行すべきか」という**プログラムのキモチ(意図)**を正しく理解できるのです。
3. 最適化:プロの「手抜き」技術
構造が理解できたら、次は最適化です。 「この計算、毎回やる必要ないよね?」「この変数は結局使われていないから消しちゃおう」と、コードを極限までスリムにします。 「最小の努力(電力・時間)で、最大の結果を出す」。これが制御系エンジニアがコンパイラに惚れ込む理由でもあります。
4. アセンブラ:最後の「通訳」
こうして磨き上げられた指示書を、特定のCPUが理解できる「0と1」の直前(アセンブリ言語)へと書き出し、最終的にアセンブラが実行ファイルへと仕上げます。
まとめ:私たちは「構造」をデザインしている
プログラミングを学ぶということは、単に文字を打ち込むことではありません。コンパイラが解析しやすい、「美しく論理的な構造」を組み立てることなのです。
「構文エラー(Syntax Error)」が出たときは、コンパイラが「ごめん、ツリーがうまく組み立てられないよ!」と困っているサイン。そう思うと、エラーメッセージも少しだけ愛おしく感じませんか?
#コンパイラ #アセンブラ #論理的思考


