コードリーディング対象としての標準ライブラリのすゝめ

年頭において、初心を忘れないように書いておく。

新しいプログラミング言語の使い方を学ぶ時、個人的に、公式のチュートリアル/コーディングスタイル/リファレンスを参照するのと並行して、当該言語の標準ライブラリのソースコードを読むことが多い。

全くのプログラミング初心者には推奨できない手法だ。しかし、学習者が単なる「当該言語の初心者」でしかなく、関数やクラスなどのモジュール化機構による機能分割に慣れ親しんだプログラミング経験者ならば、話は違う。

大抵において、標準ライブラリの中身は、不要な部分が削られて小さくまとめられた単機能であり、手のひらサイズのコードで実現されている――だから読んで理解しやすい。昨今の言語ならば、REPLで振る舞いを確認することも容易だろう。

最近の主流言語の多くでは「言語仕様の設計者≒当該言語の最もメジャーな処理系の開発者≒『最もメジャーな処理系』に付属する標準ライブラリの設計・実装者」の図式が比較的成立しやすい。そのような環境においては、標準ライブラリの実装者は当該言語のグルだ。傾向として「言語設計者の思想」を強く受け着いたコードを書くはずである。

結果として、十分にレビューとテスト済みの、無駄が取り除かれた、その言語らしさが凝縮された短いコードを読むことができる。

学習の目的が「当該言語でのコーディング時にフラストレーションが溜まらない程度に、言語の流儀に慣れたい」であれば、標準ライブラリのコードを読んで真似することにより、足切りをクリアできる水準に比較的短時間で到達できる。

この方法を伝授された時の言語はC言語で、BSDユーザだった当時の先輩が構築したFreeBSDマシンにリモート・ログインして、BSD libcの文字列関数*1のコードを読むよう勧められた。まだGitなんて影も形もなかったころで、Webベースでのコードリーディングが堪らなく遅かった時代だ。System source tree込みでFreeBSDをインストールして、EmacsないしVim/nviでタグジャンプを駆使しつつBSD libcのコードを読む、というのは割とベターな方法ではあった。

最近ガッツリ学んだ言語はKotlinだが、GitHub公式のリポジトリがあり、その中に標準ライブラリのコード一式も含まれている。ブラウザ・ベースでの閲覧で十分ならば、ちょっと検索するだけでコード自体にたどり着いてしまう――という事実には、隔世の感を禁じ得ない。ただ、興味深いことに、言語は変われども「読みやすいのは文字列とコレクション操作」という感想に変わりはない。

*1:一般にstring.hに定義されている関数群のこと。