Rubyで静的型

$B$9$$$^$;$s!&!&!&!#@h$[$I$N%a!<%k$O(BHTML$B7A<0$GAw$C$F$7$^$$$^$7$?!#(B
$B%F%-%9%H7A<0$G:FEYAw$jD>$5$;$F$$$?$@$-$^$9!#(B

$B=i$a$^$7$F!#(B
$B:4!9LZ=SG7$H$$$&$b$N$G$9!#(B

$B$5$C$=$/K\Bj$G$9$,!"(B
$B7GBj$NDL$j!"(BRuby$B$N$h$&$JF0E8@8l$G!"@EE$J7?%A%’%C%/$r9T$&(B
$BJ}K!$K$D$$$F%"%$%G%"$r;}$C$F$$$^$9!#(B
$B$3$l$O;d$,CN$k8B$j!J$H$$$C$F$bBgJQ69$$HO0O$G$9$,!K$^$@@$$K(B
$B=P$F$$$J$$$h$&$J$N$G$9$,!"$3$l$r;H$&$H%@%C%/%?%$%T%s%0$r4^$a$?(B
$B$9$Y$F$NF0E*$J7?IU$1$r!“0l@Z$N7?;XDj$J$/!”@EE*$K9T$&$3$H$,(B
$B$G$-$^$9!#(B

$B$=$NJ}K!$O<!$G$9!#(B
$B#1!%4X?t$N0z?t$O$9$Y$F(BC++$B$G8@$&7?%F%s%W%l!<%H$H$9$k!#(B
$B#2!%7??dO@$r9T$&!#(B
$B#3!%%]%j%b!<%U%#%:%`$O!V<+F0HF2=!W$7$F9T$&!#(B

$B<+F0HF2=!"$3$l$,;d$N%"%$%G%"$J$N$G$9$,!"$=$l$O(BC++$B$N2>A[4X?t(B
$B%F!<%V%k$r!"%/%i%9$4$H$G$J$/(B
$B%]%j%b!<%U%#%C%/$K?6Iq$&JQ?t$K$D$$$F$N0lO"$N8F$S=P$7$H!"$=$N(B
$BJQ?t$K<B:]$KF~$l$i$l$k%%V%8%’%/%H$4$H$K:n$j!"<B9T;~!"JQ?t$,$I$N(B
$B%
%V%8%’%/%H$N7?$J$N$+$K$h$C$F!“2>A[4X?t%F!<%V%k$rA*$s$G!”$=$l$K(B
$B$D$$$F%*%V%8%’%/%H$N%a%s%P!<$r8F$S=P$9$H$$$&$b$N$G$9!#(B

$B$3$l$@$HJ,$+$j$K$/$$$H;W$$$^$9$,!“MW$OJQ?t$KF~$l$i$l$?!“F1$8%$%s%?!<(B
$B%U%’!<%9$rItJ,E*$K;}$D%*%V%8%’%/%H$N4X?t%F!<%V%k$N!”%a%b%j!<%^%C%T%s%0(B
$B$N:90[$r5[<}$9$k2>A[4X?t%F!<%V%k$r!”$=$NJQ?t$N$9$Y$F$N%]%j%b!<%U%#(B
$B%C%/$J8F$S=P$7$K$D$$$F!":n$k$H$$$&(B
$B$3$H$G$9!#$3$N2>A[4X?t%F!<%V%k$r!"(BC++$B$N$=$l$H6hJL$9$k$?$a!"0J2<$G$O(B
$B!V%-%c%C%W%F!<%V%k!W$H8F$V$3$H$K$7$^$9!#(B

$B$3$l$G$bJ,$+$j$K$/$$$N$GNc$r!#(B
X$B%%V%8%’%/%H$,%a%s%P!<(Ba, b, c,
d$B$r!"(BY$B%
%V%8%’%/%H$,%a%s%P!<(Bb, c,
d, e$B$r;}$A!"(B

if $BF0E*$J>r7o(B
    var = X
else
    var = Y
end
var.b
var.c

$B$N%3!<%I$,$"$k$H$-!#(B
var$B$O%]%j%b!<%U%#%C%/$K?6Iq$$$^$9!#$=$NGX8e$G$O!"(BX$B$K$D$$$F$N%a%=%C%I(B
b, c$B$N;HMQ!J;HMQ$@$+$i(Bd$B$O4^$^$J$$!K$K$D$$$F$N%-%c%C%W%F!<%V%k$,(B
$BB8:_$7!"$=$l$,(Bvar =
x$B$N$H$-(Bvar$B$KBeF~$5$l!"(Bvar.b$B$G%-%c%C%W%F!<%V%k$N(B
$B%a%s%P!<(Bb$B$,(BX$B%%V%8%’%/%H$N%a%s%P!<(Bb$B$r;2>H$7$F!"(BX$B$N(Bb$B$r8F$S=P$7$^$9!#(B
var = y$B$N$H$-$bF1MM$G$9!#(Bvar$B$KF~$k(BX,
Y$B$N%-%c%C%W%F!<%V%k$N%l%$%"%&%H(B
$B!J(Bb, c$B$N=g!K$O(BX,
Y$B6&$KF1$8$G!"$@$+$i$I$A$i$N!J<B9T;~J,$+$i$J$$!K(B
$B%-%c%C%W%F!<%V%k$N8F$S=P$7$K$b@EE
$KB+G{$G$-$^$9!#(B
$B%-%c%C%W%F!<%V%k$O$=$l$>$l6&DLE@$NL5$$(BX, Y$B$N%a%b%j!<%l%$%"%&%H(B
$B!J(Bb, c$B$K$D$$$F$N!K$X$N%]%$%s%?$r$=$N%a%s%P!<$H$7$F;}$A$^$9!#(B
$B$3$&$7$F%@%C%/%?%$%T%s%0$,@EE*7?B+G{$r$b$C$F$G$-$k$h$&$K$J$j$^$9!#(B

$B0J>e$,<+F0HF2=$N@bL@$G$9!#:Y$+$$$3$H$O$^$@$"$j$^$9$,!“BgBN$O(B
$B$3$s$J46$8$G$9!#=EMW!J$H;d$,;W$C$F$$$k!K$J$N$O!”$3$l$,7?@k8@$J$/(B
$B@EE7?B+G{$9$k$?$a$KI,MW$J:G8e$NMWAG$H;W$o$l$k$3$H$G$9!#(B
$B$3$l$G(BRuby$B$G$b2?$i%3!<%I$rJQ99$9$k$3$H$J$/@EE
7?B+G{$,2DG=$H(B
$B$J$j$^$9!#(BRuby$B$bCY$$8@8l$+$i!"4hD%$l$P(BC$BJB$_$KB.$$8@8l$K$J$l(B
$B$k$+$b$7$l$^$;$s!#$=$&$J$k$H:#$^$GB.EY$,=EMW$JItJ,$O(BC$B$G=q$3$&(B
$B$H$$$&$3$H$O$J$/$J$j!"5U$KB.EY$,=EMW$@$+$i$3$3$O(BRuby$B$G=q$3$&$H(B
$B$$$&$3$H$K$b$J$k$+$b$7$l$^$;$s!#(B
$B$b$C$H$b%3%s%Q%$%k$H$$$&<j=g$,7y$o$l$l$P$=$l$^$G$G$9$,!#(B

$B0J>e!"$b$7$3$s$J$NEv$?$jA0$@$h!"$H$$$&$3$H$G$"$l$P?=$7Lu$"$j$^$;$s!#(B
$BD9J8<:Ni$7$^$7$?!#(B


$B:4!9LZ=SG7(B
[email protected]


???
???

Ruby???
bm_app_pentomino???

var.c
???b,
c???

???

???var???
???var???
???
???
???

???
???(???)???
???

???
???

???O(1)???
???(???Cuckoo
hashing)???(???)???
???

???

???

$B$^$D$b$H(B $B$f$-$R$m$G$9(B

$BF0E8@8l$G@EE7?%A%'%C%/$r$9$k%“%$%G%#%”$H$7$F$O(BSoft Typing$B$H(B
$B$+(BGradual Typing$B$H$+$$$&$h$&$J5;=Q$K$D$$$F8&5f$,9T$o$l$F$$$k(B
$B$h$&$G$9!#:#2s$N:4!9LZ$5$s$N%“%$%G%#%”$O(BSoft Typing$B$K6a$$$+$J(B
$B$“!#:G6a!”(BRuby$B$G$b(BPython$B$G$b$3$N$h$&$J3+H/$K$D$$$FCmL$7$F$$(B
$B$k?M$O(B($B;d$r4^$a$F(B)$BB?$$$h$&$J$N$G!"@'Hs9=A[$r?<$a$F$$$?$@$1$l(B
$B$P$H;W$$$^$9!#(B

In message “Re: [ruby-dev:48768] Ruby$B$G@EE*7?(B”
on Tue, 23 Dec 2014 11:42:26 +0900, “Toshiyuki Sasaki”
[email protected] writes:

$B:4!9LZ$G$9!#(B

$B$^$D$b$H(B $B$f$-$R$m$G$9(B

$BF0E8@8l$G@EE7?%A%’%C%/$r$9$k%"%$%G%#%"$H$7$F$O(BSoft Typing$B$H(B
$B$+(BGradual Typing$B$H$+$$$&$h$&$J5;=Q$K$D$$$F8&5f$,9T$o$l$F$$$k(B
$B$h$&$G$9!#:#2s$N:4!9LZ$5$s$N%"%$%G%#%"$O(BSoft Typing$B$K6a$$$+$J(B
$B$"!#:G6a!"(BRuby$B$G$b(BPython$B$G$b$3$N$h$&$J3+H/$K$D$$$FCmL$7$F$$(B
$B$k?M$O(B($B;d$r4^$a$F(B)$BB?$$$h$&$J$N$G!"@'Hs9=A[$r?<$a$F$$$?$@$1$l(B
$B$P$H;W$$$^$9!#(B

$B$d$O$j;d$R$H$j$N%"%$%G%"$G$O$J$+$C$?$N$G$9$M!#(B
$B$3$NDxEY$N%"%$%G%"$J$i#1#0#0?M$O;}$C$F$$$=$&$H$O;W$C$F$$$^$7$?$,!#(B
$B$3$&$$$C$?5!9=$,@.=O$7$F!"(BRuby$BEy$NF0E*8@8l$G$b<h$jF~$l$i$l$k(B
$B$3$H$r4j$C$F$$$^$9!#(B