>>227
> Kernel-Objects BooleanのifTrueが
> インライン展開されてるから書かれてない

もし Boolean >> ifTrue: のことなら、処理が書かれていないのではなくて、
self subclassResponsibility 、つまりサブクラスでオーバーライドせよというコードで指示がされているだけで、
実際にそれに従い、True >> ifTrue: 、False >> ifTrue: の方に(普段はインライン展開されてしまうので
無視されますが、明示的にコールしてやりさえすれば)動くコードが書かれています。

たとえば True >> ifTrue: メソッドは、こんな風に明示的にコールできます。
true perform: #ifTrue: with: [3] "=> 3 "
True >> #ifTrue: valueWithReceiver: true arguments: {[4]} "=> 4 "

他のインラインされるメソッド群は MessageNode class >> initialize で確認できますが、
(Kernel-Objects MessageNode の class 側に切り替えてでてくる initialize メソッド定義内)
whileTrue: を除いては、前述の ifTrue: 同様、明示的にコールしても
動くコードで書かれているので短い記述になっていることにはあまり寄与していないように思います。

そういう意味では Float >> + のように <primitive: 41> などといった記述があるメソッドは
実処理が仮想マシンやプラグインにあるので、具体的なソースは書かれていないことになります。
これはちょっとコード量の削減に寄与しているかもしれません。

余談ですが、<primitive: 41> などの後に書かれているのは、仮想マシンなどに記述された関数のコールが
失敗した場合に実行されるフォールバックコードで、これは Smalltak で記述されています。

個人的には Smalltalk のコードが短く感じるのは、出来ることの印象に反して
実質的にはコード量なりの機能しか実装されていないからだと思います。
C++ などで書かれたものと厳密に(たとえば数理学的に)同等の機能を記述しようと思ったら
それなりのコード量になるのではないでしょうか。