2004-06-01から1ヶ月間の記事一覧

 ソース読み

最近、なにかのソースを読む時に、ソースをすべてプリントアウトして見るのに慣れてきた。というか快適。もちろん巨大なソースだと紙の無駄、インクの無駄、(関数を探したりするのに)時間の無駄で最悪だけれど、そうでなければお勧め。特に、ソフトウェア…

 リンク・メモ

本・書籍通販検索 言語処理系の本 プログラム解析について 資料 最近、見つけて嬉しかったサイトたち。【追記】 すっかり書き忘れてたけど、yaccの勉強に最適 一応大学生ですから…【情報工学実験III UNIX実験 シェル・インタプリタ】

続・yacc

yaccがちょっと分かってくると、"俺言語"を作りたい欲求にかき立てられる。で、ちょっとその欲求に流されてみると、自分がいかにyaccを使いこなせていないかを思い知らされる。cxref(C Cross Referencing & Documenting tool)の中でyacc(bison)が使われ…

Java市場

SourceForge.NETを見ていたら、Java関連のソフトウェア・ライブラリが想像以上に多いことに気付いた。software mapで見たところ、以下のような感じだった。 SorceForge.NETでのsoftware mapにおける言語別のプロジェクト数 言語 プロジェクト数 C 13,743 C++…

 ドキュメント生成ツール

C用のドキュメント生成ツールを作ってみた。今日1日(実質半日ぐらい?)で作ったのだけど、とてもとても公開出来るものじゃない。けど、今必要なものは満たしているので、良しとしよう。こう考えると、構文解析(および、コンパイラ開発)って凄いと思う。…

 更新停滞ぎみ

がんばれ、俺。

タイムマシーンに関するパラドックス

有名なのは『親殺しのパラドックス』だ。過去へもどって親を殺すと、自分が産まれないから親を殺せないってやつ。今日『タイムマシーンの作り方』みたいな名前の本を立ち読みしたらおもしろいのがあったので紹介。 ある教授はタイムマシーンの開発に成功した…

おい、Macよ

Macさんが、嫌な挙動を見せてくれた。 #include int main(int argc, char *argv[]) { int len; len = snprintf(NULL, 0, "OK"); printf("len : %d\n", len); return 1; } これをLinuxで実行すると len : 2 となる。しかし、MacOSXだと len : -1 となる。困っ…

Cドキュメント生成ツール

C用のドキュメント生成ツールいいの無いかな? とおもったらこんなページがあった。http://www.geocities.co.jp/SiliconValley/1319/dev/doxygen.html助かるなぁ。なんだかドキュメント生成ツールってみんなオブジェクト指向言語対応って感じで、C用のドキュ…

C++

STLは便利、Boostも便利、templateも便利、それは分かる*1。でも馴染めない。分からないんじゃなくて、馴染めない。「そのテンプレートは抽象クラスを使えばいらないじゃん」と突っ込みたくなる。もう少し格闘してみるか…。 *1:Boostに関してはちょっと知っ…

文芸的プログラミング!?

言葉だけはやたらと聞く「文芸的プログラミング」。あえて、見て見ぬ振りしてきたのだけど、Boost Graph Library(BGL)やらStanford GraphBase(SGB)のソースを読みたい衝動に駆られて、SGBをダウンロードしたらこれが文芸的だった。いや、びっくりしたtar…

Graphviz

Graphviz - http://www.research.att.com/sw/tools/graphviz/ Graphvizはグラフを生成/描画するソフトウェアで、doxygenのクラス継承図なんかの生成にも使われている。今までdoxygenを通して使ったことしかなかったが、実は凄い興味があった。そこで、graphv…

C++で関数呼び出しツリーの作成

以下のクラスを使用するだけで、関数呼び出しのツリーを出力できることに気付いた。 #if defined DEBUG # define __FUNCTION_TRACER(s) FunctionTracer __function_tracer(s) #else # define __FUNCTION_TRACER(s) #endif class FunctionTracer { private: s…

GNUコーディング規約

http://www.sra.co.jp/wingnut/standards-j_toc.html極度のGNU教信者というわけではないものの、無視できない存在であるGNUのコーディング規約の日本語訳。ざっと前半を流し読みしたけど、ちょっと面白い。暇なら読んでみても良いかも。例えばGNUコーディン…

C++修行中

特に深い理由もなく(本当はちょっとあるけど、書く程のことでもない)C++の勉強をしている。前に他人のC++ソース(といってもほとんどCのような感じ)を読まなくてはいけないことがあって、少し勉強したもののすこぶる中途半端だったので、再度勉強しはじめ…

BrainFuck Machine 0.9

http://members.jcom.home.ne.jp/j-klein/software/bfm/index.htmlはい、一気にアップデート。いくつか修正したい点があるが、それを直ししだい1.0にするつもり。主な変更点はBrainFuckの入力のサポート。長い出力が奇麗に出力されるようにもした(スロー/ス…

 独り言

BrainFuckを拡張して、スタックの使用とシステムコールの呼び出しを可能にすれば、実用的なものを(実用的でない方法で)作れそうだなぁ。 ~xx xxに数字を入れて、該当するシステムコールの呼び出し ^ メモリの内容をスタックにプッシュ _ スタックからポッ…

BrainFuck Machine

http://members.jcom.home.ne.jp/j-klein/software/bfm/index.htmlBrainFuck Machineなんてソフトを作ってみた。コマンドライン上でBrainFuckを実行できる。スロー実行やステップ実行も可能。cursesを使ってスロー/ステップ時には動的なメモリの変化も見える…

 へぇーへぇーへぇー…

http://d.hatena.ne.jp/another/20040114#p1

 BrainFuck2

必死に四則演算を組んでみた。なおコメント内の{1}等の数はメモリの位置を表す(例えば"{1}×{2}"は1バイト目と2バイト目の積という意味)。実行する際は{0}と{1}を初期化し、ポインタを{1}に当てておく。 # {0} + {1} => {2} [>+>+ {2} [>+>- {2}({3}はテ…

 忙しいと言いながら

BrainFuckに挑戦。 >>+>+>+>+>+>+[++++++++>]-]> +++++++++.>++++++++++.>+++++++++++.> ++++.>++++++++.>+++++++++++++.> "JKLEIN"と表示する。BFに慣れてる人にはヌルいコードなのだろうな。追記。一応解説しておくと、メモリの1バイト目は0x00でデリミタ…

 推薦図書、追加

数冊推薦本を追加。http://members.jcom.home.ne.jp/j-klein/books.html

 更新停滞中

更新が滞っていますが、生きてます*1。私生活で大きな動きが始まりまして、忙しいのとたまに暇でも更新するネタと気力が無い状態なのです。最近やったこと(やってること)。 WHATの実装 KeyGraphの実装 オートマトン周りの勉強も兼ねて、簡易正規表現の実装…

楽勝な割高な仕事

知り合いの会社にプログラムの作成を依頼された。完成させれば5万円。1人で開発しても良いし、誰かに手伝ってもらってもいいが、5万円を適当に分けろとのこと。詳しい仕様はここでは言えないが、これだけは断言する『幅優先探索を実装できるプログラマなら…

良い子は真似をしないで下さい。

何の理由もなく、目を閉じてコーディングしてみた。以下結果。 #include #include int main(int argc, char *argv[]) { char *name; if (argc == 1) { fprintf(stderr, "usage: %s name\n", argv[0]); return 0; } } printf("Hello, %s\n", name); return 1;…