Comment detail
コード中の文字の頻度分析 (Nested Flatten)Squeak Smalltalk は、組み込みクラスのみならず処理系自体も Smalltalk 自身で記述されていて、その全ソースコードを処理系内からアクセスできるようになっています。そこで、これを解析してみました。
使用したコード(全クラスの全メソッドのソースを得てその文字列中の文字を bag に蓄積し、最後に頻度順にソート)と、全 13638278 文字中、1000 文字以上使われている文字の頻度を示します。
原則、Smalltalk は読み下したときに英文っぽくなるような命名をするので、結果、英単語における使用頻度(E、T、A、O、I、N…)に準ずる結果になりますが、記号については、キーワードメッセージで引数の前に使われるコロン、式の区切りのピリオドのほかにリテラルに使用する記号が比較的多くなるはずで、じっさいそのようになっています。
余談ですが、改行文字の数から、Squeak Smalltalk システムは約 30 万行の Smalltalk コードで記述されていることも分かります。これと同じことを一桁少ない行数で記述できる言語処理系を作るチャレンジが、今、アラン・ケイたちが取り組んでいるプロジェクトです。
http://vpri.org/html/work/ifnct.htm
1444427->Character space 1184081->$e 783875->$t 692975->$r 657882->$a 622461->$s 597060->$o 575035->$i 559122->$n 513017->Character tab 509706->$l 340916->Character cr 308729->$c 304427->$d 299400->$: 250870->$f 233671->$m 228063->$u 223102->$h 210051->$p 167306->$. 152494->$g 127057->$1 113908->$y 108249->$b 101596->$w 101168->$6 98043->$S 88101->$0 80005->$C 79576->$v 75559->$" 74041->$2 69815->$T 66799->$F 63860->$' 63131->$x 61565->$[ 61564->$] 59878->$A 57766->$3 57378->$) 57345->$( 55143->$4 52495->$7 51905->$k 49030->$5 48466->$P 48187->$N 46052->$B 45787->$= 44959->$M 40782->$8 40730->$I 38608->$^ 37685->$| 37462->$D 35494->$9 33225->$- 31526->$O 30804->$R 30157->$_ 29878->$E 25376->$z 24698->$L 23217->$# 20746->$, 19200->$W 18588->$V 14915->$j 13496->$U 12687->$; 11011->$H 10515->$/ 10070->$+ 9078->$q 7555->$> 7128->$G 6569->$K 6320->$@ 5752->$< 4510->$* 4043->$Y 3973->$X 3040->${ 3019->$} 2887->$$ 2624->Character lf 2586->$Q 2436->$J 2193->$Z 1361->$~ 1104->$ 1097->$? 1004->$!
1 2 3 4 5 6 7 8 9 10 11 12 | | bag |
bag := Bag new.
'Analyzing all source code...'
displayProgressAt: Sensor cursorPoint
from: 0 to: Smalltalk classNames size
during: [:bar |
| count |
count := 0.
SystemNavigation default allBehaviorsDo: [:class |
bar value: (count := count + 1).
class selectorsDo: [:sel | bag addAll: (class sourceCodeAt: sel)]]].
^bag sortedCounts
|





sumim
#6447()
[
Smalltalk
]
Rating0/0=0.00
Squeak Smalltalk で。
とりあえず、自身のソースコード文字列を得て解析結果を返すもの。
Rating0/0=0.00-0+
1 reply [ reply ]