コンテンツにスキップ

プログラミング

前の章で学んだように、アルゴリズムは問題を解決するための手順を明確にしたものです。しかし、アルゴリズムをそのままコンピュータに渡しても、コンピュータはそれを理解できません。コンピュータが理解できる形に書き換える必要があります。

プログラミングとは、プログラム言語(プログラミング言語)を用いてアルゴリズムを記述することです。プログラミングによって、人間が考えた手順をコンピュータで実行できるようになります。

たとえば、「2つの数を足して結果を表示する」というアルゴリズムがあったとします。これをプログラム言語で書くと、次のようなイメージになります。

a = 3
b = 5
print(a + b)

このように、アルゴリズムをプログラム言語のルールに従って記述する作業がプログラミングであり、記述されたものをプログラムと呼びます。

プログラミングで人間が書いたプログラムのことをソースコード(源コード)と呼びます。ソースコードは、人間が読み書きしやすいように設計されたプログラム言語で書かれています。

一方、コンピュータの CPU が直接理解して実行できる言語は機械語(マシン語)だけです。機械語は 0 と 1 の組み合わせ(2進数) で構成されており、人間にとっては非常に読みにくいものです。

つまり、人間が書くソースコードと、コンピュータが実行する機械語は「言葉」が違います。そのため、ソースコードを機械語に**翻訳(変換)**する仕組みが必要になります。

試験で出るポイント

「ソースコード=人間が書くプログラム」「機械語=コンピュータが直接実行できる言語(0と1の列)」という対応をしっかり押さえておきましょう。

ソースコードを機械語に翻訳する方式には、大きく分けてコンパイラインタプリタの2つがあります。

コンパイラは、ソースコード全体をまとめて機械語に翻訳する方式です。翻訳の作業をコンパイルと呼びます。

コンパイラの流れは次のとおりです。

  1. 人間がソースコードを書く
  2. コンパイラがソースコード全体を機械語に翻訳する
  3. 翻訳された機械語のプログラム(実行ファイル)を実行する

コンパイラ方式では、翻訳と実行が別々のステップになります。最初に翻訳する時間がかかりますが、一度翻訳が終われば、実行のたびに翻訳し直す必要がないため、実行速度が速いのが特徴です。また、翻訳の段階でソースコード全体をチェックするため、エラー(文法の誤りなど)をまとめて検出できます。

代表的なコンパイラ方式の言語には、C言語や Java などがあります。

インタプリタは、ソースコードを1行ずつ(1命令ずつ)翻訳しながら実行する方式です。

インタプリタの流れは次のとおりです。

  1. 人間がソースコードを書く
  2. インタプリタが1行目を翻訳して実行する
  3. 続けて2行目を翻訳して実行する
  4. これを最後の行まで繰り返す

インタプリタ方式では、翻訳と実行を同時に進めるため、プログラムを書いたらすぐに動作を確認できる手軽さがあります。ただし、実行するたびに毎回翻訳を行うため、コンパイラ方式と比べて実行速度は遅くなります。エラーは、実行中にその行に到達した時点で検出されます。

代表的なインタプリタ方式の言語には、Python や JavaScript などがあります。

コンパイラとインタプリタの比較

Section titled “コンパイラとインタプリタの比較”
項目コンパイラインタプリタ
翻訳方法ソースコード全体をまとめて翻訳1行ずつ翻訳しながら実行
実行速度速い(翻訳済みの機械語を実行)遅い(毎回翻訳しながら実行)
エラー検出コンパイル時にまとめて検出実行中にエラーの行で検出
手軽さ翻訳の手順が必要書いてすぐ実行できる
代表的な言語C言語、Java などPython、JavaScript など

試験で出るポイント

コンパイラとインタプリタの違いは頻出テーマです。「まとめて翻訳=コンパイラ」「1行ずつ翻訳しながら実行=インタプリタ」という特徴を対比で覚えましょう。実行速度はコンパイラ方式のほうが速い点もよく問われます。

プログラミングは、単にコードを書くだけではありません。実際には、次のような流れで進めます。

  1. 設計: どのような処理を行うか、アルゴリズムを考える
  2. コーディング: アルゴリズムをプログラム言語で記述する(ソースコードを書く)
  3. 翻訳: ソースコードを機械語に変換する(コンパイラまたはインタプリタ)
  4. 実行: 変換された機械語をコンピュータで実行し、結果を確認する

エラーが見つかった場合は、ソースコードを修正して再び翻訳・実行を行います。この修正作業をデバッグと呼びます。

アプリで問題を解こう!