* kbcl0のページ
-(by [[K]], 2019.04.27)
** (0) はじめに
-私は、オリジナルの言語やライブラリを作るのがいかに楽しくて役立つのか、まだまだ多くの人には知られていないのではないかと思っています。だからその楽しさを知ってもらうために、私が自分の開発過程を解説付きで紹介したいと思います。
** (1) いきさつ
-私は今回はライブラリを作ろうと思います。なぜ言語にしなかったのかというと、言語は昨年せっせと作ったので今度はライブラリにしようと思ったのです。
--昨年の言語への取り組みは以下のページで見れます。
--''TL-1'' : たった65行でもプログラミング言語が作れる! → [[text0001]]
--''TL-2'' : 変数名が二文字以上にできる → [[text0002]]
--''TL-3'' : ループ処理をサポートして実行速度を測定 → [[text0003]]
--''TJ-01'' : JITコンパイラ化を目指して準備(1) → [[text0004]]
--''TJ-02'' : JITコンパイラ化を目指して準備(2) → [[text0005]]
--''TJ-03'' : JITコンパイラ化に成功し、インタプリタとしては異次元の速さへ → [[text0006]]
--それ以降: 詳細は省略されていますが、ここで紹介しています → [[page0017]]
-ライブラリというか関数を作るというのは、言語が標準で用意している拡張方法だと私は思っています。つまり新しい言語を作らなくても、新しい機能を気軽に言語に追加できるわけです。これって素敵ですよね。だから私はライブラリを作ろうと思ったのです。
-ライブラリで言語の機能を増やした場合、その新機能の呼び出しは関数呼び出しで書くしか方法がないですが、言語を作ると新しい書き方もできるようになります。そういう新しい書き方がどうしてもやりたくなったら、やっぱり言語を作るしかないです。・・・逆に言えば、書き方へのこだわりがないのなら、たいていはライブラリで十分なのです。
----
-ということで2019年の4月くらいから''[[kclib1>kclib1_0000]]''という小規模なC言語向けのライブラリを作っていたのですが、C言語の範囲でできることに限界を感じ、だんだんC++が非常にうらやましくなってきて、じゃあC++向けで出直そうと思いました。それがこの''kbcl0''です。
-ただし私はC++のすべての機能を使う気はなく、ごく一部の機能だけを使います。いわば「better C」としての使いかたです。
-使うコンパイラはgccのC++の32ビット版を想定しています。
** (2) 主な特徴(何を目指しているライブラリなのか)
-少ない行数でプログラムが書けるようになることを目指します。
-究極の性能とか、究極のメモリ使用効率とかは追求しません。自分のフルパワーの70%くらいで気軽に作ります。それならバグも入り込まないでしょう。
-ライブラリ内の関数を利用してさらに別の新しいライブラリ関数を作るという「積み上げ」を目指します。そうやって少しずつ上に登っていきたいのです。

** (3) もくじ
|[[kbcl0_0001]]|''開発日記#1''|2019.04.27~|
|[[kbcl0_0002]]|kmalloc|標準のmalloc/freeよりも10倍以上高速, inUse()が便利|
|[[kbcl0_0003]]|KAutoreleasePool|使わなくなったオブジェクトを自動でfreeしてくれる便利な仕組み|
|[[kbcl0_0004]]|KIndexS/HC/HO/HS|二分探索用のインデックスやハッシュテーブルを作るクラス|

//|[[kclib1_0001]]|kerrorExit|エラー処理を少しでも書きやすく|
//|[[kclib1_0002]]|kqsort|コールバック関数にパラメータを渡せるように|
//|[[kclib1_0003]]|kpopCount32, kpopCount64, kgetMsb32|ビット演算系です、あとで必要になるので(たぶん)|
//|[[kclib1_0004]]|KPtrPool|サイズが固定の高速なmalloc/freeもどき|
//|[[kclib1_0005]]|KMalloc|標準のmalloc/freeよりも12.5倍も高速!|
//|[[kclib1_0006]]|KAutoreleasePool|使わなくなったオブジェクトを自動でfreeしてくれる便利な仕組み|
//|[[kclib1_0007]]|''開発日記#1''|2019.04.16~|
//|[[kclib1_0008]]|KSizPtr|可変長データを簡単に扱うための仕組み|
//|[[kclib1_0009]]|KSizPtr_addFile, kreadFileA, ksgetsA, kcutCrLfM, kstrncpyA|ファイルを簡単に読み込む関数|
//|[[kclib1_0010]]|KIndexS|データをソートして管理するためのインデックス|

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS