編集可能

Soft Typingに対するMatzの誤解とDuck TypingとStructural Subtyping

まつもとゆきひろさん(Matzさん)がRubyKaigi2016の基調講演で説明した、Ruby 3のSoft Typingにまつわる誤解や構造的部分型に関する話です。
システム管理 運用 プログラミング type Ruby
18
紅月さん@がんばらない @koduki
goのStructural Subtypingの話。Scalaっぽくてアレは好き #rubykaigi
ヽ(´・肉・`)ノ @niku_name
静的なダックタイピングのような,構造的部分型のこともインターフェースとして話されているのだろうか #rubykaigi
Satoshi Kojima @skoji
「Ruby3はいつ来るのか」「わかりません」「オープンソースプロジェクトには締め切りはない」「でもゴールがないと働かない」「月に行く、という宣言」 (スライド上はSoft typing, Ruby 3x3, Concurrency) #rubykaigi
Tsuyoshi MAEHANA @sandinist
未来に向けてハードルのある目標を設定する。ケネディは1960年代に月に行くと宣言、1969年に実現された。燃料投下はMatzの役割。 ・Soft typing ・Ruby 3x3 ・Concurrency 宣言ではないが、次のオリンピックの頃に。 #rubykaigi
gihyoreport @gihyoreport
松本さんは、Rubyで現在考えている、ダックタイピングを維持したまま型推論できるようなSoft typingの構想を話しました。こういった構想は「開発者の皆さんに、より良いプログラミング経験を提供すること」「前に進み続けることで幸せを届けるため」と話しました #rubykaigi
Tanaka Akira @tanaka_akr
ここでいう soft typing は昔読んだものと違うな。名前の乗っ取りを感じる。#rubykaigi
はいと @HaiTo_Linux
schemeでいう「soft typing」とはかなり異なる なるほどなーw #rubykaigi
黒曜@デレ7thナゴド両日現地 @kokuyouwind
soft typingという用語がacademicな世界での使い方と異なるので別の語を使って欲しい、という指摘が。用語は実際重要。 #rubykaigi
早く人間になりたい @123undo
「此処で言ってるsoft typingってschemaで使われてるのとは違いますよね? アカデミックで使われてる言葉は大事にして欲しいと思います」 「別の名前考えておきます」 #rubykaigi

注:「schema」はおそらくScheme(関数型プログラミング言語の一つ)のこと

S (ツイートはスレッド全体をご確認ください) @esumii
ちなみに本来のsoft typing dx.doi.org/10.1145/182409… 1994年のLisp and Functional Programming(現在のICFP)の論文。

(本来のsoft typingは、静的に型付けできる部分はして、できない部分は動的に型付けするアプローチのこと)

Tanaka Akira @tanaka_akr
@esumii structural な subtyping で型推論をするような話でした (用語が変だったらごめんなさい)
S (ツイートはスレッド全体をご確認ください) @esumii
.@tanaka_akr どうもです! 完全に静的な型つけじゃなくて一部は動的とかだったらsoft typingの一種ではあるかも
Tanaka Akira @tanaka_akr
@esumii そこはよくわかりませんでした。全部検査するという話もあった気がしますし、検査できなくても動かすという話もあった気がします。少なくとも重点はプログラムの間違いを検出するところにありました。
S (ツイートはスレッド全体をご確認ください) @esumii
.@tanaka_akr そうすると主眼はやっぱりstructural {polymorphism,subtyping}の型推論っぽいのでキャッチーな名前がほしかったら「ダック型推論」とか:-)ですかね。重ね重ねどうもです
S (ツイートはスレッド全体をご確認ください) @esumii
@esumii 念のため、完全に静的ではないだけで、「プログラムの間違いを検出する」点はsoft typingでも同じ。もちろん、普通の静的型と同様、実行時効率の向上にも使えますが。
tomo🐧@hibernation @cocoatomo
@esumii 気になって検索してみると, 2014年のRubyKaigiで omniref.com/blog/2014/11/1… hackerslab.aktsk.jp/event/rubykaig… のような発表をされているようです. 発表動画 → rubykaigi.org/2014/presentat…
tomo🐧@hibernation @cocoatomo
@esumii あ, 発表動画は間違えてRubyKaigi2014のキーノートのURLを張っちゃいましたm(_ _)m
S (ツイートはスレッド全体をご確認ください) @esumii
@cocoatomo ありゃ、オリジナルもreferされてる(?)のにかなり違う話をしてるので混乱してるみたいですね…。情報どうもです
S (ツイートはスレッド全体をご確認ください) @esumii
@cocoatomo あ、いえ、出先なので動画は見ていません(^^;すみません
Kota Mizushima (on a diet) @kmizu
hackerslab.aktsk.jp/event/rubykaig… みたいな話だったら(推論できるのとできないのを切り分けていいのだったら)、レコード多相の pllab.riec.tohoku.ac.jp/smlsharp/ja/?F… 話が割と応用できるのではないですかね
S (ツイートはスレッド全体をご確認ください) @esumii
.@kmizu そもそもRemyのレコード多相がOCamlのOの基礎理論です。継承があるのでレコード連結があったり、実装は(インデックス渡しではなく)ハッシュ表だったりしますが。
残りを読む(80)

コメント

Kota Mizushima (on a diet) @kmizu 2016年9月9日
まとめを更新しました。
S (ツイートはスレッド全体をご確認ください) @esumii 2016年9月10日
抜けが多い気がしたので、話の流れをわかりやすくするため、大幅に編集して整理しました。勝手にすみません。m(_ _)m
日比野 啓 (Kei Hibino) @khibino 2016年10月8日
たしか LL Ring で soutaro さんが登壇したときも OCaml の多相レコードで duck typing が推論できるという話をしていたと思う。昔からありますよね、と思っているプログラマ、結構いるのではないか。 LL Ring ももう 10年前か。
ログインして広告を非表示にする
ログインして広告を非表示にする