オブジェクト指向言語のジェネリックスの起源

Java -> Pizza -> GJ という経緯がわかりにくかったかもしれませんので補足します。 ・Java言語をベースにした、ジェネリクスを持ったPizza言語およびコンパイラの開発 (Martin Odersky, 1997) ・Pizza言語を元に、Java言語に対する後方互換性を考慮した言語であるであるGJ(Generic Java)およびコンパイラの開発 続きを読む
6
S (ツイートはスレッド全体をご確認ください) @esumii

@yukihiro_matz @chiba_sh @ProfMatsuoka @HironobuSUZUKI C++とかJavaとかのgenericsやらラムダ式やら型推論やら、メインストリームが関数型言語に近づいてきた、とも:-)

2013-11-02 00:48:35
Yukihiro Matz @yukihiro_matz

@esumii @chiba_sh @ProfMatsuoka @HironobuSUZUKI うーん、そこは認めますけど、関数型言語でも現代のアカデミックに近い部分にはまだまだまだ到達していないような。

2013-11-02 00:50:17
S (ツイートはスレッド全体をご確認ください) @esumii

.@yukihiro_matz @chiba_sh @ProfMatsuoka @HironobuSUZUKI プログラミング言語は人間相手なので社会的慣性が大きく時間がかかるのだと思っています。Lispですでに実現していたGCが、Javaで普及するまでほぼ半世紀、みたいな。

2013-11-02 00:54:02
S (ツイートはスレッド全体をご確認ください) @esumii

.@yukihiro_matz @chiba_sh @ProfMatsuoka @HironobuSUZUKI (だからこそ、アカデミシャンとエンジニアの交流が途絶えるのは非常にまずいのですが)

2013-11-02 00:59:00
S (ツイートはスレッド全体をご確認ください) @esumii

.@ProfMatsuoka @yukihiro_matz @chiba_sh GCは単なる一例だったので、普及に時間がかかった他の例としてはML多相→OO言語の genericsとか型推論とか。(C++のtemplateはやりすぎとして)速度がネックだったわけではないと思います

2013-11-02 01:14:36
Satoshi Matsuoka @ProfMatsuoka

OO言語のgenerics起源はCLUとかADAでMLではない。“@esumii: @yukihiro_matz @chiba_sh 普及に時間がかかった他の例としてはML多相→OO言語の genericsとか型推論とか。速度がネックだったわけではないと思います”

2013-11-02 01:37:30
S (ツイートはスレッド全体をご確認ください) @esumii

@ProfMatsuoka @yukihiro_matz @chiba_sh ML多相(≠ML)は60年代から知られていたので、70年代のCLUやAdaがそれと関係がないということはないと思います

2013-11-02 02:01:48
S (ツイートはスレッド全体をご確認ください) @esumii

@esumii (ML多相ではなくパラメタ多相と言うべきだった…)

2013-11-02 02:27:17
kmizu @kmizu

@esumii Barbara Liskov, A History of CLU, 1992 読んでたんですが、3.6 でのMilnerへの言及、 3.7 読むと結果的に似た機能になったが起源は別だったのではないかとも思えます。 http://t.co/aau40PhOoa

2013-11-02 03:59:17
kmizu @kmizu

@esumii もちろん、1992から振り返っての話であって、1974-1975当時、何をどこまで参考にしたかについて明確な記述がないので断言はできませんが。

2013-11-02 04:09:56
Manchun Milky Naomi Tåkãnø🏊 @honten

@ProfMatsuoka @lef @esumii @chiba_sh @yukihiro_matz @HironobuSUZUKI Scalaを忘れないでください。うちはむしろRubyからScalaに乗り換えたぐらいなんで。

2013-11-02 08:10:37
S (ツイートはスレッド全体をご確認ください) @esumii

@kmizu それは有名ですがパラメタ多相性ではなく型推論の話ですよね。Stratcheyの有名論文 http://t.co/t7peSjsw30 の「parametric polymorphism」(名前もそのまま)は遅くとも1967年なので。

2013-11-02 08:20:54
kmizu @kmizu

@esumii はい。3.6 でのMilnerに関する言及そのものは型推論の話です。ただ、3.7 Parametric Polymorphismで述べられている動機は組み込み型とユーザ定義型の相違および、ユーザ定義型を組み込み型と同じように振る舞わせたいというものであり、

2013-11-02 08:41:06
kmizu @kmizu

@esumii 発想の方法としては自然なので、似た概念を知らずに再発明していたという事の一例なのではないかと考えました。一方で3.7 Parametric Polymorphismは、仰る通り名前そのままであり、どう解釈すべきか悩ましいですが。

2013-11-02 08:53:09
kmizu @kmizu

@esumii 私自身としては、先行する多相型の研究に影響を受けてCLUのパラメタ多相が設計されたのか、それともCLUが独自に再発明したのかについてはどちらももありえるのでは、くらいの認識です。

2013-11-02 09:12:29
S (ツイートはスレッド全体をご確認ください) @esumii

@kmizu 私が見聞きした限りStracheyの論文は70年代の研究者にも常識だったようなのでLiscovがまったく知らなかったとは思えませんが、本人が覚えていない可能性も0もではないですね。いずれにせよパラメタ多相の研究から普及まで何十年もかかった、と。

2013-11-02 09:17:19
kmizu @kmizu

@esumii "私が見聞きした限りStracheyの論文は70年代の研究者にも常識だったようなので" この「常識感」がどの程度だったかあまり良く知りませんでした。ともあれ、"いずれにせよパラメタ多相の研究から普及まで何十年もかかった"事には異論はありません。

2013-11-02 09:26:12
S (ツイートはスレッド全体をご確認ください) @esumii

@kmizu 一応、博士論文のテーマがパラメタ多相と抽象データ型で、歴史を聞いて回ったり、Liscovとも話をしたことぐらいはある程度の研究距離ですので(Stracheyの論文は当然に知っていると思ったので陽に確認までしていませんが)、そこはよろしくお願いします:-)

2013-11-02 09:26:49
kmizu @kmizu

@esumii なるほど。Liskovとの研究距離については存じ上げていませんでしたので、その点は失礼しました。

2013-11-02 09:32:52
kmizu @kmizu

そういえば、元になった、OO言語のgenericsが何起源かについては、言語によって異なる部分があるものの、少なくともJavaに関しては、Java -> Pizza -> GJの流れがあって、しかもPizza(cont) http://t.co/WAZiDcgREn

2013-11-02 09:59:40
kmizu @kmizu

なので、Adaよりもっとすっ飛ばして直接起源論じることができるかと思います。

2013-11-02 10:03:08
S (ツイートはスレッド全体をご確認ください) @esumii

.@kmizu うわ、そりゃそうですね>JavaのgenericsはGJ, Pizza経由でHindley-Milner (ML)起源 指摘&文献確認どうもです

2013-11-02 10:14:33
kmizu @kmizu

と、エアリプライ(?)。もう話の流れ終わってるのに、その序盤辺りに今更リプライ飛ばすのもなんだかなーということを思い、とまどうことがときどきある。とまどってもリプライ飛ばすこともあるけど。

2013-11-02 10:14:58
S (ツイートはスレッド全体をご確認ください) @esumii

@esumii (しかし本当に目の前で研究を見ていたはずなのに、これを自分ではなく人に指摘されるのは弱すぎる…(笑)>JavaのgenericsはGJ経由でML起源)

2013-11-02 10:21:50