プログラミング講座トップ ひつじTOWN デジタルシープラーニング

ひつじのC言語入門への道 第1回 C言語あれこれ

■シンプルな構造のC言語

プログラミング言語はたくさんあります。
システム作りにあたって、何を使っていいのか迷うことがありますが、多くの場合は、システムの用途に応じて言語が自然と絞られます。
C言語は現在では、一般的なアプリケーションシステムの開発にはあまり使われなくなってきていますが、OS(オペレーションシステム)の開発や、ハードウェアの組み込みソフトの開発等でよく利用されており、縁の下の力持ちとして今も重要な言語です。

C言語は、1973年にAT&Tベル研究所のデニス・リッチー (Dennis M. Ritchie) 達が作ったプログラミング言語です。 「The Programming C」という著者(カーニハン&リッチー)で有名ですね。

C言語は、プログラミングの基本構造(分岐、判断、繰り返し、ジャンプ等)がシンプルに見えるので、プログラミング言語の勉強をC言語から始めるのは実はいい方法だと思っています。

例えば、JAVA言語を学ぶためには、プログラミングの基本構造を学習することに加えて、オブジェクト指向の概念も必要となり、また、swingなどのGUIやグラフィックの仕組みも同時に学ぶことになり、初心者にとっては、あれもこれもと学ぶべきことが多すぎますね。
図:プログラミング言語の歴史

■C言語のC?

Cとは実にシンプルな名前です。Cと言うからにはBとかDとかもあるかと、つい突っ込みたくなりますが、これが実はあるのですね^^;
リッチーは同じAT&Tベル研究所のケン・トンプソン (Ken Thompson) が開発したB言語を改良して、B言語よりも進んでいるという意味を込めてC言語と命名されたようです。ちなみにトンプソンとリッチーはUNIXの共同開発者でもあります。
では、Bの命名の意味は?と思いたくなりますがキリがないのでこの辺で。
D言語もあります。近年(2006?)漸くリリースされた、できたてほやほやの言語です。そのネーミングどおり、C言語と似ていますが、さらに、実用性、効率性を重視したもののようです。 出来たばかりの言語は実システムで使うには時間がかかるでしょう。 例えばJAVAという言語は1995年にSun Microsystem社からは発表されましたが、やはり普及するには10年近くかかっています。

■Hello world ?

C言語に限らずどのプログラミング言語でも、一番初めに目に触れ、作成する練習プログラムとして使われることが慣例になっています。そういう意味で世界一有名なプログラムとも言われます。
このプログラム自身は、コンピュータの画面に(正確には標準出力先に)Hello worldという文字を表示するだけの単純なプログラムです。
#include <stdio.h>
int main(void) {
printf("Hello, world!");
return 0;
}
生まれて初めてプログラムを学習する人にはこれはどのように見えるのか大変興味があります。筆者にも過去にそういう瞬間があったはずですが、あまりに昔なので、思い出せません。
見て直ぐ本を閉じる人も居るかも知れませんね^^; 学生であれば、なんだかとんでもない授業を履修することになったと後悔しているかもしれません^^;
筆者が生まれて初めてみた言語は、学生時代のFortranの授業を受けた時でした。最初の授業で先生が白板に書いた下記の記述に違和感を覚えたことを思い出します。

A=100
これは代入文といって、Aという変数に100という数値を代入する、というように読むことは後でわかりましたが、その時は、Aと100が等しい、それがどうした? というように思ったことを覚えています。このことがずっと尾を引いて、よくわからないまま終わりました^^;
これは特殊かもしれませんが、初心者はなんでもないような予想外のところが気になり、先に進めない、ということはありがちです。
本連載では、あたりまえのことをくどいぐらいに説明している箇所が多く出てきますが、このようなことを意識した結果です。

さて、この初心者用の初めの1歩が実はなかなかハードルが高いようです。
プログラムの内容の意味はともかく、まず一度動かしてみよう、ということで使われます。筆者もまたそのように説明しています。

もし、このプログラムの一字一句(include、stdio,int,main, void printf, return)を説明しはじめると、それだけで多くの時間がかかってしまい、学習者もまた消化不良を起すでしょう。なので、「論よりRUN」とばかりにまずはタイプして動かしてみよう、ということになります。
ですが、最初に挙げられるこの例題が、既に言語の基本構造の大半をあらわしており、そもそも奥の深いものなのです。


[←] はじめに | [↑] プログラミング講座トップへ | [→] 第2回へ