WisdomSoft - for your serial experiences.

1.2 プログラミング言語 C

CPU が認識できる機械語と C 言語などテキストで表現可能な高水準言語の関係について説明します。

1.2.1 機械語と高水準言語

CPU が直接認識できるのは機械語で書かれたプログラムです。機械語は純粋なバイナリデータなので、その気になれば、バイナリエディタだけでプログラミングを行うことができます。ところが数字だけでは人間には読み書きが難しいため、機械語の数字をアルファベットに置き換えたアセンブリ言語というものもあります。

しかし、現代において機械語やアセンブリ言語を使うプログラマはほとんどいません。これらを使った開発は、あまりにも非効率的なのです。機械語やアセンブリ言語を記述する場合、他のプログラミング言語では必要のない計算や設計が必要になり、管理が極めて難しくなります。

そこで、数字や記号だけのわかりにくいプログラミングよりも、より人間が理解しやすい言葉でソフトウェアを開発するために生まれたのがプログラミング言語です。 通常、機械語やアセンブリ言語のようなコンピュータ側の言語を低水準プログラミング言語と呼び、人間の言葉に近い言語を高水準プログラミング言語と呼びます。 C 言語やこのほかの有名な多くの言語 BASIC や Java も高水準言語に属します。

しかし、どのような形であれ、最終的に機械語に翻訳しなければ CPU はプログラムを実行することができません。 高水準プログラミング言語やアセンブリ言語で記述されたテキストを原始プログラム(またはソースプログラム)と呼び、これを機械語に翻訳したコードを目的プログラム(またはオブジェクトプログラム)と呼びます。

機械語への翻訳にはいくつかのアプローチがあり、C 言語は原始プログラムを一度に目的プログラムに変換した後、これを機械語として実行するという方法を用いています。

一方、BASIC やスクリプト言語などは、原始プログラムを1文ごとに読み込み、これを解析して実行するという手法を採用しています。 この場合、テキストデータを直接実行することができるため、対話的な開発を行える利点がありますが、実行には文を逐次解析する必要があるため、速度が大幅に低下するということと、原始プログラムを解析して実行するためのインタプリタと呼ばれるプログラムが必要になるというデメリットもあります。

C 言語は最終的に機械語に変換されるため、最適な形で実行することができます。そのため、実行速度が高速であるというメリットがありますが、一度コンパイルしなければならないということや、コンパイル後の実行ファイルは特定のシステムに依存するため、ネットワークに弱いという弱点をもちます。しかし、現在使われている多くのプログラミング言語は C 言語をベースにしているものが多く、コンピュータの本質的な理解を得るには C 言語の学習が必要不可欠となっています。また C 言語は機械語に近い高水準言語なので、高速なプログラムを実現することが可能であり、システムの性能を発揮させることができます。

また、C 言語を発展させたプログラミング言語で C++ (シープラスプラス)と呼ばれる言語があります。これは C 言語にオブジェクト指向と呼ばれる概念を導入したもので、巨大で柔軟なシステムを構築する時に適しています。C++ は多くの開発現場で採用されていますが、これも C 言語が基盤となっています。

本書で C 言語を学ぶことによって、C 言語から派生した多くのプログラミング言語の学習の道も開けることでしょう。現在では様々な技術やプログラミング言語が次々と登場していますが、その多くは C 言語の影響を受けています。C 言語を知ることは、上級プログラマへの第一歩ともなるのです。