プログラミングの魔導書Vol.2 最遅レビュー

今年も最遅レビュー達成なるか!?

まず何をもって最遅レビューが決まるかというと当然
http://longgate.co.jp/books/grimoire-vol2.html
の「書籍版予約締め切り」を基準にするものです。

実は本日、10月4日(火)がまさにその予約締め切りなのです。

受注生産の形態をとっているため、書籍版に関しては予約でのご注文のみとなりますのでご注意ください。

PDF版は予約期間が過ぎた後でもご購入いただけます。

予約期間は2011/10/04(火)までです。
http://longgate.co.jp/books/grimoire-vol2.html の お知らせ より

ここより後は、(他の人と間違いなく被るしぼくが書いても意味が無いC++の部分は避けつつの)章毎の低レベルレビュー(皆様大変申し訳ありません)で、真剣に時間の無駄ですから、特に書籍版が購入したい方は先に予約を済ませてしまいましょう。

「Dave Abrahamsへのインタビュー」

皆さんを混乱させるDSELとEDSLの違い(というか同じさ)について書かれた,ぼくにとってはじめての文章でした。

それと,C++と異なる文脈で既に話題には成りましたが
http://bartoszmilewski.wordpress.com/2011/07/11/monads-in-c/
これを読んでみましょう皆さん

「風とF#とメビウスの輪

F#の機能的な話も書いています.
本ブログを何故か読んでしまう皆さんは,計算を扱うのは良いけど,計算する(実行したりする)して黒い画面を値で白くしたりするのはどうでも良い,という考えだと思うのですが,そう言った人間向けにも楽しいものです.

特に,@...@を用いた型情報付きparse treeの取得と,builderの部分を読むと,実行しない派の人にも面白い筈です.

寧ろ,OCaml使ってますし一々F#なんて…という方々や能動的に摂取しようと思わなかった方々が,受動的に摂取させられると良いのではないでしょうか.

ぼくは正に後者です.

D言語の設計と進化とか」

type qualifier transitivityが面白かったです.
良い加減D言語パーフェクトガイド

D言語パーフェクトガイド―Windows Linux FreeBSD対応

D言語パーフェクトガイド―Windows Linux FreeBSD対応

から知識が更新されない皆さんは、一度読んでみると良いのではないでしょうか?

しかしどう考えてもD言語はマイナーではもはや無くなってると思うのですけどね…。
むしろぼくの中では既に企業で使われてる言語って感じなのですが。

「The Door To Dependent Types」

もう2年程前の話になりますが,(ネタ的な意味で)C++で定理の証明をしよう! という話が,twitter上の数人の間で,わずかな期間盛り上がった(とぼくは記憶しているのですが)ことがあります.

http://www.kmonos.net/wlog/102.html#_0103091022

上記は,いなばさんによる大変分かり易い「C++で定理を証明っぽいことをする」ことについてのintroです.

内容としては

  • C++では一応「値に依存した型」は書けない
  • 一方私達が普通証明を書くときというのは「値に依存した型」で考えられると割と自然になる
  • アレじゃあ困った!?

なので「型に依存した型」ベースで(ちょっと強引に)考えたぜ!! とも言えると思います.

一方,本記事はそうじゃなくって,シンプルに「値に依存した型」が使えると良いじゃん,という視点を説明してくれています.

特に,「【証明】という正直な話そんなことしても給料には結びつかない,従ってどうでも良い.」
という皆様でもおもしろおもしろい感じに読み進めることだと思います.
何せ普通にプログラムを書く時の視点を中心に紹介してくれていますし、証明は殆ど紹介せざるを得ない1つのapplicationみたいなものです.

プログラミング言語Scalaの歴史とこれから」

タイムライン上で度々見る,type-safeとは異なるTypesafeの説明が,そもそも調べる気にもならなかった皆様に齎されます!!

ぼくが面白かったのは,Scala Daysのレポートでした.
今までどのように行われているか知りませんでしたし,何よりScala Days 2012への参加を今から考えている方の後押しになると思います.

Haskell 2010/2011とHaskellのこれから」

Haskell2010における新機能と2011で入るだろう機能を「日本語で」「実例を用いて」説明した,非常に素晴らしい文書です.

「証明支援系Coqの紹介」

Curry-Howard対応を紹介しつつ,Coqによる証明の入門が行われています.
twitterのタイムラインでCoqという語を見て気になってググるけど,出てくるものといえば簡単なところで細事に括り過ぎてつまんない,そもそも興味は無いから入り口のあたりをざっくり捉えたいんだけど…」という方に特にオススメかもしれません.
そのような人が読んだ方が「興味を持ち易く成る」気がします.

「Boostを使い倒してTwitterクライアントを作る」

C++で…,というよりも,Boostライブラリを用いて非同期ネットワークI/Oを行うtwitterクライアントの実装を行います.

非同期処理においては,オブジェクトのlifetimeが(ポインタを用いた処理を行う際に)問題となることは一般的な話ですが,これに対しC++でどうするべきか??
という良くあるパターンについて,どう解決するかの考え方も述べられています.

そしてtwitterは,API(周辺)を殴るとJSONを吐き出すので,そのJSONをパーズする為にBoost.Spiritを用いています.
だいたい,これ以前に,HTTPリクエストのお話もあるのですが.

おわりに

今から書きます。