Hello Worldの功罪

Hello Worldを出力するというプログラムがあります。カーニハンとリッチーの「プログラミング言語C」という本の、一番最初のサンプルプログラムとして取り上げられたものです。C言語が一般的なプログラミング言語と認識されるようになって以後に出されたプログラミング言語解説書の多くに、最も最初に提示すべきサンプルプログラム、という扱いで書かれることが多くなりました。

プログラミング言語を学ぶには、実際にプログラムを書いて動かしてみるのが一番であるというのは世の共通認識です。そしてどうせ動かすなら結果が見えるほうが良いのは言うまでもありません。というわけでHello Worldという文字列が表示され、かつそれだけしかしないプログラムは格好のサンプルだと認識されているわけです。

ただ、少なくともC言語を学ぶ場合の最初のサンプルプログラムが本当にHello Worldで良いのか、というと少し疑問があります。K&Rのサンプルは次のようなものです。

#include <stdio.h>
main()
{
	printf("Hello Wrold\n");
}
いくつか思いつくままに問題点(最初のサンプルプログラムという点から評価して)をあげると、 というところです。確かに止むを得ないといえる点も多いです。特にCは言語仕様で入出力機能を持たなかった、というのが効いています。でもストラなんとかさん(名前を覚えられない)のプログラミング言語C++になるともうだめです。cout << "Hello World" << endl;なんて評判の悪いオペレータオーバーロードを使っています(endlじゃなくて\nだったかも知れないですけど)。Javaなんかもそうですけど、何も無理にHello Worldにしなくても良いだろうと思うような言語は沢山あります。でもHello Worldなんですね。

そもそも入出力というのはかなり経験を積んだ人でも、スマートに書きづらい、どろどろした所です。その入出力の処理を最初のサンプルプログラムでやろうとするのが無理な話だとも言えます。じゃあどういうのが最初のサンプルプログラムとして適当なんだ、という問いに答えるのはとても難しいんですけれどもね。


目次  談話室  PoisonSoft