deltam's scrapbook
主ブログ<サルノオボエガキ>
Tumblrについての記事→1,2
権利侵害の画像などがあったらdeltam@gmail.comまで教えてください,削除しますので。
写真Post一覧 -> たんぶらびゅーあー
Posts tagged programming
彼の作るゴーカートは継ぎ接ぎに見えるかもしれないが、しかしそれは間違いなく動くだろう。
ダクトテーププログラマ - The Joel on Software Translation Project
超プラグマティック・プログラマー カコイイ!!
実は、多くのプログラマは、何らかの形で継続渡し形式を既に使っている。 現実の問題にはよく出てくるのに、 構造化プログラミングでは非常に書きにくいパターンというのがある。 熟練したプログラマなら経験的にそういうパターンを処理していて 敢えて自覚していないかもしれない。 そのようなパターンは、継続を主体に考えると統一的に理解できるのだ。 ポイントは、外部の処理を呼びたいのだが、 呼び出して戻り値を受け取るという形式が使えないケースにある。
例えばユーザインタフェースだ。処理の途中でユーザーに何か 入力を促し、その結果を使って処理を続けたいことは良くある。 しかし多くのGUIプログラミングでは、ユーザーの入力を受け付けるためには 一度GUIのイベントループに戻らなければならない。 したがって、プログラマは 処理をユーザーの入力の前にやる処理Aとユーザーの入力の後にやる処理Bに分けて、
1. 処理Aの最後に入力ウィンドウをポップアップし、イベントループに戻る
2. 入力ウィンドウの “OK” ボタンが押されるイベントが発生した時に 処理Bが呼ばれるようにする。
という具合にコーディングしているはずだ。 この時、まさに処理Bは処理Aの「継続」なのだ。 (Webアプリケーションにも全く同じ原理が使えることを指摘しておこう。 ユーザーからの入力が必要になった時、Webアプリケーションは一度 入力フォームを吐き出してhttpサーバに制御を戻さなければならない。 「普通のやつらの上を行け」でPaul Grahamが述べているYahoo! Storeの システムはまさにこの技術を実装している。アプリケーションは 継続をクロージャにラップしてセッションIDをキーとするハッシュテーブルに 登録しておき、httpサーバはユーザーからのフォームのsubmitがあると セッションIDを元に登録された継続を呼び出すのだ。)
ほーーーー!