The Little Schemer

The Little Schemer (The MIT Press)

The Little Schemer (The MIT Press)

ずっと前に買っていたのだが、今日になって読み始めてみた。
これ面白いなぁ。

car,cdr,consを使ってリスト操作する所から始まって、再帰高階関数CPS、Yコンビネータの話にまでいっちゃってる。
これはすごいぞ。

でも、これらを知らない人がこの本を楽しめるかどうかは大分疑問。
一歩間違えると、ただQ&A形式で似たような事をずっとやってるだけだと感じてしまうかもしれない。

なんか、この本ってラムダ計算とかSchemeあたりを知ってる人が、先に挙げたような概念はこんなに平易に説明できるのか!すごい!っていう事を見て楽しむ本な気がする。つまり、すでにSchemer(Lisperでもいいけど)であるような人が読んで楽しむ物かと。こういった事を全く知らない状態で読んだら全然面白い本ではないのではないかなあ。てか、何がやりたいんだかわからない気がする。*1

でも、再帰とか高階関数やらなんやらをわかっているようなわかっていないような怪しい時に読むとこの本は素晴らしい効用があると思います。
というわけで、個人的にはかなり良い本なので、続きのSeasoned SchemerとReasoned Schemerも読んでみよう。

なんだか、Reasoned Schemerには関数型言語と論理型言語を融合させよう!みたいな事が背表紙に書いてあって読むのが楽しみだ。

The Seasoned Schemer (The MIT Press)The Reasoned Schemer (The MIT Press)

*1:まあ、意味わからない事を繰り返して慣れ親しむっていうのも必要な事なのかもしれないけど。

プロフェッショナル

一昨日、修論発表も終わったのでゆっくりテレビでも見ようかな、と思っていたらたまたま面白そうな番組が。
NHKのプロフェッショナル 仕事の流儀という番組でMITの石井裕さんの特集。

名前もタンジブルビットという言葉も聞いた事はあったけど、いやーー、非常に刺激的な番組でしたよ。
ほんと、久々にテレビ見て面白いと思った。

ほんと、どんだけ自分がぬるい生活してるかって思わされた。泣きたくなる。
ビデオにも入れていたので、もう一回見よう。

Alan Kay

学校でアランケイの講演があったので行ってみた。

タイトルは、"Can Programming be reinvented?"だったと思う。
しっかし、英語だったもんで、正直内容はよくわかんなかった。折角の機会だったのに。。。
と思ってたら、アランケイが主催するViewpoints Research Instituteの大島さん(id:squeaker)がその講演の内容の要約を書いている!素晴らしい、感謝感謝です。これを読んで、あのスライドはそう言う意味だったのかぁ、と思ったりしてる訳です。

んで、まあよくわかんないなりに講演で興味深かったのが、Squeakで低レベルのソフトウェアも作っているという事。勝手にSqueakってグラフィカルにアプリケーションを作れるだけの言語だと思っていたんだけど、なんかGolden BoxっていうシステムはBNFを突っ込むと処理系を生成してくれるみたい。コンパイラコンパイラみたいな感じなのかな??しかも驚いたのがそのコードが1500行。どうやって書いてるんだ??気になる。面白そう。しかし、ちょっとオンライン上を探してみたんだけど、それらしい情報は見つからないなぁ。
さらに、OSとかも作ろうと思っているらしい。うーむ、「未来を予測する最善の方法は、それを発明することだ」を地で行ってる感じがしますね。
もしかして、ViewpointsResearchのwebページもSqueakで書かれたサーバで動いていたりするのかな??

最後の方でFPGAについて何か言及していてちょっと気になったんだけど、それもよくわかんなかったなぁ。なんかソフトウェアの開発の仕方も変わるだろうみたいな事を言っていた気はする。

しかし、もったいない事したなぁ。。

fancyvrb fancybox

悶々と修論を書いています。

