えんえん延期している『ふつうの Haskell プログラミング』ですが、 3/23 初校締め切りで 5 月末出版てことになりました。 今回はいままでと違ってかなり深刻な締め切りなので、 ほぼ間違いなくこれで出ます、出します、出させます!
次にレビューについて。
この日程でふつりなクラスのレビューをやってしまうと明らかに間に合わないので、 今回は規模を思いきり縮小しようと思います。最大でも 10 名以下な感じで。 高橋さんには「レビュー合宿」とか言われたのですが、 想像してみると恐ろしい図が浮かんできたので全力で回避します。
レビューは 300KB 中 200KB 確保したところで始めようと思っているのですが、 なんかまだ 166KB です。遅いです。実にもどかしい。
もしレビューしてもいいよーという方がいらっしゃいましたら、 今日の日記にツッコミ入れといてもらえれば優先的にメールします。 今回の対象読者は、 「なんでもいいからプログラミング言語を一つ理解していて Haskell がどんな言語か興味をもっている人」です。 ただし本文中で他の言語の例を出すときは Java を使います。 また欲を言えば、言語を三つも四つもマスターしてるような猛者よりは Java しか知らねーという人のほうがありがたいです。
あと、なにぶんこの日記のことなのでいちおう注意しておきますが、 「なんでもいいからプログラミング言語を一つ」 と言ったからと言って「Haskell だけですが」とか 「OCaml だけですが」とか「SPARC アセンブラだけですが」 とかいうネタは勘弁してください。
(19:43)
(追記 1) 重要なことを書き忘れていました。例によって報酬はお出しできません。 できれば献本くらいはしたいと思っていますが、とりあえず当てにはしないでください。
(追記 2) もう一つ追加。期間は来週あたりから 3/23 までです。 ただし何か重大な問題があれば初校 (五月?) で修正します。
レビューって何するんだ、というか、 わたしがなぜレビューしてもらいたがっているか、 という話をちょっとしておきます。 前にレビューについて書くと言ったまま書いてないような気がするし。
まず、間違いを減らすため「ではありません」。 今回は特に山下さんに監修していただいているので、 初校段階で一回読んでもらえれば RHG のときみたいな どーしょもないミスは起こらないだろうと考えてます。
それじゃ RHG も監修についてもらったのになぜ酷かったかと言えば、 それは実に情けない話で、わたしが締め切りをオーバーしすぎたために まつもとさんにちゃんと読んでもらう時間がなかったのです。 もう一ヶ月あれば自分でも読み直せたはずで、かなりマシになったでしょうが、 精神的にも金銭的にも、もう一ヶ月やるというのは無理な選択肢だったと考えています。 なので、あの時期に書くという前提では、RHG はあれが限界でしょう。
まあ RHG は置いときます。
で、間違いを減らすためではないとすれば レビューは何のためにやっているかというと、 具体的な読者像を知りたいからです。 読者像がわからないと本は書けません。一般化してしまうのがまずければ、 わたしの書きかたでは、読者像がわからないと本は書けません。
読者像がないと書けないのですから、 たとえレビューをやらないとしても読者像は必要です。 その場合は想像の読者をベースに文章を書くことになります。 例えば「ふつーの Java プログラマなら高階の関数なんて知らんだろう」 と想像できるので、高階の関数はしっかり説明するわけです。 あるいは「さすがにイテレータくらいは知ってるだろう、 むしろ知っててくださいお願いします」と考えて、 他の概念を説明するためにイテレータを使うわけです。
しかしあくまでその読者像は想像にすぎないので、 実際にはもっとしょっぱい現実があり 「はぁ、イテレータ? なにそれ」 な Java プログラマがたくさんいるかもしれません。 そういうミスマッチを減らすためには 現実の読者像を見せてもらわなきゃいかんわけです。
もっとも、レビューをしてもそのミスマッチがうまく解消できるとは限りません。 例えばこの日記でレビュアーを募集してしまうと Rubyist ばっかり 集まってしまって、Ruby にある概念を使うととても簡単に話が通じてしまうとか。 しかしそれと同時に「レビュアーはみんな Rubyist だ」という情報があれば、 その偏りも多少は差し引いて見られるでしょう。 レビューの最初にバックグラウンドなんかを聞くのはそれが理由です (とわたしは解釈しています)。
以上を踏まえて、レビューで何をしてもらいたいかという話をします。
レビューでは、できるだけ率直に感想を聞かせてほしいと考えています。 難しかったところに限らず、興味深かったところとか、 ここの話はすでに知っていたのでつまらんとか、 そういう反応はどれも役に立ちます。
例えば「ここはおもしろかった」という反応があった場合は、 そこに関係する話題をさらに追加するかもしれません。 あるいはページ制限で量を減らさなければならないときにも 優先して残すようにするかもしれません。
「ここはすでに知っていた」という反応が多ければ、 (レビュアー層が偏っている危険を考慮して) 完全に消さないまでも、 話を簡略化するかもしれません。
また「ここがわからない」という反応があれば、当然そこには手を加えます。 わからなかった理由を書いてもらってもよいですが、 読者が自分で考えた理由をそのまま信用することはまずありません。 自分で考えた理由というのは外れることが多いからです。 したがって、オープンソースソフトウェアの開発なんかのバグ報告とは違って、 とりあえず結果 (わからないという事実) を報告してもらうのが重要です。
したがって、レビューをするにあたって特殊な技量は必要ありません。 対象読者にあてはまるかたであればどなたでも歓迎します。
(20:05)
Java なんてもう忘れてるがな。 そもそも JDK 自体入れてなかったりする。 Linux/AMD64 より Windows のほうが楽そうだからサブマシンに入れよう。
stringって書いてコンパイルエラー食らった。 小文字の string は C# だったか……。
まだだめか。Hello, World! すら動かないということは…… $CLASSPATH 設定すんの忘れてた。
まだだめか。……そうか、パス区切りがスラッシュになってるからだな。 java が Cygwin DLL リンクしてるはずがない。
まだだめかー! $CLASSPATH が変な値になる。どうしてだ。 ……わかった。"\\r" が CR になってる。"\\\\r" にして解決。
ありがちな罠に全部はまってしまった。
でもって何をやるかと言えば、たらいまわし関数のベンチマーク。 おおっ、なんかわりと速いぞ! (24, 12, 0) だとほとんど時間がかからない。 もうちょっと増やして (48, 24, 1) にして……みたら今度はいつまでたっても戻ってこねー! (20, 10, 5) だと Pentium 4 2.4GHz で 31 秒弱。まあこれでいいいや。
続いて GHC ……も入ってなかった。GHC 6.4.1 を入れる。
~/c/stdhaskell/src % time java Tarai 20 java Tarai 0.03s user 0.01s system 0% cpu 30.969 total ~/c/stdhaskell/src % time ./tarai.exe 20 ./tarai.exe 0.01s user 0.01s system 71% cpu 0.042 total
あいかわらず GHC だと速ぇー。1000 倍速かあ。
(00:06)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
レビューに興味があります。
同じくレビューに興味があります。
..と勢いで書いてしまいましたが、もしかしたら別件でいろいろバタバタしている時期かもしれません。とりあえず保留...すみません。
レビューしたいです。PerlとJavaは知っています。Haskellは自分で型定義をするのはちょっと無理、というレベルです。率直に感想を書くのは得意です。日本語を読むのは速いです。よろしくお願いします。
同じくレビューに興味があります。
レビューに興味ありです。
Cは人並みに使えると思います。Javaは積極的には使っていませんが、コードを読む分には多分問題ないです。スクリプティング言語はメジャーなところはある程度は組めます。Haskellは昨年チャレンジしましたが挫折しました。
はじめまして。レビューに興味があります。PerlとPHPはまあまあ知っています。Haskellに関しては`Yet Another Haskell Tutorial'を読みましたが、後半よく分からなかったので、コードを書いたことは1行もありません。
レビューに興味があります。実業務で Java を使っています。Haskell は「やさしい Haskell 入門」のモナドで挫折しました。日本語を読むのは遅いです。意見は直球過ぎて争いを呼ぶことがあります。よろしくお願いします。
レビューさせてください。
読める言語はC, Java, Lisp等。
Haskellで書いたものは最長で200行くらい。
Rubyはほとんど経験がないのでご安心(?)を。
レビューに興味があります。学生の身ですが、よろしくおねがいします。
メールアドレスを忘れてました。。。
レビュー興味あります。
普段仕事では、C使ってます。
いちおうSchemeで遊んだりしてます。
たくさんの応募ありがとうございました。
ここまでで受け付けを終わります。