観察日記 2010-10-04

静的型と動的型

静的型と動的型をまぜまぜした言語ほしい
Common Lisp?
もっとまともな言語で
syntax は Ruby でいい
欲をいえば一部 Scala で
ScalaをCで書けば解決?
Scala は動的型が全然ないからダメ
あと個人的な趣味だけどベースは Ruby の syntax の方がいい
Cであらゆるvoid *でうければいいよ
値に型は欲しいです……
def foo(a as Fixnum, b as String) as NilClass
こんな感じですか
しかも省略も可能
: でいいよ
キーワード引数で泣くけど
CommonLisp だと型は盲目的に信じる
Scalaだと,全部書かないといけないから(推論できるところ以外)型検査が出来る
どっちが良い?
型が書いてあるところだけ型推論するのが流行りです
soft-typing 以来ほそぼそと続いてる話だけど
そのアプローチでまともな言語ってどれだっけ
型検査は含めないのかな
静的型付けされてるところは静的に型検査して動的にはしない
されてないところは動的に型検査する
Scala ってそうだっけ?
Scala は全部静的
だから多分ぼくには使えない
動的にしてるところもある,と水島君に聞いたようなキモするけど
部分的検査を許す言語ってあったっけ?
それはぼくが知らないか、別の話だろうか
私も知らないので
研究ではちょろちょろ
最適化のために,検査結果を使うってのはもちろんあるけれど
ソフトタイピングって,そういうところ以外で使ってるのはあるのかな
Self のあの研究も,高速化が目的じゃなかったっけ
ソフトタイピングは、言語記述自体は全部動的型付けですよね
確かに
部分的には型アノテーションを書きたい
最適化してほしいところではそれを使って最適化してほしいし
型アノテーションは,誰のためにやるんだろう
型書いたほうがコードが書きやすいところも多い
でも全部書けと言われると辛い
アノテーションは,盲目的に信じてほしい,ってこと?
それとも,アノテーションも検査してほしい,と
型付けされてないコードからアノテーションが書かれた関数を呼び出すときに
どういう場合だろうな
動的型チェックしてくれれば
それは動的検査が入りそう
アノテーションが書かれたコード内では動的検査ないですよね
そこは検査できるから,と
基本的には入り口と出口だけチェックすればいい
結局,ほとんど動的型にならないかな?
わかんないけど
静的型付け関数から静的型付け関数を呼び出すところでは動的検査しないでね
それはわかるんだけど
プログラムのボトルネックになると言われる 10% の部分だけ型書こう
実は,それがわかるところはほとんど無いんじゃないだろうか,みたいな
どうでしょうねえ
別に全部型書いてもいいんですが
プロトタイプ時から型書くのは辛いんですよ
動的型でプロトタイプ作って
動いたら型アノテーション全部書く
うん
まあでもこの話ってopen class みたいにメソッドを動的追加とか削除とかできるような言語だと難しそうなんだよな
難しそうというか、あんまり高速化しない
型は「クラス」なのだろうか
なんでしょうかねえ
C++ の vtable ってどうやって実装されてるんだろう
例えば
nil or String なんてのはどう書くのかな
nil or String or Array or Hash
Option
そういうのを受け付けるコードは書かない
とにかく each 呼べる人限定,みたいな
nil or string だけは Option
データが入ってくるかまったくないか
それはなんか美しくないような…
みんなが使う汎用的なライブラリとかだと静的型にはしないでしょうね
つか,あんまり
と考えると、やっぱり大して嬉しくないのかな
まあ汎用的なもんが美しくできるとはあたしは信じてないんだけど
今の Ruby には受け入れられそうにない気がする
え、もちろん今の Ruby とは関係ない妄想ですよ
ほしいのは性能じゃなくて検査なんだよね?
それとも性能?
どっちも
検査って言ってるのは静的型チェックのことですよね
うい
実行前に
うん
部分的には欲しい
この手の静的型と動的型をまぜる研究って昔からされてるけど、研究レベルを超えたのが出てこないのは需要がないからなのかなー
研究レベルでも,「型検査のために」って人はいるんだっけ
PLDI とかの論文のは,それに相当するのかなー
型を広くとらえている人が多い気がするけど
PLDI はわりと実装系だから
でも型を使ってレース検出とかあったか
まあrubyはうつくしさとどろくささのバランスの妙ってとこだろうなぁ
美しさとかはわりとどうでも
言語屋さんや数学屋さんの求める美しさを追求していったら
あたしらライトユーザーはたぶんあつかえないんじゃないかなぁ
美的水準をどこに置くかか
他の言語が美しくなさすぎるだけ
静的型とか気にしないで完全に動的型付け言語としても使えるといいですね
CommonLispに型検査機能を設ければいいのか
というか,もうあるんじゃないか,という気がするが
今日のF#スレはここですか
syntax があり得ないのでダメ
Ruby -> CL は結構簡単にいきそうだが
Lisp のカッコの何がいけないって
複数行にまたがるカッコと単一行のカッコを同じカッコで書くことだと思う
begin .. end も許したら案外読めたりして
]
(一挙に読めなくなる
Python みたいにインデントを使う、は誰かがやってた気がするな
ちなみに OCaml の文法は万人がクソだと認めます
ので F# もだめ
そうなんだ
でも文法が綺麗な言語って書き出すと細かい記法にこだわってしまってなかなか生産性が上がらない
C とか OCaml とかだと記法は最初から諦めてるので細かいことこだわらずにどんどん書ける
弱ったことだ
はっきり言って Ruby で大きいもの書いたことないんだな
最大で concov の 5000 行
どんどん書けるんなら生産性いいんじゃん!
OCaml だと数日で JavaVM 書けましたからねえ
でもささださんは Ruby で数日で書いてた気もする

rubyisthenewperl

#rubyisthenewperl とかいうハッシュタグが
何それ
超絶技巧の英訳 (とかいう
rubyist he new perl
rubyist henew perl
ruby is the new perl