2006-11-01から1ヶ月間の記事一覧

Singularity: A research OS written in C#

http://channel9.msdn.com/Showpost.aspx?postid=68302 見た。 コメント欄より > This isn't the CLR. In our world, we compile entire MSIL for the kernel into x86 instructions at installation time. There is no libc at the bottom. However, we do …

C言語

http://blog.livedoor.jp/dankogai/archives/50700240.html なんか、ひどく勘違いしているような・・・ - Cleanのライブラリを書くときに、ブリッジ部分をCで書いていますが、移植性のためです。 大抵のOSならCコンパイラがあることが期待できることと、ハー…

MITがSchemeからPythonに?

http://lambda-the-ultimate.org/node/1840 東大はJavaからRubyでしたっけ?

libffi, ffcall

Cleanから共有ライブラリを動的にロードして呼び出すようなモジュールを作ることを考えて調べていたら、libffiとffcallというライブラリが存在することを知った。 どうも、しばらく前に一度流行っていたらしい。 http://sourceware.org/libffi/ http://www.h…

Haskell : Programming in the Age of Concurrency: Software Transactional Memory

http://channel9.msdn.com/Showpost.aspx?postid=231495 見た。Simonがよくしゃべるのに対して、Timの声が小さくて聞き取りづらかった。 - そういえば、singularityという聞きなれない言葉が出てきたなと思っていたら、同じページのRelated Mediaに次のビデ…

Erlangの血統とか

るびまにErlangの紹介が載ってますね。個人的には、内容的にしょぼーんな感じなんですが・・・ - それはそうと、Erlangの先祖を知りました。Prologだそうです。 Erlangは、リアルタイムでパラレルなPrologとして産声を上げた後、関数型から多くの機能を取り…

文字列検索アルゴリズム

について探し物をしていたら、よくまとまった資料を見つけた。(PowerPoint資料) http://www-ikn.ist.hokudai.ac.jp/ikn-tokuron/LN_H16_IKNtokuron-pattern_matching.ppt - bit-parallelismという手法があることを知った。 非決定性有限オートマトンを状態…

Concurrent Clean : メモリアロケートの遅延

自明といえばそうなのですが、遅延評価を利用すると、大きな配列のメモリアロケートを遅延することができたりします。 次のプログラムは、STというレコードを要素に持つ要素数10000の配列を作成し、その26番目と257番目の要素だけを取得するというプログラム…

EXACT STRING MATCHING ALGORITHMS

http://www-igm.univ-mlv.fr/~lecroq/string/index.html お、これは便利だ。

GPLと特許について

http://opentechpress.jp/~mhatta/journal/424 興味深い。

Concurrent Clean : 関数呼び出し

Cleanの関数呼び出しのアセンブリレベルの表現って、ifileI03.sとStdFile.iclを比較すれば、概要がつかめそうと思った。

Windows環境のmalloc

ってどこにあるんだろうと思っていたら、C Runtimeにあったらしい。 msvcr80.dll内で発見。

OCamlの文法の視覚化

http://blog.so-net.ne.jp/rainyday/2006-11-18 R**yの文法が複雑とかいう話があったが、そんな話も異次元の話に感じる。

Concurrent Clean : 失敗の反対

「::Maybe a = Nothing | Just a」を失敗の伝達に使うのは、失敗したときの付加情報が伝達されないので、「::MayFail a b = Failed a | Succeeded b」みたいにしたいのだが、もっとスマートな単語はないかと検討中。 - Passというのがよいかも。 ::PassFail …

Windows : fork

Windowsにはfork関数が存在しないらしいことに気づいてややショックを受けています。 cygwinのforkの実装のドキュメントとか読んだのですが、これを実装するのは手間だなぁ。 spawnを作ったので、fork/execをする必要はないのですが、forkを使って並行計算を…

Concurrent Clean : SVN登録 : spawn*, exec*

http://cleanoptenv.svn.sourceforge.net/viewvc/cleanoptenv/trunk/OptEnv/

