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

ひつじのC言語入門への道 第3回 Hello Worldプログラムが教えること(1)


Hello worldプログラムはいろんなことを教えてくれます。
Hello worldプログラムとは、C言語に限らず、プログラミング言語の入門書や解説書の最初に、一番初めに作成するサンプルプログラムとして取り上げられています。
このプログラム自身は、画面に(正確には標準出力先に)Hello worldという文字を表示するだけの単純なプログラムです。 
どの言語の入門書にもそのプログラムから始まっている点は面白いところです。もともとはブライアン・カーニハンとデニス・リッチーのC言語の言語仕様を記述した著書「プログラミング言語C」(The C Programming Language)が最初で、その後それが入門書の作法のようになったようです。
初めて見る人でもなんとなくわかる程度の単純なプログラムですが、実は非常に大事な意味を持ちます。

■いろんなHello world

代表的な言語のHello worldプログラム例をいくつかを紹介します。

・C言語

#include <stdio.h>
int main(void) {
printf("Hello, world!");
return 0;
}
本書のテーマであるC言語での例です。

・C++

#include <iostream>
using namespace std;

int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
C++です。C言語と全体の感じは似てますね。

・JAVA

public class Hello {
int main() {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
今や主流のJAVAです。オブジェクト指向言語といわれており、クラス(class)の宣言が見られます。
次に伝統的な言語FortranとCobolの例を挙げておきます。

・Fortran

WRITE(*,10)
10 FORMAT('Hello, World!')
STOP
END

・Cobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.

ENVIRONMENT DIVISION.
PROCEDURE DIVISION.
DISPLAY "Hello, world!".
STOP RUN.
最後に筆者の好きな言語の1つであるLispの例を挙げます。

・Lisp

(format t "Hello world!~%")
このように各々の言語に特徴があります。

■Hello world プログラムを作る準備

この程度ならまずは自分でもかけそうだと、コンピュータの前に座って、まず何をどうしたらいいのか、はたと戸惑うことでしょう。この単純なHello worldプログラムを作ってみる前にしないといけないことがあります。
  まず、プログラムを作成するために次のような準備が必要です。

■エディタが必要です。

プログラムを作成したり編集したりするエディタが必要です。wordやexcel等で作成したりはしません。出来ないことはありませんが・・・
unixコンピュータならviやemacs等、windowsならwordpadやメモ帳等が一般的です。eclipse等の高度な開発環境を使う場合もあります。
もしかすると、そのエディタの使い方で戸惑うかもしれません。 運悪くviエディタしかなく、あなたがそれを使うのが初めてだったとすると前述のC言語の5行のHello worldプログラムをタイプするのに数時間かかるかもしれません^^;
筆者はemacs派だったので、unix機ではemacs(あるいはmule)を使います。PCではメモ帳かwordpadを使います。

■コンパイラが必要です。

エディタで作成したプログラム(ソースプログラムと呼ぶ)はそのままではまだ動きません。
このプログラムをコンピュータが理解出来る命令に変換する作業が必要です。その作業のことをコンパイルと呼び、それを行うプログラムをコンパイラと呼びます。

大学での実習では、使っているコンピュータがSUNのUNIIX機(OSはSolaris)で、gcc(ジーシーシー)というコンパイラを使っています。この実習機にはSun Microsystemsが提供するCCというCコンパイラもあるのですが、なんとなくgccを使っています^^;

■コンパイルしてみよう!

コンパイラが入手でき、エディタで前述のHello worldプログラムを作成することが出来たら、おっとその前に、そのときに作ったプログラムはxxx.cと言う風に拡張子にcをつけないといけません。コンパイラはこの拡張子で、C言語のソースプログラムだと認識します。いろいろ覚えないといけないことがありますね^^; で、早速コンパイルしてみましょう。 コンパイルの方法やいろんなオプション設定があり多様ですが、もっとも単純な方法を以下に示します。 
> gcc hello.c -o hoge  ← hello.cをコンパイルしてhogeと言う名前でプログラムを作成する
>               ← 正しい場合は何のメッセージもでない
図:コンパイル

■プログラムを実行してみよう!

コンパイルして出来た実行ファイル名(この場合はhoge)をタイプしてリターンキー
>hoge

■ちなみにhogeとは?

あるとき、学生から「hogeというのはどういう意味ですか?」と尋ねられて困ったことがありました。 特に意識せずに慣例的に使っていたものなので、あらためて聞かれて説明に窮しました^^;
後日、そういえば、どうしてhogeとだろうと思い調べたところ、
「メタ構文変数と言われているもので、(もう無理^^;) 日本ではhoge,puyo、米国ではfoo,barが使われる、云々かんぬん」
プログラムの解説をする時、プログラムの名前や変数の名前で困ることがあります。aaaとかbbbとかでその場を凌いだりしますが、aaaに何か意味があるのか、と聞かれると叉困ってしまいます。 「特に意味が無いよ」というときにhogeとかfooとか使います。
叉昔話で恐縮ですが、あるソフトウェアを開発した際に、お客さんからの要望で、間合せ版の導入マニュアルを短期間(1週間程度)で作らないといけないことがありました。画面のショットをとったり、コマンドの説明を入れたりしてるうちに、段々飽きてきて、hog
ehoge(当時はこのように繰り返すのが普通だったように思う)ではなくて、guriguriとかpuripuriとかあちこちに妙な変数名やコマンド名を使いました。
後日、お客さんから「相当急いで作ったみたいですね。」と言われました^^;


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