雑記

それと。

ソフトウェア業界の商用ツールのピンキリ度合はどうにかならないのだろうか*1。価格と性能が比例していないどころか相関すらしていない。まあ、価格と機能数は割合と相関しているかもしれないが、それも 価格∝機能数^N, N > 1 というように見える。しかも、…

再開発≠再実装

http://d.hatena.ne.jp/tt_clown/20091228/1261996214、http://d.hatena.ne.jp/monjudoh/20091228/1262023451、http://d.hatena.ne.jp/Isoparametric/20091230/1262134418の話。 態度表明。 先に明言しておくと、私は「再開発はするな。再実装は考えてからし…

ソートの速度を決める要因についてメモ

思いつく限りの要因をあげてみる。 データ内容 個別比較が必要かどうか 比較にかかる時間 比較の分割性 比較の並列度 データ 要素数 読み込みにかかる時間 読み込みの並列度 交換にかかる時間 交換の並列度 ワーキングメモリ 要素数 再帰段数 読み込みにかか…

毒魔を育てる

@の溜まり場IIで「毒→妖→地はどう?」と話を振ったのだけど、「ありかもしれないが微妙」というところで終わってしまった。向こうは今更なので続きをここに書く。 毒の特徴は。 利点 毒針は序盤の攻撃魔法では最強だろう。 悪臭の雲は序盤から中盤まで搦め…

RAIIの代用