Concurrent Clean : MersenneTwister

MersenneTwisterの実装を見直してみたら、uint2Realという関数で、IntからRealに変換をしているけれど、IntとRealでは精度が違うから、Int2つでReal1つを作らないとダメなんじゃないのかな?

テンポラリファイル生成

Windows環境 : http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpfileio/html/_win32_gettempfilename.asp Unix環境 : http://www.linux.or.jp/JM/html/LDP_man-pages/man3/mkstemp.3.html spawnができたら、テンポラリファイル生成関数…

WindowsのC Runtime

はどこにあるのかなと思って探していた。(microsoft製の開発ツールはなじみがないので) system32の下のdllで、crtdll.dllがあったので、これかと思って、impdef.exeで中を確認したら、あるはずの関数がなかったので、違ったかと思って探していたところ、 h…

Concurrent Clean : 呼び出し規約

[id:lethevert:20061009:p3] に書いたことですが、ローカル関数の場合はもうちょっと複雑みたい。 結局、コンパイル後のABCコードを読んで調整する必要があるのか。

Concurrent Clean : spawn

が動くようになりました。 spawn_nowaitとforkとexecを追加することと、モジュールの分割方法を検討中。 ::Errno = Noerr | Errno !Int strerror :: !Errno -> String spawn_wait :: !String ![String] !*World -> (!Errno, !Int, !*World) /* spawn_wait pa…

CSPRNG

http://www.acsac.org/2003/papers/79.pdfを読んでいます。 フォークしたときに、乱数生成系をreseedしなければいけないというくだりを読んで、なるほどと思いました。 フォークすると、親プロセスと子プロセスが同じseedを持つ乱数生成系をコピーして持つこ…

タグをつけるのを

やめることにした。あまり意味ない。

Concurrent Clean : 不足しているプリミティブ

Cleanを使っていて、いくつかプリミティブが不足していると思う。なくても同じことを行う関数は書けるのだが、効率性を考えるとプリミティブとして欲しいという種類のものだ。 たとえば、配列のコピー。Cleanでは配列は破壊的更新ができるので、効率的にコピ…

乱数生成器

昨日の調査で分かってきたこと。 システムが提供する(可能性のある)乱数生成器には次の4種類がある。 情報理論的な'真'の乱数生成器 各ビットが1ビットのエントロピーを持つ乱数を生成する。OSなどがハードウエアを通して外部のエントロピー源から情報を…

Concurrent Clean : ソート

そういえば、Cleanのソートはリスト用にマージソートが提供されているだけなんだけれど、配列用の破壊的なものもあったほうがよかろうということと、少ない要素の場合で有効な別のアルゴリズムもあったほうがよいのではないかと検討中。 何がいいのかな?

Concurrent Clean : Concurrent Programming

そういえば、Famkeの関連でスレッドの話を書きましたけど、lazyなシステムではeagerなシステムのコルーチンくらいの処理は、特別な機構を使わなくてもあたりまえに書けるんですよね。 それでも、いくつか問題があって、たとえば、ファイル入出力などの処理が…

DLL : DEFファイル

確か、DLLからDEFファイルを自動的に生成するツールがあったなー。 あれの引数を逆にしてひどい目にあったなー。 と思って調べていたら、bccに付属しているimpdef.exeというツールだった模様。

Concurrent Clean : Mersenne Twister

Cleanに付属しているMersenne Twisterのライブラリのコードを見ていたら、古いコードをベースにしたものだということに気づきました。 http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html から取得できるCの標準コードは、2002年に修正されているので…

Concurrent Clean : 乱数生成器

Cleanに付属している乱数生成器はMersenne Twisterだけなのだけれど、暗号学的に安全な乱数生成器もあるほうがいいのではないかなと思って調査中。 Wikipediaに名前の挙がっている Blum-Blum-Shub法と Fortuna法の2つを調査。 線形合同法のようなより軽い乱…