それで、論文にプログラムのソースコードを載せたいんだけど、普通にverbatimを使うだけだと行間が文章の部分と一緒になっちゃって、日本語の文章の行間と同じだとちょっとスカスカに見えちゃうからソースの部分だけ行間を変えるにはどうしたらいいかなぁ、とか悩んでたら、先輩がfancyvrb(マニュアルのpdf)を教えてくれた。

これだと

\begin{Verbatim}[baselinestretch=0.5]
hoge
hoge
\end{Verbatim}

とかってやるだけで、verbatimでかつその部分の行間を調整できます。
さらに、その先輩にfancyboxというのも教えてもらって、ある部分をボックスで囲んだりするのに便利なものが入ったパッケージ。

おぉ、これもうれしいじゃんとか思って両方使おうと思ったら、なぜかbaselinestretchの値を変えても、行間が変わってくれなくなっちゃった。。。
なんやかんやで色々悩んでいたら、なんと\usepackage{fancyvrb}を\usepackage{fancybox}の前に書いちゃうとそうなってしまうらしい。。。だからこれらのパッケージを使うときは

\usepackage{fancybox}
\usepackage{fancyvrb}

という順番で宣言しないといけないみたい(一応先輩の環境でもそうだった)。
多分、マクロかなんかの定義が重複して上書きされちゃってるっぽいけど、latex恐ろしや。

ちなみに、予想通りこの二つのパッケージ間で定義が重複しているのだったら、宣言の順番を逆にすると、今度はfancyboxの何かの機能が使えなくなりそうなもんだけど、今のところ大丈夫。
はぁ、謎だ。

Gaucheリファレンス検索

実は最近、Kahuaのソースを読んでいるのですが、私はgaucheを全然いじったことがないので、とにかく使っている関数がわからんのです。etagsで引っかからない関数が出てくるたびにgoogleで検索、という面倒なことを毎回していました。
でも、必ずgaucheドキュメントに行き着くので、サイト内検索あったらいいのになぁ、とか思っていたらこんないいページを見っけました。

gaucheのドキュメント内の関数とかマクロをインクリメンタルに検索できるというもの。知らなかったなぁ。
素晴らしいです。これでだいぶ効率アップだ。

Google APIセミナー

今日、学校でgoogleセミナーがあったので、参加してみた。
内容はマップ、パーソナライズド ホーム、デスクトップのAPIについて。

去年googleがきたときは、GFS(Google File System)の話とかあって、結構面白かったんだけど、今回はAPIを使ってどうやってガジェットを作るのか、といった紹介でした。まあ全部HTML、XMLで見た目を書いて、ロジックはjavascriptAPIよんで、データはXMLという感じで、しかもあまり突っ込んだ話が無かったので、ちょっと残念でした。。かな

もうちょっと、APIの設計の話とか聞けたらよかったのになぁ。
それか、社内のインフラの話とかも聞いてみたかったな。


それとどうでもいいですが、Google Desktopのガジェットを作って、Googleに投稿し、採用されると、Googleグッズ(帽子、ペン、Tシャツ)がいただけるそうです。。
あと、今回の講演で配ってたTシャツは去年のより質が上がってました。さすが、勢いを感じます。

Software Engineering for Internet Applications

たまたまこんなページを発見した。どうやら、↓の本が無料で公開されているようだ。
なんでも、この本の目標は「一学期の授業でamazon.comが作れるようになる」とある。
本物のamazon.comのレビューでも非常に評判がよろしいので、ちょっと読んでみようかな。

Software Engineering for Internet Applications (The MIT Press)

Software Engineering for Internet Applications (The MIT Press)

ざっと見たところ、コミュニティ型のwebアプリケーションを作っていくらしい。
実装の話だけではなくて、アプリケーションの設計の話やユーザーアクティビティの分析など、面白そうな話が結構ある。

しっかし、これも無料だもんなぁ。すごいわ。