ちょっと前に会社でフィッシュボウル*1やってFizzBuzz書いたときに,コマンドライン引数の取り方が全然わからなくて*2,まずそれをググってたらコマンドライン引数取れないレッテルを貼られてしまった.
しかたないので,Haskellのなら覚えているということを見せつけるためにHaskellでFizzBuzz書いた.
ちなみにotherwise
の後に=
を忘れててはまったこととかmod
とdiv
を勘違いして大変なことになったことはぼくだけの秘密だ.
めんどくさくてコマンドライン引数無いときとか数字以外が入力されたときの処理してないけど. それはさておき,こういう暗黙的な知識というか,言語を使う上での前提みたいなのを身につけるのってすごくハードル上がってると思う.
例えば,FizzBuzzを普段使っているObjective-Cで書こうと思うと,まあロジックは5分くらいで書けるし,コマンドライン引数の取り方もわかるけど,すぐにどうやってコンパイルするかって問題に辿りつく. Xcode使えばコマンドラインアプリを作れるし,まあそれ使ってもいいんだけど,FizzBuzzくらいのやつはやっぱターミナルとエディタだけでササっとやってしまいたい. けど,実際やろうと思うとClangのコンパイルオプションはなんだったとかいうことにぶつかってしまって,普通にCocoaのアプリ作ってるだけならClangのコンパイルオプションなんか知ってるはず無いし,Xcodeでコマンドラインアプリを作るっていう無様な姿を見せるか,Clangのコンパイルオプションをググるかどっちの十字架を選ぶかみたいな感じになる. というか普通のiOSプログラマはXcodeでコマンドラインアプリを作れることを知ってるのかということすら怪しいんじゃないだろうか.
同じようにRubyにしてもSinatraとかRailsの経験あってもshell scriptの代わりに使うとかしてないと,普通に読み書きはできてもコマンドライン引数の取り方知らないってことありうると思う. そんなこんなで何が言いたいかというと,そういう時に困らないというか恥をかかないように,基本的なところは環境に頼らず自分だけでできるように抑えるようにしておいたほうがいいと思ったそんな次第です.