cf. 100から1まで表示するコードすら書けないプログラマ – 新・日々録 by TRASH BOX@Eel
詳しくはリンク先を読んでもらうとして、100から1まで表示するだけのプログラムを10分たっても書けないプログラマが14%もいたという調査結果があるんだそうだ。話の雰囲気からして職業プログラマの話だろうに、FizzBuzz の話もそうだけど、こんな簡単なプログラムも書けなくて普段どうやって仕事してるんだろう?
それはともかくとして、リンク先にはいくつかの言語で書いたコードがあるけど、JavaScript がないので書いてみた。そしたら、一発じゃできなかったよ…orz。というのが今日のオチ。
以下、恥を晒しておく。
最初に書いたのがこれ。
for var i = 100, i < 0, i-- { console.log(i); }
実行してみると:
takatoh@nightschool $ node countdown.js /home/takatoh/w/nodejs/countdown.js:1 (function (exports, require, module, __filename, __dirname) { for var i = 100, ^^^ SyntaxError: Unexpected token var at Module._compile (module.js:439:25) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:902:3
ああ、for のあとには括弧がいるんだっけ。
for (var i = 100, i < 0, i--) { console.log(i); }
今度はいいだろう。
takatoh@nightschool $ node countdown2.js /home/takatoh/w/nodejs/countdown2.js:1 orts, require, module, __filename, __dirname) { for (var i = 100, i > 0, i-- ) ^ SyntaxError: Unexpected token > at Module._compile (module.js:439:25) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:902:3
おおい、どういうこった。
眺めてもわからないので Google 先生に聞くことに。そしたら、for の初期値とか終了条件とかはカンマじゃなくてセミコロンで区切るんだった。ああ、まだ身についてないな。というか、普段書いてる Ruby やら Python じゃこういう for ループ書かないからなあ(言い訳)。
というわけで、最終的にはこれで正解。
for (var i = 100; i < 0; i--) { console.log(i); }