第一話「Hello World〜そこからすべてが始まった〜 」

 ある日、突然コンピュータ・サイエンスを大学院で勉強することになった。
 それまでの私は、仕事でワープロと表計算ソフトを使用し、自宅でメールとインターネットを利用するといった、簡単に言えば、どこにでもいるような一ユーザーだった。そんな自分が、奇跡的に大学院の入学試験に合格し、工学研究科の大学院に入学する?という本人も予想しえなかった展開が、ある日突然嵐のように始まった。
 自分以外の人がとても優秀に見え、どうしてこんなところに来てしまったのかという気持ちを抱いたまま、入学ガイダンスに臨んだ。運営担当責任者のK教授のスピーチと講師の先生方の挨拶があり、事務室の方から施設利用の説明が終わった時点で、学生の一人から質問が出た。「寝袋を持ち込んで、徹夜で研究しても当然いいですよね?」という問いかけに、(ひょえー。すごいことになってきた)と内心私は驚いた。そういうのが、この世界の常識なのかーと自分の認識の甘さを悟った。帰り道、桜が咲き誇る、お堀端の道を歩きながら、すっかり場違いな場所に来てしまった現実(実は文系出身者の私)に、気分はすっかりグレーになった。
 一番の不安の種は、プログラミングがすぐに修得できるのだろうかということだった。自慢ではないが、生まれてこの方、一度もプログラムなど組んだことはない。入試の面接でも、試験官の方から「プログラム経験ゼロだとかなり厳しいと思うよ」とアドバイスされていたので、(だのに何故?合格したのだろう。謎である)ある程度は予想していた。
 予想通りに?壁はすぐに出現した。しかも、その壁は恐ろしく高かった。画像処理の授業の初日、「では、先ほど説明したとおり、SUN(UNIX) を立ち上げて、emacsで次のコマンドを打ち込んで、%gccファイル名.cでコンパイルして、画像を動かしてみてください」と突然言われたのである。一体何が起こったのか、さっぱり理解できなくて、すでにグレーだった気分はもはや第1週目にして、お先真っ暗になった。
 これは、C言語をマスターしている人にとっては、ごく簡単な課題であることが後で判明したのであるが、そのときの私には“使用言語が異なるために話しが見えていない外国人”であった。日常会話すら成り立たない状況は、さながら異国の地にたった 1人で放り出された人の感覚に似ていた。でも、そこからすべては始まったのである。


#include <stdio.h>
main ( ) {
printf ( "Hello World \n");
}


 上記は、その日後の夜に行なわれたC言語プログラミング補講において、一番最初に習ったプログラムである。教えに来てくれた院生のOさんは、初心者の私にわかるように丁寧に教えてくれた。最初は深く考えずに、おまじないだと思って#include<stdio.h>と入力してくださいと言われて、そういうものかと思った。自転車の乗り方とか泳ぐようになることと同じで、身体に覚えさせるものなのかもしれない。(これはかなり個人的見解)

<プログラムを実行するための手順>
 @ UNIX(注1)でツール->端末エミュレータを選択し、emacsを立ち上げる。(%emacs&と打ち込む)
 A このエディタ(注2)を利用してソースプログラム(注3)を入力する。
 B emacsでCtrl-x, Ctrl-sで適当な名前を付けて(例えば、ex1.c)保存する。
 C % gcc ex1.c と打ち込み、コンパイル(注4)を実行するためにリターンキーを打つ。
 D エラーメッセージが特になければ、% ./a.out と打ち込み、実行させる。 この結果、以下のようになればOK。


%gcc ex1 .c
% ./a.out.
Hello World
%

 “Hello World”と表示させるプログラムは、今から20年以上前に出版された本“The C programming language ”の著者Brian W. Kernighan, Dennis M. Ritchieによれば「最初に書くべきプログラムはどのような言語でも同じである」そうである。そういわれてみれば、C言語でも、その後に学習したJavaでも、やっぱり最初は “Hello Worldだった。
 かくして、“Hello World”の洗礼を受けて、私はコンピュータ・サイエンスの入り口の扉を無理矢理に押し開けたのである。こんにちは、新しい世界!といったところだろうか。

(注1)UNIX
オペレーティングシステムのひとつで、おもにワークステーション用に大学や研究機関などで利用されている。大勢のユーザーが同時に利用可能で(=マルチユーザー)、複数のプログラムを同時に動作させることができ(=マルチタスク)、セキュリティやネットワークに強いと言った特徴を持つ。

(注2)エディタ
Windowsの付属標準ソフト「メモ帳」やシェアウェアの「秀丸」などがある。エディタ(editor)とは、プログラムやデータをコンピュータの補助記憶装置(ハードディスクやフロッピーディスクなど)二格納し、編集・修正するためのプログラム。UNIXではviエディタが有名。

(注3)ソースプログラム
プログラムの源(ソース)で、各プログラミングの言語のルールに則って書かれた命令文という。単にソースと呼ぶこともある。

(注4)コンパイル
ソースプログラムをコンピュータに理解できる機械語に翻訳する作業のことをいう。翻訳するのに使用するソフトをコンパイラと呼ぶ。

“The C progtamming language” / Brian W. Kernighan, Dennis M. Ritchie 2nd ed Enblewood Cliffs, N.j. ; Tokyo : Prentice Hall , 1988

(2001年12月)