C言語ってなんだろう?

プログラミング言語

実は、われわれがコンピュータ上で、様々なアプリを楽しむことが出来るのは、コンピュータ言語と言われる言語のおかげなのです。これは、コンピュータが理解できる言語で、この言語を用いて、コンピュータに様々な処理を行わせることをプログラミングと言います。アプリの製作者は、その言語を用いて、コンピュータ上でアプリケーションをはじめとする、様々なソフトを作ることが出来るのです。

C言語

実はこのコンピュータ言語、実にたくさんの種類があるのです。(表0-1参照)その中でも、C言語は、現在現役で使われている主要なプログラミング言語のなかでも、最も有名で、古い言語の一つなのです。

表0-1:主要なコンピュータ言語一覧
言語名 特徴
C 現在用いられている主流の言語の中では最も古い言語。多くの言語が、C言語をベースに作られている。
C++ C言語を更に拡張した言語。オブジェクト指向といった考え方に対応。
Java C/C++をベースにして、SunMicrosystemsによって開発された、Androidなどで用いられている言語。
C# Microsoft社がJavaなどをベースに独自に開発した言語。
Objective-C Apple社がC言語を独自に拡張した言語。iPhoneやiPadのアプリ開発に用いられる。

ここに出ている言語は、ごく一部で、現在は実にたくさんのコンピュータ言語が存在します。ただ、この表を見ても判る通り、多くの言語は、C言語をベースに作られています。
そのため、C言語を学ぶということは、これらの言語の学習をスムーズにしてくれるという利点があるのです。

コンピュータ言語の役割

マシン語と高級言語

では、そもそもコンピュータ言語とは何なのでしょう?私たちが、日常何気なく使っているコンピュータですが、実はそのままでは何の役にも立ちません。コンピュータを動かすには、コンピュータにわかる形で命令をしてあげる必要があるのです。

ただ、問題は、コンピュータが理解できるのは、マシン語(機械語)と呼ばれる、人間にしてみれば数値の羅列にしか見えない、きわめて判りづらい言語だということです。この言語を理解するのは不可能ではありませんが大変困難なことです。

そこで考え出されたのが、高級言語という、人間にとって比較的理解し易い文章や記号で構成されている言語を作ることでした。C言語は、そんな高級言語の一つなのです。

コンパイラとインタープリタ

しかし、高級言語はそのままではコンピュータが理解することが出来ません。そこで、これを機械語に変換する必要があるのですが、その方式には大きく分けて、コンパイラと呼ばれるものと、インタープリタと呼ばれるものがあります。

コンパイラとは、高級言語で書かれたプログラム(ソースコードと呼びます)を、すべて機械語に変換し、変換後そのプログラムを動かすという方式です。それに対し、インタープリタは、ソースコードを翻訳しながら実行するという構造になっています。(図0-1)

デル株式会社
図0-1.コンパイラとインタープリタの違い
コンパイラとインタープリタの違い

一般に、コンパイラーは、コンパイル作業に時間がかかるものの、全てが一括返還されるため実行速度が速く、インタープリターは、コンパイル作業は要らないものの、変換作業を行いながらの実行になるため、速度はコンパイラーに劣るといわれています。 しかし、近年の技術の進歩により、これらの違いはあまりなくなってきています。

このうち、C言語は一般に前者のコンパイラを用いて機械語に変換する方式が一般的です。

C言語ってどんな言語なの?

C言語の成り立ち

では、そんなC言語ですが、一体どんな特徴があるのでしょうか?

C言語は、1972年、当時アメリカのAT&Tベル研究所のデニス・リッチーらのプロジェクトチームによって作られた言語です。
彼らは当時、後にUNIXと呼ばれるようになるオペレーティングシステムを開発していました。オペレーティングシステムとは、 コンピュータのシステムの基盤になるソフトウェアのことです。コンピュータを自動車にたとえるのならば、OSは、その運転席といったところでしょうか。

C言語とコンピュータ技術の発展

もともとはUNIXを作るために作られたC言語でしたが、その後、パーソナルコンピュータが普及するようになると、その使い易さから爆発的に普及し、後にコンピュータの標準的なプログラミング言語になっていくのです。そのため、冒頭にも述べたとおり、現在ある様々なプログラミング言語はC言語を母体にしたものがほとんどです。

その後、多くの言語が発表されましたが(表0-2.参照)ほとんどの言語は、C言語の知識があれば、比較的スムーズに学習をすることが出来るでしょう。そういったこともあり、プログラミング言語の手始めとして、C言語を学ぶということには大きな意味があるといえるでしょう。

表0-2:コンピュータ言語の発展史
出来事
1946年 世界初の本格的なコンピュータ、ENIAC(エニアック)登場。主に弾道計算目的で使用された。
1956年 科学技術計算言語FORTRAN(フォートラン)が開発される。現在も使用されている最古の言語の一つ。
1960年 事務計算用プログラミング言語COBOL(コボル)、人工知能用プログラミング言語LISP(リスプ)が開発される。
1965年 パソコンの普及初期に、主要な言語として用いられた初心者用プログラミング言語BASIC(ベーシック)が開発される。
1971年 インテルによって世界初のCPUマイクロプロセッサーi4004が開発される。
1972年 C言語が開発される。
1975年 ビル・ゲイツ、小型の個人用コンピュータ向けのBASIC言語を開発。マイクロソフトの礎を作る。
1976年 スティーブ・ジョブズ、スティーブ・ウォズニアック、初の本格的パソコン、APPLIE I(アップル・ワン)を作る。
1981年 IBM、現在のパソコンの原型であるIBM-PCを開発。
マイクロソフト、パソコン向けの初の本格的OSMS-DOS(エムエス・ドス)を作る。
1983年 C言語の上位互換言語であるC++(シー・プラス・プラス)言語が発表される。
1984年 アップル社、初代のマッキントッシュを発売。
1985年 マイクロソフト社、初代のウィンドウズである、Windows 1.0を発売。
1989年 ティム・バーナーズ・リーによって、WWW(World Wide Web:ワールド・ワイド・ウェブ)が開発される。
1995年 Windows95発売。Sun Microsystems社、Java言語を発表。
2000年 マイクロソフト社、C#言語を発表。