初めてのプログラミングに Hello, world は向いていない
そういえば「Hello, world」じゃなくて「Hello World」って書いてた。 まぁ、それは良くて。
プログラミング経験者が新しい言語を学ぶ場合に「最初のプログラム」に Hello, world を使うのはいいけど、未経験者が「最初のプログラミング」に使うのには向いていないと思う。 だって、それってプログラミングしなくてもできちゃうから。
コンソールの場合はエディタで
Hello, world
と書いて、
$ cat hello.txt
とすれば「Hello, world」が表示される。
Web系の場合は
<html><body>Hello, world</body></html>
と書いてWebブラウザで開けばいい。
なのに、なんでわざわざ
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } }
とよく分からないおまじないをいっぱい書いて、
$ javac HelloWorld.java $ java HelloWorld
と打たないといけないのか。
スーパーマリオギャラクシーで言うと、最初のステージからいきなりヒップドロップ(ジャンプ中にZボタン)やスター集め(リモコンでスターをポインティング)を要求されているような感じ。 ドラゴンクエストなら、最初から馬車の入れ替えをしなきゃいけない感じ。
まぁ、娯楽のゲームと一緒にするのはどうかと思うけど、でも最初の敷居は低い方がいいよね。 相手次第かもしれない。コンピュータに向いている人や、モチベーションが高い人や、好奇心の強い人ならなんとも無いだろうし。
最初のプログラムとして ”Hello, world.” は適切か?で書かれている「足し算ゲーム」だと、ちょっと詰め込みすぎな気がするので、
puts 4 * 5 + 12
みたいな簡単な四則演算がいいんじゃないかと思ってる。これならエディタの表示だけでは答えを出せないからね。
追記
結城さんからコメントをいただいた。
そういう「きわめて自明」なところからスタートしたほうがスムーズに進める人もいるように私は思っています。
「きわめて自明」なところからスタートするけれど、つまらないと思わずに先を読んでもらえるか(興味を持って先に進んでもらえるか)が入門書(教育者)の腕の見せ所(後略)
確かに Hello, world を出力するより 4 * 5 + 12 を出力する方がプログラムは複雑になるので、初めての人には辛いのかも。 僕の場合はマンツーマンで話す機会くらいしかないので、相手に合わせて興味の持たせ方を考えるくらいかなぁ。
ちょっと話がそれるけど、これから就職して会社で Java を使う予定でプログラミングが未経験な人は、時間に余裕があるのであれば、 Perl, Ruby, JavaScript, PHP なんかの LL 言語でプログラムに触れておくといいかもしれない。 もちろん興味があればいきなり Java をやってもいいけど、なんかとっつきにくそうと思えるなら先に LL をやったほうが入りやすいと思う。クラスとかを覚えるのは慣れてからでも OK だし。 JavaScript なら FireFox に FireBug を入れるだけでもすぐに試せるしね。