Boo
昨日の,Matzにっきより.
.Netで動くPython文法の静的型スクリプト言語.かっこいいなあ.
型推論がある.
["Hello", 3]
みたいな配列はObjectの配列になってしまうみたい.しかたがないかもしれないが,残念ではある.typing rubyはもうちょっとアグレッシブな感じにしたい.なるかどうかはわからない.課題が山積み.
もう一つ面白い機能は,duck typeとか言うもので,「〜 as duck」として宣言した変数に関しては全てが動的型付けで処理されるらしい.VBのVariant変数みたいなもんか.
今度試そう.
最近は,オブジェクト指向言語に型推論を入れても,プログラミングする側としては,いまいち嬉しくない気がしてきている.例えば,
int foo(IHoge hoge, IHuga huga)
という宣言は,hogeとhugaがIHogeとIHugaというインタフェースを実装したクラスのインスタンスであればなんでもいいことを主張している.この関数を利用するプログラマの立場では,hogeとhugaに関して実装すべきインタフェースとそのインタフェースが提供するメンバに関して期待されている条件がすぐにわかって,これはむしろ便利である.
これを,
int foo(hoge,huga)
書けても,IHogeとIHugaに関する情報が欠落するだけであり,実はちっとも嬉しくないとは言えないだろうか.
「関数の型」程度ならば,推論することで,ほぼ期待する動作が(プログラマが)推論できたが,しかしオブジェクト指向の言語ではちょっと複雑にすぎる気がする.もちろん,C#やJavaのように,いちいち変数に型宣言が必要なのはあまりに面倒だが.
Satherのようにローカル変数は宣言がいらないというのは,実はすごくいい落とし所なのかもしれないと思い始めた.