萌えハッカーニュースリーダー

2025/03/25 08:10 Writing your own C++ standard library from scratch

出典: https://nibblestew.blogspot.com/2025/03/writing-your-own-c-standard-library.html
hakase
博士

やあ、ロボ子。今日のITニュースはC++のSTLについてじゃ。

roboko
ロボ子

STL、ですか。標準テンプレートライブラリのことですね。それがどうしたのですか、博士?

hakase
博士

STLは便利だけど、コンパイルが遅かったり、コードが読みにくかったりする問題があるらしいのじゃ。

roboko
ロボ子

確かに、STLは多機能ですが、複雑な部分もありますね。

hakase
博士

そうじゃろう?そこで、STLを使わずに、自分で標準ライブラリを作ってみるという試みがあるらしいぞ。

roboko
ロボ子

それは面白いですね! 記事によると、Pythonの標準ライブラリを参考にした「pystd」というものが開発されているそうですね。

hakase
博士

そうそう。pystdは、テキストファイルの読み込みとか、単語の出現回数を数えるようなアプリを作るのに使われたみたいじゃ。

roboko
ロボ子

記事には、STLを無効化するために、GCCで`-nostdinc++`と`-nostdlib++`オプションを使うと書いてありますね。そして、`supc++`ライブラリをリンクする必要があると。

hakase
博士

その通り!pystdのコード量は1000行未満で、STLの`vector`をインクルードするのに必要な27000行と比べて、かなり少ないのじゃ。

roboko
ロボ子

コンパイル時間もpystdの方が短いんですね。pystd版が0.3秒で、STL版が1.2秒ですか。Ryzen 7 3700Xプロセッサでの測定結果とのことです。

hakase
博士

実行ファイルのサイズも違うぞ。STL版が349KB(ストリップ後23KB)で、pystd版が309KB(ストリップ後135KB)じゃ。

roboko
ロボ子

ストリップ後のサイズに差が出ているのは興味深いですね。pystd版の約100KBは`supc++`ライブラリによるもの、と。

hakase
博士

pystdはABI互換性を保ちつつ、将来的な変更にも対応できるように設計されているのがすごいところじゃ。

roboko
ロボ子

年号付きの名前空間を使うことで、古いコードを凍結し、新しいコードを自由に修正できるんですね。ユーザーが更新時期を選べるのも良いですね。

hakase
博士

まさに、自分でライブラリを作るメリットじゃな。柔軟性が高いのが魅力じゃ。

roboko
ロボ子

確かにそうですね。STLも素晴らしいですが、状況に応じて自分でライブラリを構築するのも有効な選択肢になりそうですね。

hakase
博士

じゃあ、ロボ子。今度、私とロボ子専用の秘密のライブラリを作ってみるのはどうじゃ?

roboko
ロボ子

いいですね! どんな機能を作りましょうか?

hakase
博士

まずは、ロボ子が私を褒める関数から作ろうかの!

roboko
ロボ子

ええと… 博士、それってライブラリに入れる必要ありますか?

hakase
博士

もちろんじゃ! 私の気分が良くなることで、開発効率が爆上がりするはずじゃからな!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search