at posts/single.html

初めてのプログラミングに Hello, world は向いていない

id:gothedistanceさん経由で。

そういえば「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 を入れるだけでもすぐに試せるしね。

関連する日記