プログラム言語(programming language)

分類
テクノロジ系 アルゴリズムとプログラミング
出る試験
基本情報応用情報
重要度
★★★☆☆

機械語・アセンブリ言語・高級言語の3段。上へ行くほど人に近く、下へ行くほど機械に近い。

もう少し詳しい説明

プログラム言語は、人が書きやすい形から、機械が実行できる形までの幅があります。試験で問われるのは、その段がどうなっているかです。

高級言語C、Java、Python など。機械の構造を知らなくても書けるアセンブリ言語機械語の命令に名前を付けたもの。1命令が1行に対応する機械語0と1の並び。CPUが直接実行できる唯一の形人が読み書きしやすい機械がそのまま実行できる
下へ行くほど機械に近づきます。高級言語はコンパイラが、アセンブリ言語はアセンブラが翻訳します。どの道を通っても、最後に動くのは機械語です。

はじめは機械語しかありませんでした。そこから「もっと書きやすくしたい」という要求で上の段が作られていった、という順番で覚えると筋が通ります。

機械語

CPUが翻訳なしでそのまま実行できる、唯一の形です。中身は0と1の並びで、人が読むものではありません。

命令の種類も、その並びが何を意味するかも、CPUの種類ごとに違います。ある機械で動く機械語が、別の機械でそのまま動く保証はありません。

アセンブリ言語

機械語の命令に、覚えられる名前を付けたものです。10110000 と書くかわりに MOV と書きます。

やっているのは名前の置きかえだけなので、書いた1行が機械語の1命令にほぼそのまま対応します。この置きかえを行うものをアセンブラと呼びます。

名前が付いたぶん読めるようにはなりますが、命令の細かさは機械語のままです。足し算1回に何行も書くことになり、CPUの構造を知らないと書けません。CPUごとに違うという点も変わりません。

高級言語

機械の構造を知らなくても書けるように、人の考え方に近づけた言語です。高水準言語とも呼びます。C、Java、Python などがこれにあたります。

変わったのは細かさです。アセンブリ言語で何行も要った処理が1行で書けます。1行が機械語の何命令に化けるかは、書いた人には見えません。この見えなさと引き換えに、書きやすさと、機械が変わっても使い回せる性質を手に入れました。

翻訳のしかたは別の話

高級言語を機械語にする方法には、2通りあります。言語の段とは別の区分なので、混ぜないでください。

どちらの方式になるかを決めているのは、言語そのものではありません。 その言語を動かすソフトウェア——処理系と呼びます——の作りで決まります。

Pythonで見てみます。ふだん使われている処理系(CPython)は、1行ずつ解釈しながら動かします。いっぽう Nuitka という処理系を使うと、同じPythonのソースから実行ファイル(そのまま起動できる形のファイル)を作れます。Pythonを入れていない機械でも動かせます。

ただし、言語ごとに「ふつうはこちら」という慣習があります。 Python公式の用語集にも「Pythonはインタプリタ言語である」と書かれています。試験もこの慣習どおりの分類で出ますので、「Pythonはインタプリタ」で覚えて差し支えありません。

最近は、いったん中間言語という中くらいの形に翻訳し、それを実行時に機械語へ直す方式も広く使われています。Javaがこの形で、共通言語基盤も同じ考え方です。

何に使われているのか

いまアセンブリ言語を書く場面は、ほとんど残っていません。機器を直接動かす部分や、どうしても速度が要る数行に限られます。

それでも試験に残っているのは、高級言語の1行が最後に何になるのかを知っておくためです。どんな言語で書いても、動くときは機械語になっています。

試験ではこう出る

科目A(旧・午前)で出ます。いちばん多いのは、3つのうち1つを挙げて説明を選ばせる問題です。

見分けは、次の1行で足ります。

言語決め手になる表現
機械語CPUが直接実行できる/0と1の並び
アセンブリ言語機械語と1対1に対応する/アセンブラが変換する
高級言語機械の構造によらない/人の言葉に近い

次に多いのが、コンパイラとインタプリタの違いです。「まとめて翻訳してから実行」か「1行ずつ解釈しながら実行」かで決まります。

応用情報では、コンパイラの処理の流れ(字句解析・構文解析・意味解析・最適化・コード生成)まで問われます。字句解析はオートマトン、構文解析はBNFとつながっているので、まとめて押さえると効率がよくなります。

関連する用語

主記憶
CPUが直接読み書きする記憶。機械語の命令も、実行時はここに置かれている
補数
負の数を2進数で表す方法。機械語が引き算を足し算で片付けられるのは、この表し方による
BNF
言語の文法を記号で定義する書き方。高級言語の文法は、この形で決められている
構造化プログラミング
順次・選択・繰返しの3つだけで書く考え方。高級言語がその形を取り入れていった
共通言語基盤
複数の高級言語を1つの中間言語にそろえて動かす仕組み。翻訳を2段に分ける考え方

ミニクイズ

アセンブリ言語の説明として、最も適切なものはどれか。

正解は 1番:機械語の命令に名前を付けた言語で、命令がほぼ1対1で機械語に対応する

アセンブリ言語は、機械語の命令に ADD や MOV といった覚えやすい名前を付けたものです。名前を置きかえているだけなので、書いた1行が機械語の1命令にほぼそのまま対応します。この置きかえを行うのがアセンブラです。0と1の並びでそのまま実行できるのは機械語そのもの、機械の構造を知らずに書けるのは高級言語の説明です。1行ずつ解釈しながら実行するのはインタプリタという翻訳のやり方の話で、言語の段とは別の区分です。

間違えた用語の復習リストを見る →

この分野をまとめて解く → アルゴリズムとプログラミングのミニテスト(全44問)

最終更新:2026-10-09