HOME / 日記 / 今日の書評的なところ

Date: 2010/02/19 |  このエントリーをはてなブックマークに追加  |  Tags: Solaris, OpenSolaris, Howto, 利用法

今日の書評的なところ

割と本を買うので、買って目を通したら、書評的なものを書くことにしました。

実は私は「積ん読」はしないタイプで、積ん読するぐらいなら「インデックススキャン」を、10分程度するタイプです。必要ならば脳内でインデックス検索してドリルダウンします。そのため、最初のインデックススキャンでは内容は完全には理解してないことが多く、こんな本というメモで、終わってしまうこともあります。

というわけで

  • 自分のためのメモを残す
  • みんなに紹介できるといいな
  • アフィリエイトでちょっと小銭が入ればいいな((というか、amazonのアレがどの程度の確率なのか知りたいな(笑)))

という為に、書こうかなと。

HTML5&API入門

HTML5を記述からAPIの使い方まで、雑記を記載している本。本の流れとしてはFirefox3.5以降などの新しめのブラウザでは一部の機能が使えるのだから、いまHTML5を勉強しておこーよ!的なところのようです。今、使える機能を中心に、今後の物も含め、実利用できるサンプルコードが記載されており、解説がわかりやすいです。

「HTML5のAPIを使ってがっつりHTML5で行くぜ!」とやるのも面白いですが、実利用ではWEBページにHTML5の機能を軽く先取りする程度は、ビジネスサイトでも行けるかも知れませんね。例えば、Formの新しい機能や、IEでは前からサポートされていたルビ、detailsなどはこのサイトでも使うと楽しいかも知れません。

軽く発祥のきっかけ的なところが書いてありましたので、ほとんどノーマークだった自分的には、歴史的な流れや各社の綱引き情報も想像出来て非常に参考になりました。僕のブログのようにお遊び用ならともかく、ビジネスで使うには主流動向を押さえる必要がありますから。リッチなWEB制作は、今後FlashなのかHTML5なのかという考察が多い中、プロプライエタリなFlashでなくHTML5をという流れも多いのは事実です。まあ実際の所はしばらくFlashであろうなぁとは思いますが、実験はしておいて損はないでしょう。AppleはPostScriptフォントをMacに入れるときにもAdobeと綱引きしていた実績はありますし((結果、TrueTypeをMSと一緒に作っておきながら、最後に鞍替えしてPSフォントを採用した))、MSはSilverlightをガンガン押してますが敗退色が見えたら、いつも通りHTML5をメインに添えてスーパーセットのようなSilverlightを押してくるんじゃないかなぁと(笑)

って、大分書評からは離れてしまったのでこの辺で。

最新コンパイラ構成技法

これは高いけど、本当に良い本。

15分ぐらいでさらっと流し見しかしてませんが、インデックススキャンだけでなく、ドリルダウンをしたい誘惑にかられまくりでした。

基本は、コンパイラを作成するためには・・・という本で、どうやらアメリカでは教科書として使われている本のようなのだけれども、これって日本でも教科書にする学科があるのかなぁ。そう言う勉強出来る学生が羨ましいです。

この本が優れているのは、実装による動作までの流れがある点。

これは、実際の理論と実装が延べられているというだけでなく「実装による動作までの流れ」までが、ストーリーづけられているのが特徴。

「私の解釈では」コンパイラを作成するためには、大きく分けると3つあり、

  1. テキストで書かれた言語を解釈する部分。
  2. 上をデータ化する部分
  3. データ化したものを実行する形に治す部分
    • インタプリタであればデータ化するものを実行するエンジン。

という、流れがあります。1は、Yacc(Bison)/ lex(flex)などを使い作りますが、これに関する本は、日本語でも少ないながらも多少はありました。

この本が面白いのは、その後の処理として、2、3の話がきちんと書かれていることです。2はプログラマの勘所によるものが多く、体系づけられた書籍があまり日本語でないのが(多分)実状だと思うのですが、そこがきちんと書かれてるのが面白いです。3番目はいざ実行するに当たる部分で、コンパイラとインタプリタは実装のフェーズで方法論が異なります。

さて、この本では、私が上げた上の3つの点がどのように書かれているかというと、

  1. テキストで書かれた言語を解釈する部分。
    • 字句解析、構文解析、抽象構文、意味解析
  2. 上をデータ化する部分
    • 駆動レコード、中間コードへの変換、基本ブロックとトレース、命令選択、生存解析、レジスタ割当
  3. データ化したものを実行する形に治す部分
    • データフロー解析、ループ最適化、静的単一代入形式・・・

などなど。

面白いのは、その後のセクションで、ガーベジコレクションや、最適化に関する話まで延べられていることです。このあたりになると、実際にコンパイラを使っている人達や、インタプリタを使っている人達にとっても、「中がどのように動いてるのか?」という所で想像がつき、より深い理解が進むかと思います。

こういう本に10年ぐらい前に会いたかったなあ(笑)

実は、私はその昔、会社でHeartfelt Heartというゲームソフトウェアをつくったのですが、これのコンパイラはYacc/Lexで書かれており、入れ子や四則演算、関数などがつかえるシナリオコンパイラがありました。

追ってその後、Symreqという単純なお問い合わせプログラムを作ったのですが、この中で、その部分的なものを簡単なツールで入れ込んであり、Symreq Scriptみたいなものがかける様になっています。ブロック要素を抜き、1行解釈型にしましたが、コンパイラの部分はYacc/Lexで、実際の実行エンジンはPerlで作っているPerlの上で動くインタプリタです。こっちはオープンソースなのでソースは全部公開されてます。バグも多いし我ながら酷い状態だし、メンテもされてませんけど(笑)、シンプルな実装例にはなっているかと思います。

また、PukiWiki互換Wikiパーザをもつ弊社のWikiPlusですが、どうしても、Wikiパーザに入れ子がかけなかったり、Wikiパーザ中で四則演算が出来なかったり、色々不満があったりします。そう言うのを含めて、パーザをYacc/Lexで書き直した、Brand New Wiki Parserなるものを作りたいな〜とは前々からずっと思ってはいるものの、こういう部分デバッグも僕の仕事の役割的にも難しいので、主となって開発するのはむりだろうなぁと思ってたりしました。

久しぶりに、そんなことを思い出してしまうような書籍でした。

時間が出来たらじっくり読みたいなと思います。



日記

Recent Updates