C++だとRAIIでリソースの後始末ができる。CだとRAIIが使えないが代案を考えてみた。エラーコードが雑なのは気にしないで。 ありがちなもの。 int func(char const* filename) { FILE *fout = fopen(filename, "a+"); if (fout == NULL) { return -1; } fprin…

挿入ソートの話のまとめ

gcc4.3 -O3 on Atom, N=10000の条件で挿入ソートを測った結果(ソースコードは下に)。所要時間(time)を測っただけでは振る舞いが掴めないので、cachegrindでD1キャッシュ読み回数(D1read)を数えてみた。 関数 メモリ time D1read yane0 malloc 9.79 62M wkpd0…

固定小数点数のフォロー

http://www.kt.rim.or.jp/%7ekbk/zakkicho/09/zakkicho0910c.html#D20091027の話。 Wikipediaだと。 固定小数点数(こていしょうすうてんすう)は、コンピュータにおける実数の近似値の表現方式。固定小数点数では整数部分に用いるビット数と小数部分に用い…

日本語文法では音便や省略が重要

http://d.hatena.ne.jp/kanimaster/20091022/1256217225に書いたブックマークへの追記。 「おいしいです」はやや崩した表現。「おいしゅうございます」の方がより丁寧。選択肢としては「おいしいのです/おいしいんです」も。 「おいしいのです」は書き言葉、…

free_LIST()

http://www.tees.ne.jp/~sin-x/200910a.html#0901 http://shinh.skr.jp/m/?date=20091011#p01 http://www.tees.ne.jp/~sin-x/200910b.html#1201 http://homepage1.nifty.com/herumi/diary/0910.html#12 の話。 作るべきもの。 仕様の話としては リストの先頭…

C言語でCurrying 5

ちょっと休んだけどまだ続くよ。 これまでのまとめ。 呼び出し規約 cdecl 呼び出し側でスタック掃除 stdcall 呼び出され側でスタック掃除 部分適用とは 関数を呼び出す際の引き数を、呼び出し時と事前との二つに分けて与える。問題になるのは 呼び出し側から…

C言語でCurrying 4

Boehm GCと組み合わせた場合の注意点について述べる。 悪い例。 下のような記述ではGC_malloc()で取得したポインタを部分適用したものの、肝心のメモリ領域が回収されてしまう。何故かと言えば、GC_malloc()で取得したポインタがポインタサイズ境界に位置し…

C言語でCurrying 3

もっとも簡単な手段がもっとも優れた手段ということがしばしばある。 calleeがスタックを解放する場合 x86=IA32でのstdcall関数の場合、calleeがスタックを解放する。つまり call cを呼んだ直後のスタック …… 100 ret(c) jmp addを呼んだ直後のスタック …… 1…

C言語でCurrying

と思ったら既にあった。http://d.hatena.ne.jp/shinichiro_h/20060119 厳密には。 #include <stdio.h> int test(int i, int j) { return i+j; } static int _i; int test1(int j) { return _i+j; } int (*test2(int i))(int) { _i = i; return test1; }厳密には「int </stdio.h>…

C言語でCurrying2

http://d.hatena.ne.jp/shinichiro_h/20060119の手法は引数を積みなおして関数ポインタを呼ぶというもの(だと思う)。 call cを呼んだ直後のスタック …… 100 ret(c) call addを呼んだ直後のスタック …… 100 ret(c) 100 10 ret(add) という感じで。これをtail …

C言語で継続2

http://d.hatena.ne.jp/kilrey/20090921#p1で作成した継続は本当に「スタックを巻き戻す」ことしかできない。例えば、外部リソースを再利用できない、といった問題がある。 外部リソースを再利用できない。 下のソースコードでf1()で記録した継続をf2()で巻…

C言語で継続

C言語で継続を実装できるかを考えてみた。もちろん、生のC言語でできるわけがないのだけど、環境を制限すればできないこともない。 前提、setjmp()とlongjmp()について。 setjmp()とlongjmp()の用途はあくまでも大域脱出である。そのため、setjmp()を呼び出…

C言語で多値返却

ちょっと古いけどhttp://d.hatena.ne.jp/yuyarin/20090825/1251136545の話。 C標準では。 C言語の仕様レベルでは多値返却にもっとも近いのは構造体の値返却だ。複数の値を返すという用途は充分に満たしている。 struct int_int_t { int x; int y; }; struct …

「(正しく)動けば良い」

「動けば良い」と言う人はエラーが起きてから「動かないじゃないか」と文句を言う。仮令、その人の操作が間違っていたとしても言う。ある「動けば良い」と言う人が酷いバグで右往左往しているのを見て(少なくともその人の)原因に思い当たった。 その人はコー…

問題はエンコーディングではないのだ。

http://itpro.nikkeibp.co.jp/article/COLUMN/20090208/324377/?ST=security&P=1からhttp://d.hatena.ne.jp/tohokuaiki/20090910/encodingの話。 ベースライン。 Webアプリケーション、ここでは一般的な用法として次の条件を満たすもの、の話に限定して進め…

「名は体を表す」とは限らない

名と実の関係は極めて厄介なものだ。全く関係がないということはないものの、どちらがどちらに影響を与えているかも判りにくいし、正の相関であるとも限らない。 完成された何かに対して後から名前を付ける。 この場合は「名は体を表す」ことが多い。という…

今の環境ならコンパイル・アセンブル・リンクを分ける必要はない。

C言語の処理過程を考えると大まかに次のようになっている。 人間の頭 編集 ソースコード パース 抽象構文木 コンパイル アセンブリコード アセンブル オブジェクトコード リンク 実行ファイル OSによる起動 プロセス プロセス実行 出力 これは必ずしも一斉に…

名前推論

http://shinh.skr.jp/m/?date=20090831の話。名前推論は面白い話なだけにひっかかるところも多い。 賛成できない、というか少しひっかかるのは名前推論の話。最初見た時はすごいなー面白いなーと思った記憶がある。 でもいつだったかその話をぼんやり思い出…

懐疑チェック

Archivesの話*1。 ・その測定を裏付ける(査読を通った)研究論文があるか? ・主張されている「変化」は他の測定でも同様に観測できて、矛盾のない結果になっているか? ・実験結果を説明するための「モデル」を「指標」として使おうとしていないか? ・標…

関数型言語に足りないもの

http://d.hatena.ne.jp/kilrey/20090814#p1の続き。 非正則正格評価対応DBMS 現行のRDBMSに適当なラッパーを被せても良いのだけど、それだと速度のメリットがない。初めから非正則正格ネイティブなDBMSがあれば状況が変わる(かもしれない)。 簡単なGUI言語 t…

自作言語完成したよ

言語の名前が変わった上に別名義で公開することになったので、あまり細かいことはここに書けないけれども。

関数型言語に思うこと

関数型言語を利用したアプリケーションは少ない。でももっと色々作れるのでは?という話。主にHaskellを念頭において書く。 Haskell製アプリケーションの実例。 Pugs Perl6インタプリタ。本家よりも先に実装。 darcs バージョン管理システム。パッチ志向。 x…

jCryptionが危険な理由。

http://www.moongift.jp/2009/08/jcryption/の話。http://takagi-hiromitsu.jp/diary/を検索すれば幾らでも情報は見つかるとは思うけれど、自分のためにも書いておく。 前振り。 このjCryptionはMan-In-the-Middle攻撃に弱いはずだ。どのように攻撃されるか…

超大作はマスな流行、単館系はニッチな流行、両者に自明な優劣はない。

http://d.hatena.ne.jp/HALTAN/20090802/p1で言及されたので再言及してみる。 前提。 私自身は同人的な「作者の持ち出しによる出版」を否定するつもりはない。むしろ100年先まで影響を残す作品を作るのなら、生活費くらいは手に入るが価値に見合う利益は得ら…

java.lang.String#hashCode()は微妙かも。

http://d.hatena.ne.jp/kilrey/20090718#p1と関係があるような、ないような。 いきなりソース google code search経由でhttp://hg.openjdk.java.net/jdk7/hotspot/jdkのソースを見たところ public int hashCode() { int h = hash; if (h == 0) { int off = o…

言語マニア的に答えてみる(ちょっと修正)

http://d.hatena.ne.jp/katzchang/20090724/p2への回答。 自分専用ツール(自由すぎる)を含めるとデータが怪しくなるので、業務と研究/OSSとを分けてみました。 業務で使っている/いた C C++ C# Python TCL/TK x86 Assembler PL/M 研究/OSSで使っている/いた*…