http://www.pokarim.com/
まとまりのない話を最後まで読んでいただきどうもありがとうございます。最後に自分が取り組んでいることの話を少し。 自分が取り組んでいるのはデータベースとリアクティブプログラミングの融合です。リアクティブプログラミングはわりとクライアントサイド…
リアクティブプログラミングは関数型プログラミングなどに比べてまだまだマイナーなパラダイムですが、上に述べたようにすでにいくつものライブラリでサポートされていて、ブレイクするのも時間の問題と言いたいところですが、関数型プログラミングだってキ…
リアクティブプログラミングと関数型プログラミングやオブジェクト指向の比較なぞをやりましたが、実際のリアクティブプログラミングの多くは、 関数型プログラミングやオブジェクト指向と組み合わせて使われることの方が多いです。 とくに関数型との組み合…
DAG 分散処理で使われる計算モデルのひとつに、DAG(directed-acyclic graph:有向非巡回グラフ) があります。DAGはその名のとおり、向きがあって循環のないグラフで、各ノードで計算が行われ、 各エッジが、その方向へのデータフローとなります。 このDAGは…
リアクティブプログラミングでは外部とのやりとりを、外部の「何か」と対応付けられた振る舞いを通じて行います。 対応付けたい内容に応じて、いくつかの種類の振る舞いを使い分けることが必要になります。 状態へのマッピング もっとも基本的な振る舞いは、…
依存グラフとキャッシュの管理 一番基本的な工夫は、状態間の依存関係を管理して、ある状態が変化したとき、その状態に依存する状態だけについて 再計算を行うことです。 a = 1 b = 2 c = 3 d = a + b e = d * c の依存グラフはこんなかんじになります。 た…
関数型プログラミングにおける式は、値と値の関係を表します。 一方リアクティブプログラミングでは、式は、振る舞いと振る舞いの関係を表します。 純粋な関数型プログラミングでは、参照透明であること、つまり式を値で置き換えてもプログラムの意味が変わ…
まず次のような定義を行います。 a = 1 b = a * 3 そしてaに2を代入してみます。 a = 2そしてbを出力してみましょう。 通常の命令型言語であれば、この結果は、 b -> 3 となります。 しかし、リアクティブプログラミングでは、 b -> 6 となります。b = a * 3…
Why Reactive Programming Matters. えーと、リアクティブプログラミングがなぜ重要なのか、というのが本題でした。なので、実はここからがメインです。 なぜ重要だと思うのか書かなければいけません。その理由について、モジュール性の向上と状態管理の自動…
リアクティブプログラミングは、「時間とともに変化する値」=「振る舞い」同士の関係性を記述することでプログラミングを行うパラダイムです。 GUIなどのようにインタラクティブなシステムや、シミュレーションやアニメーションのようにダイナミックに状態…
今回は、 http://togetter.com/li/71943 で話した属性と関係の話のつづきです。オブジェクト指向やリレーショナルモデルでは、属性という概念が登場します。属性という用語/概念は、プログラマにはなじみ深いものです。あたりまえすぎて、もはや空気のよう…
再出発 このブログはずいぶんこれまでチラシの裏的にずるずると、かつ間欠的に続いてきましたが、 ここでタイトルも改めCountercodeからConceptual Contextureとして、再出発する事にしました。 内容についても、いままではプログラミングに関するメモがメイ…
はじめに ContextureDB(略してCtDB)は、 関数型データモデルをベースにReactive ProgrammingやHaskellのArrowを参考に拡張を行ったDBモデルを持ち、 アプリケーションロジックの宣言的な記述やツリー状データによる入出力を特長とするDBMSです。 目的は、W…
プログラマってプログムを書くのは好きだけど、なるべく書かずにすむように抽象化したり部品化したりする。これは矛盾してるようにも見える。しかしそもそも自動化をしたいのに、そのために"同じこと"を何度も繰り返し書きたくないというだけのことかもしれ…
(下書きです。) Contextureはfunctional database modelをベースとしたDBMSです。 Dataflowもしくはfunctional reactive programmingな仕組みを取り入れています。 functional database modelは、永続化された辞書や連想配列などのデータ構造を 関数と見な…
"Design Concepts in Programming Languages" この本はすごくいい。 そのわりにまだあまり話題になってないようだ。 おすすめしてくれたAmazon.comに感謝!プログラミング言語の意味論とかCPS styleの話とか、oopの話とか、type systemの話とかモナドの話と…
Design Concepts in Programming Languages (MIT Press)作者: Franklyn Turbak,David Gifford,Mark A. Sheldon出版社/メーカー: The MIT Press発売日: 2008/07/18メディア: ハードカバー クリック: 13回この商品を含むブログ (1件) を見るとても面白そう。そ…
Tokyo CabinetとそのJava APIをUbuntuにインストールした。 http://ctrkode-clojure.blogspot.com/2009/05/tokyo-cabinetubuntu.html あと、mixiブログのTokyoCabinet関連をメモ。 Tokyo Tyrant関連を除く。http://alpha.mixi.co.jp/blog/?p=84 http://alpha…
http://www.rubyist.net/~matz/20080320.html#p03 を読んで思った。 Erlangの特徴が、immutableな値とアクターモデルだというのは、 とても頷ける。 もうひとつ本質的ではないかもしれないけれど、 パターンマッチングの仕組みが組み込みであるのも特徴だと…
http://www.rubyist.net/~matz/20080204.html#p01 を読んで考えた。 以下はあくまで個人的な感想と見解と理解です。 プログラミングに関わる概念や用語はたくさんある。 学問としての計算機科学と、現場よりのプログラミングの技法や知識には当然違いがある…
Clojureがとても良い感じです。 Clojureは、Lispの新しい方言でScalaなどと同じく、JavaのVMの上で動く言語です。 JVM上で動くので、Javaのライブラリがそのまま使えます。 Lispなのでマクロが使えます。 ScalaはErlangのようなアクターモデルを並行処理制御…
で、氷いちごミルク金時を食べた。ありえないほどうまくて驚いた。カキ氷よりはアイスクリーム、アイスクリームよりケーキが好きな自分だが、このカキ氷には、ほれた。 イチゴソースが、あかい色のついた甘いだけのアレとちがって、なんか本当にイチゴの味が…
開発合宿に行ってきた。とても楽しかった。 開発もなかなかはかどった。 卓球もした。 帰りに軽井沢駅前に寄って観光した。 これも楽しかった。 プリンをお土産に買って帰った。 妻の口には合わなかったらしく、 「まったくがっかりだよ」 といわれた。 忌憚…
amd64のマシン(ml115)にはどうもうまくMorzartをインストールできなかった。 aptitudeでもmakeでも。 ぐぐってみたら、ubuntu forums でもまさにそんな話題があった。 http://ubuntuforums.org/showthread.php?t=570502 intel+ubuntuマシン(110Gd)には問題…
今日はいいことがあった。 親友がひとり開発を手伝ってくれることになった。 大変心強い。 やはりひとりで開発するのは心細かったようだ。
少し前のことになるけれど、スカイ・クロラを公開初日に立川の映画館で観た。 午前中にみたのだけれど、面白かったので、同じ場所でその日の夜、もう一度みた。さわやかな映画だった。 自分の持っていた押井監督のイメージをいい意味で覆すような、さわやか…
tcerlを試してみた。ソースを読みながら試行錯誤している段階なので、 おかしな使い方をしているところがある可能性が高いが、使用できた。 tcは、ハッシュ、B+木、固定長、の3種類のDBを提供しているが、 いままで調べた限りでは、tcerlではB+木だけを提供…
couch_btree と dets の速度比較couch_btree と dets の速度比較 - cooldaemonの備忘録 tcerlとの速度比較もしてみたい。
tcerlのインストールに成功したっぽい。うっはー。 前回との違いは、 tokyocabinetを、aptitudeではなくソースからいれたことと、 tcerlのバージョンもいつのまにか新しくなってて1.3.1だったこと。 tcerlのhow to install にはaptitude install libtokyocab…