【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

2007-01-01から1年間の記事一覧

カレントディレクトリを変更するラッパー

ちょっとした必要に迫られてカレントディレクトリを変更するラッパーを作りました。

コンストラクタ名

構造体の実装の移行が完了しました。 LLPML/v0 (0.9-20071021) ブロックベースの実装のため、メンバ変数の初期化を普通の変数宣言と同じ書式で行えます。初期値代入やコンストラクタとの兼ね合いで、仕様を変更しています。

構造体を再実装

クロージャを検討したときに、関数を関数オブジェクトに見立てれば構造体を表現できるということに気付きました。それに沿ってブロックベースで構造体を再実装しています。 LLPML/v0 (0.9-20071016) プロトタイプベースの考え方でメソッドを定義すると、クロ…

クロージャ

今の仕組みのまま、特別な拡張なしにクロージャを実現できないか考えてみました。結論から言うと見送りですが、せっかく検討したので記録を残しておきます。

簡略化

数式に中置記法を取り入れて簡略化しました。 LLPML/v0 (0.9-20070930) 使用できるのはタグの子要素に限られます。フローなどはXMLのままです。そのため一見あまり変わらないように見えますが、数式部分は劇的に書きやすくなっています。HTML内のJavaScript…

記述性

昨日作ったC言語の浮動小数点数算出プログラムをLLPMLに移植してみました。特に問題なく動きます。出力するコードは問題なさそうです。ちなみに出力するコードに最適化はまったく施されていませんが、仕様が完全に固まるまでは最適化は行わない予定です。 LL…

IEEE 754 単精度浮動小数点数

C言語で浮動小数点数を算出するプログラムを書いてみました。

継承

LLPMLで構造体の継承ができるようになりました。 LLPML/v0 (0.8-20070924) これはオブジェクト指向のためというよりも、共通のパラメータを持った構造体を扱いやすくするためのものです。

コンストラクタ・デストラクタ

LLPMLでコンストラクタとデストラクタをサポートしました。 LLPML/v0 (0.7-20070917) C++やC#では、クラス名を変更したときにコンストラクタやデストラクタも変更する必要があります。これがいつも面倒だと感じていました。そのためD言語の仕様を真似て、ク…

言語仕様の分離

LLPMLで構造体のメンバ関数が定義できるようになりました。 LLPML/v0 (0.6-20070830) LLPMLではオブジェクト指向はあまり追求しないで、簡単に実装できて便利なものだけを追加する予定です。

ウィンドウ

LLPMLでウィンドウが表示できるようになりました。 LLPML/v0 (0.5-20070819) 構造体を定義すればすぐに表示できるかと思っていたのですが、イベント処理のための条件分岐などが必要なことに気付きました。そのため急遽、ブール演算や制御構造を実装しました。…

構造体

構造体を実装しました。メンバは32bit整数型限定です。 LLPML/v0 (0.4-20070816) 構造体のメンバへのアクセスを変数と同等にするため、変数処理の抽象化を行いました。またまた仕様が大きく変わっています。作りながら行き当たりばったりで抽象度を高める方…

関数の戻り値

関数が値を戻せるようになりました。コールバックもできるようになりました。 LLPML/v0 (0.3-20070815) タグを分離することで変数宣言を明確化したり、サンプルの冗長な部分を書き直したりしました。明確な完成イメージがあるわけではなく、とりあえず動けば…

関数

関数が記述できるようになりました。 LLPML/v0 (0.3-20070814) 今までベタ書きしていたのが関数にまとめられるようになったので、見通しが良くなりました。

ブロックとスコープ

LLPMLにブロックを実装して、変数のスコープが使えるようになりました。トップレベルのブロックではグローバル変数として.dataや.bssに、それ以下のブロックではローカル変数としてスタックに格納されます。 LLPML/v0 (0.2-20070805) 次はブロックを拡張して…

ASTオブジェクト

将来的にASTを直接操作してコードを編集するため、XMLソースから直接コードを生成しないで、一旦ASTオブジェクトに変換してからコードを生成するようにしました。 LLPML/v0 (0.1-20070729) XMLソースから直接生成する方がコードの見通しが良いのですが、XML…

Low Level Programming Markup Language

半年前、オブジェクトでアセンブリを組み立てるためのライブラリを作りました。 CompilerLib これを利用してXMLの簡単な言語処理系を作りました。低級言語なので Low Level Programming Markup Language (LLPML) と名付けました。 LLPML/v0 (0.1-20070722)

画像処理

C#

大量の画像を指定サイズに揃える必要に迫られました。縦横比を保ったままリサイズして、余った部分を切り落とします。こんな作業を一枚一枚フォトレタッチソフトでやるのは面倒なので、プログラムで一括処理しました。以下は主要部分の抜粋です。

Windows 2000 Serverに自動ログオン

Virtual PCのWindows 2000 Serverで実験していて、毎回ログオンするのが面倒になりました。レジストリでAutoAdminLogonを"1"に設定すれば次回起動時には自動ログオンできるのですが、1回きりで設定がクリアされてしまいます。 何か方法があるのかもしれませ…

パイプ進捗表示ツール

ファイルを標準出力に転送しながら進捗を表示する小さなツールを作成しました。 使用例 % sizecat src.tar.bz2.1 src.tar.bz2.2 | bzcat | tar xf - 49% [#########################-------------------------] 92/185 KB上例のようにアーカイブを展開する時…

簡易ダウンローダ

C++

HTTPでファイルをダウンロードするツールを作成しました。POSIX/Win32対応です。 ライセンス: パブリックドメイン https://bitbucket.org/7shi/httpget この手のツールはたくさんありますが、他のプロジェクトのブートストラップとしてソース込みで配布する…

入出力の自動生成

アセンブラと逆アセンブラは別々に作りますが、そのような一つの仕様に対して反対の動作をするものを、仕様から両方同時に生成できれば便利だと思いました。背景にある考え方として、抽象度を高めて行けば設計と実装が統合できるのではないか、というものが…

ネイティブコンパイラを作ろう

C#

ネイティブコードを出力するコンパイラが作りたくなったので、C#で作ってみました。 CompilerLib 言語処理系を搭載すれば自分自身を自分自身で記述できるでしょう(wikipedia:en:Eating one's own dog food)。そうすればC#から独立できます。もっとも単なるネ…