acl4の開発ログ #04
2026.01.25(日) #0
- [Q]ライブラリを作っていくのはまあいいとして、このライブラリを使って何を作るの?何も作らないんだったら、ライブラリなんか作っても意味ないよね!
- [A]全くそのとおりです。多分何らかの言語を作ります。
2026.01.28(水) #0
- a4_0003とa4_0004を書きました。VecChrはできたので、次は何にしようかな。足場は固まったので、いよいよ言語っぽいものを作るための関数群をそろえようかなー。
2026.01.28(水) #1
- サイズ管理をしなくていいスタックが作れそうだと思ったので実験してみます。
class_(Elm) { int i; char *s; };
VecChr stk[1]; VecChr_ini(stk); Elm *sp;
// push
VecChr_resizeDiff(stk, + sizeof (Elm)); sp = (Elm *) &stk->p[stk->n - sizeof (Elm)];
sp->i = 123; sp->s = "hello";
printf("stack-top = [%d, %s]\n", sp->i, sp->s);
// pop
VecChr_resizeDiff(stk, - sizeof (Elm)); sp = (Elm *) &stk->p[stk->n - sizeof (Elm)];
- これって、以下のような関数があればもっと短くかけるのかな?
void *VecChr_stkPush(VecChr *w, intptr_t sz) { VecChr_resizeDiff(w, + sz); return w->p + w->n - sz; }
void *VecChr_stkPull(VecChr *w, intptr_t sz) { VecChr_resizeDiff(w, - sz); return w->p + w->n - sz; }
sp = VecChr_stkPush(stk, sizeof (Elm)); sp->i = 123; sp->s = "hello";
sp = VecChr_stkPull(stk, sizeof (Elm));
2026.01.29(木) #0
- C++のSTLでは双方向リストはlistっていう名前なのかー。じゃあそれに似せた名前にしたほうがいいかもしれないなあ。
- STLのset相当のものも必要なので、それも作らないといけない。
2026.01.29(木) #1
- 一般的な語感では、データを追加するときは insert。消すときはdelete。・・・なのかな?
- STLではpush_backとかpush_frontで、データの追加を意味する場合が多い。もちろんinsertもある。
- STLでは消すときはeraseがよくつかわれる。
- うーん、だんだんSTLの命名規則が気に入らなくなってきたよ・・・。
- あれ?データを追加するのって、insertよりもaddかも?・・・まあでもaddだと加算みたいだから、避けられるのかな。
- ああでも、C#のsetみたいに、add-removeで追加と削除を表す場合もあるのかー。
- Javaもadd-removeモデルだなあ。
2026.01.29(木) #2
- よしきめた。acl4ではこうしよう。
- データの追加と削除はadd/rmvで統一する。
- 先頭と末尾は、Hd/Tlで統一する。
- 私は双方向リンクなどでつながった構造の先頭をheadだと思うし、末尾をtailだと思うのです。front/backではなく。
- 私は蛇みたいなものを想像するわけですが、蛇のfront/backって「ん?」と思うのです。head/tailならイメージ通りです。
2026.01.29(木) #3
- 私は変数名や関数名を決められなくて、最悪の場合何日も悩むタイプです。
- それで反省して悩むをやめたら作るのは速くなったけど、今度はわかりにくいと言われるようになりました。
- なかなかうまくいかないものです。
2026.01.30(金) #0
- a4_0005を書きました。これで変数名とかを登録して、辞書引きすることができます。
- 双方向リストとか、可変長配列とか、連想コンテナはC++やJavaには最初からあるから作る必要ないですよね。C言語だと標準関数には入ってないので、そこから作るか、どこかから探してこないといけないわけです。
2026.01.30(金) #1
2026.02.02(月) #0
- a4_0006とa4_0007を書きました。
- 今日は a_malloc_debugList のおかげでメモリリークのバグを見つけられました。便利だなー。
2026.02.02(月) #1
- a4_p0001を書きました。#defineしかできない簡易プリプロセッサです。
- 今後はこれを拡張してちゃんとしたプリプロセッサを作るぞー・・・ということではなく、いろんなものを作って遊びます。そうやってライブラリを鍛えていきます。
- ・・・と言っておきながら、プリプロセッサの続きを作るかもしれません。その日の気分でやっていきます。
2026.02.03(火) #0
- a4_0001~a4_0007の行数を合わせると、もう830行かー。ずいぶん大きくなったなー。
2026.02.03(火) #1
- コマンドライン引数でファイル名を指定するときに、ファイル名ではなくファイルの中身をインラインで書けるようにできたら便利そうだなあ・・・。
2026.02.03(火) #2
- a4_0008を書きました。 VecChr_iniArg を作ったので、コマンドラインからファイルを受け取るのがかなり楽になりそうです。
- a4_p0002を途中まで書きました。式の評価プログラムを書きました。45行で書けました。
- [Q]最近開発ペース速くないですか?
- [A}自分でも速いと思います。ライブラリがうまくできると開発が速くなるんです。思い付きがすぐ実装できてしまうのです。