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という小規模なC言語向けのライブラリを作っていたのですが、C言語の範囲でできることに限界を感じ、だんだんC++が非常にうらやましくなってきて、じゃあC++向けで出直そうと思いました。それがこのkbcl0です。
  • ただし私はC++のすべての機能を使う気はなく、ごく一部の機能だけを使います。いわば「better C」としての使いかたです。
  • 使うコンパイラはgccのC++の32ビット版を想定しています。

(2) 主な特徴(何を目指しているライブラリなのか)

  • 少ない行数でプログラムが書けるようになることを目指します。
  • 究極の性能とか、究極のメモリ使用効率とかは追求しません。自分のフルパワーの70%くらいで気軽に作ります。それならバグも入り込まないでしょう。
  • ライブラリ内の関数を利用してさらに別の新しいライブラリ関数を作るという「積み上げ」を目指します。そうやって少しずつ上に登っていきたいのです。

(3) もくじ

kbcl0_0001開発日記#12019.04.27~
kbcl0_0002kmalloc標準のmalloc/freeよりも10倍以上高速, inUse()が便利
kbcl0_0003KAutoreleasePool使わなくなったオブジェクトを自動でfreeしてくれる便利な仕組み
kbcl0_0004KIndexS/HC/HO/HS二分探索用のインデックスやハッシュテーブルを作るクラス

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-04-28 (日) 22:07:24 (1816d)