2009-01-01から1年間の記事一覧
本文略
-module(qsort). -import(lists, [append/2]). -export([qsort/1]). qsort([])-> []; qsort([First|Rest])-> append([X || X <- qsort(Rest), X < First], append([First], [X || X <- qsort(Rest), X > First])).
半構造のメリットをテキストデータのメリットと取り違えて議論しているのか。データ長は可変長にしておけというだけの話ではないよね?。 半構造というのは、厳密な構造化しなくても計算リソース投入しちゃえばいいんじゃない?という話だと思うので、通信プ…
この話題、すっかり乗り遅れてしまった。 あえていわせていただく。コードはデータ構造の選定ができるだけはるかにましなのだ、と。バイナリーを使うかどうかなんぞ、その問題と比べれば屁ですらないのだと。 データ構造の選定よりもはるかに重要なもの、そ…
ブックマークコメントで、UMLでもできるという指摘をいただいたので調べてみたら、組み込み向けUML拡張では時相論理を取り入れているものがあるようだ。 これとかもそうなんだろうか http://www.object-report.jp/2007/12/18/marte/
いま、大きいのはクラウドから小さいのはGPGPUまで、並行システムはなざかりです。 クラウドなど、並行システムが不可欠となったとき、並行システムのモデリング技法が必要になります。 でも並行システムを作るために使えるモデリング技法で、現場の技術者に…
さて、いろんな本を取り上げたのだけど、かなり広い範囲を取り上げたので、それぞれそれなりに高い本だし、読む時間もないし、そもそもどこから手をつけていいやら、とか思った人も多いんじゃないだろうか。 今回取り上げたような内容を、1冊にまとめたよう…
let rec quick_sort lst = let rec filter f n lst = match lst with [] -> [] | first :: rest -> if f first n then first :: filter f n rest else filter f n rest in match lst with [] -> [] | first :: rest -> quick_sort (filter (<) first rest) @…
Hadoopで一時ファイルの設定は、conf/hadoop-site.xmlでhadoop.tmp.dirの記述をすればいい。 注意しないといけないのは、ここで指定するのは、Windowsの場合はCygwinのパスではなくWindowsのパスということだ。 また、そうすると、JobTrackerのシステムフォ…
プログラムをどう動かすというか、どうやって命令を発行するかという本を挙げて、プログラムをどう書くかという本もあげた。 これで、Seasarカンファレンスでの話での本の紹介は終わりなのだけど、ブログのエントリとしては、どうやって実際にプログラムが動…
SICPをプログラミングの本だとして批判したら、そうじゃねーだろという反応が多く帰ってきた。 いまSICPを読むのは時間の無駄 じゃあ、SICPはどういう本か。 LISPを使って仮想マシンを作って、LISPコンパイラを作って実行させて、プログラムがどのように動く…
SICPは、よい内容について書かれた本であり、最良の本だった時期もあった。 けれども、今となっては、理解が難しく内容の割には時間がかかる、時間の無駄ともいえる本といってもいいかもしれない。 もちろん、Schemeの可能性、数値計算、プログラミング、コ…
間違った情報をblogに書くのはやめてくれという趣旨なのだろうだけど、「正しい情報しか書いてはいけない」のだとしたらblogなど書けないし、「blogに書くのはやめてくれ」などといってる人も正しい情報だけを書いているわけではない。せめて、過去指摘され…
今回は、プログラムの書き方の本。プログラムの宣言的な側面を扱うための本とでも言うか。id:t_yanoおまたせ。 ただ、こっち側はほんとに勉強を始めたばっかりなので、ちょっと目を通しただけで読んでない本もばかりだし、自分でもちゃんとわかってない部分…
Seasarカンファレンスで、基礎としてプログラムの動かし方であげた本。と、それに加えて挙げれなかった本。 ちなみにSeasarカンファレンスでの内容はid:tanamonがまとめてくれてる。というか、手書きスライドの書き起こしをしてもらってます。 「手書きで書…
Seasarカンファレンスで「プログラムが組めるようになるためには何を教えればいいですか?」と聞かれて、「創るJava」も絶版だし、どうしようかと思いつつ、「教える」というときに考えないといけないことが書いてある本を紹介しますね、と言ったので、その…
最近いろんなことを中途半端に勉強して思うのは、なんだか観光客のようだなぁということだ。 現実的な問題として、専門家=その土地の住民にはなれない。 勉強するにしても、その分野の雰囲気を味わうことができるくらいで、まさしく観光のようだ。 そしてそ…
たとえるなら「HTTP通信のRFCの解説書を読んだのでHTTP通信するプログラム書いてみた」という程度のことです。
「クラスとは何かを集合論から考えなおす」について、素朴集合論から考えると混乱するとかZFCっぽくないのは意味がないとかいう指摘を受けたので、ちゃんと考えられるように準備をしてみる。 今回は準備だけ。そして続きがあるかどうかはわからない。 さて、…
ソフトウェアには、3つの側面があると思う。 どういう切り口で3つの側面を取り出してもいいのだけど、とにかく3つの側面がある。 最近は、工学・理学・人文学の側面として考えるようになってきた。 たとえば、論理学などからプログラムの表現を考えていく…
いま論理学とか集合論とかを勉強してるので、クラスって何かという話のときも集合論として考えてた。 なので、そのとき考えたことをまとめておく。 まず、「なにか」があるとする。「なにか」はなんでもいい。 そして、その「なにか」の集合を考える。たとえ…
id:SiroKuroさんところで、クラスに関する用語についていろいろ議論があって、なんとなくこういうイメージをもった。 クラスをあらわすいろんな用語があるのだけど、それぞれは「クラス」という抽象概念があって、たとえば「Javaオブジェクト」として光をあ…
今日もTwitterは遅延してたんで、その遅延が起こるようなTwitterのアーキテクチャを考えてみるよ。Twitterの不具合から考えてみただけで、完全に想像であって、実際になにかの資料に基づいたりはしてないので、念のため。 まず、サーバー構成はこんな感じ。 …
練習として、ブクマコメントにあった「人は死ぬ。神は死なない。故に人は神ではない。」の証明。 P・・・人 Q・・・神 R・・・死ぬ とすると、この命題は ( (P⊃R)∧(Q⊃¬R) )⊃(P⊃¬Q) と表せる。 記号は ⊃・・・ならば ¬・・・ではない ∧・・・かつ と読む。 と…
Fx・・・xはトマトである Gx・・・xは野菜である Hxy・・・xはyで作られたサラダである から、トマトサラダは野菜サラダである、は ∀x(∃y(Hxy∧Fy)⊃∃y(Hxy∧Gy)) となる よって、トマトが野菜であるならトマトサラダは野菜サラダである、は ∀x(Fx⊃Gx)⊃∀x(∃y(Hx…
あまりにも明るいので、遮光率の高さを目的に覗き見防止フィルタをつけることにした。 新幹線とかで使うのにはあったほうが嬉しいし。 けど、8インチというのは売ってなかったので、ちょっと大きめのものを。 で、12.1インチワイドというのを買ってみた。透…
8インチのUSB接続ディスプレイ、LCD-8000Uを買ったはいいんだけど、ノートのVistaにドライバがインストールできなくてかなしい思いをしてました。 インストーラが無言で止まります。 デスクトップのXPにはインストールできて使えたので、テレビ用モニタにな…
ブックマークのコメントに 1台でもGbyte単位のデータを処理可能なプログラムを簡単に書けるのは十分なメリットだと思う。 とあったので、ついカッとなって作ってみた。 サンプルは前と同じく、クラスがJavaソース中でimportされている回数を数えるもの。 map…
String#equalsを使った文字列リテラルとの比較の書き方として、str.equals("リテラル")と書くのがいいか、"リテラル".equlas(str)と書くのがいいかという論争がありました。 そこで、この問題について、エラー処理の方針と絡めて考えてみようと思います。 エ…
ということで、Google MapReduceの実装であるHadoopを使ったMapReduceと、JMSを使ったMapReduceをやってみました。 メッセージキューを使って分散MapReduceを実装する HadoopでのMapReduceを気軽に試すサンプル これ何のためにやったかというと、そこらにあ…