Cによるプログラミング入門1
Hello, world!

 みなさん、こんにちは。これから、C入門をはじめます。この入門ではプログラミングに関する基礎知識は仮定していません。ほかにもいろいろコメントがありますが、それはC入門目次を見てください。


 Cのバイブル「プログラミング言語C」(共立出版、石田晴久氏訳)で、著者のカーニハンとリッチーの大先生は

 新しいプログラミング言語を学ぶ唯一の道は、それでプログラムを書いてみることである。

とおっしゃっています。私はこのフレーズが大好きで、何度引用したかわかりません。まあ、そういうことなのです。
 そして、最初に紹介しているのは、超有名になったプログラム「hello, world」です。講義用に少し変形してありますが、それは以下のようなものです。

#include <stdio.h>

int main(void)
{
    printf("hello, world\n");
    return 0;
}

 ここで、文字はすべて半角英字であることに注意してください。\(円記号)は、もともとバックスラッシュですが、日本の多くの環境では、\(円記号)を使うのでそうします。

 プログラムとは、コンピュータに与える「命令書」のようなものです。上のプログラムの意味は、「画面にhello, worldと表示せよ」という意味です(詳しくは、次回に説明します。)
 しかし、実は、コンピュータが直接理解できるのは、0と1で書かれる(表される)命令(バイナリなどといいます)だけなのです。上のプログラムは、Cという言語を使って書いたもので、コンピュータがこれを直接理解することはできません。そのため、上のように書いたプログラムを、コンピュータがわかる言葉に翻訳する必要があるのです。

 なぜ、コンピュータへの命令を、最初から0と1で書かないのでしょうか。書けないことはないのです。しかし、かなり大変なのは想像できると思います。0と1だけなのですから。
 そこで、「コンピュータの言葉」(0と1、つまりバイナリ)と「普通の人間の言葉」(英語など)の中間のような言語を作り、まず、プログラマとよばれる人々が、その言語でプログラムを書き、それをコンピュータの言葉に翻訳することにしたのです。そのような言語は、プログラミング言語とよばれ、いろいろなものがあります。そして、ここでは、このCを取り上げることにしたのです。

 さて、上のようにプログラムをエディタで書いたら、それを適当な名前で保存します。ファイル名はなんでもよいのですが、最後に「.c」と付けることにします。これは拡張子とよばれるもので、「このファイルはCのプログラムだよ」と知らせるためのものです。ここでは、hello.cという名前にしましょう。
(Windowsのメモ帳やコマンドプロンプトの使い方は、C++入門付録1のはじめの方を参照してください。ここではC++プログラムを例にしていますが、Cでも同様です。また、コンパイラ(後述)に何を使っていてもかまいません。)
 次に、これをコンピュータの言葉に翻訳します。この作業は、コンパイルといいます。実は、コンパイルしてできあがるものは、そのままではまだ実行できず、リンクという作業で必要なデータをつなぎあわせ、実行可能ファイルにすることになっています。コンパイルをするソフトをコンパイラといい、リンクをするソフトをリンカといいます。
 この「コンパイルしてリンクする」という作業は、多くの環境では一発でできます。そのためかどうか、「コンパイルしてリンクする」を一言で「コンパイルする」という人が多いようです。厳密には、リンクという作業もあるのですが、日常会話では、簡単に「コンパイルする」でもよいでしょう。

 なお、Cなどで書いたプログラムは、実行可能ファイルを作る「もと」です。実行可能ファイルを実行可能プログラムということもあるので、これと区別するため、Cなどで書いたものを、ソース(「もと」という意味ですね)とかソースプログラムなどともいいます。

Fig.1 ソースプログラムを実行可能ファイルにする

 それでは、hello.cを、コンパイル・リンクしてみましょう。BorlandのC++ Compilerを使う場合は、コマンドプロンプトの窓(DOS窓)で

bcc32 hello.c

とします。MicrosoftのSDK(Microsoft .NET FrameworkのSDK)を使う場合は、

cl hello.c

です。UNIX系のOS/環境を使っていてgccなら、

gcc -o hello hello.c

としましょう。
 これで、hello.exeという名前の実行可能ファイルができます。(gccの場合は、実行可能ファイルを、hello.exeではなく、helloという名前にしました。)これらのコマンドは、コンパイラに引き続いてリンカも呼び出し、仕事をさせているのです。

 実行可能ファイルhello.exeを実行するには、コマンドプロンプトの窓で、

hello.exe

とします。gccで上記のようにコンパイル・リンクしたなら、

hello

とするか、それでうまくいかなければ、

./hello

で実行できると思います。

 以下にWindows XPで、Borland C++ Compilerを使った場合を示します。

Fig.2 BCCの場合

 実行結果は、「hello, world」の出力だけです。
 また、MicrosoftのSDKを使った場合は次のようになります。

Fig.3 MS .NET SDKの場合

 実行結果は、もちろん、同じく、「hello, world」の出力だけです。

 プログラムの説明は次回にまわします。お楽しみに。

課題1


C入門目次

後のページ