メソッドの書き手の数を数える

Squeak のような古典的な Smalltalk システムでは、メソッドのコンパイル時(編集、追加時)に書き手のイニシャル(Squeak システムでは Utilities authorInitials の値)が半ば強制的にタイムスタンプ情報に追記され、それはもちろん後から参照できます。

(Integer >> #factorial) timeStamp   "=> 'di 4/22/1998 14:45'(ダン・インガルス)"

タイムスタンプ情報が欠落しているメソッドも多数あるのでナンですが、この情報を手がかりにメソッドの書き手の数をかぞえることができます。

bag
bag _ Bag new. CompiledMethod allInstances do: [: method | | timeStamp | timeStamp _ [method timeStamp] ifError: ['']. bag add: ((timeStamp notEmpty and: [[timeStamp asDate class ~~ Date] ifError: [true]]) ifTrue: [timeStamp substrings first] ifFalse: [''])] displayingProgress: 'now counting...'. bag sortedCounts inspect; size "=> 169 "

手近な仮想イメージだと、170 人弱のようです。意外と少ないですね。