--- layout: old_post title: デブサミ2008 - 「言語の現在・過去・未来を語る」メモ permalink: /tatsuya/show/414-2008 ---

今週、developer summit 2008に行ってきたのでメモ。

ネットコミュニケーション 2.0 が面白かったけど、これのレポートは山ほど見かけるので

言語の現在・過去・未来 - まつもとゆきひろ・波村大悟 このセッションのメモを残しておきます。


その他、見つけた範囲では

・ C# についてのまとめは、こちらが詳しい 【13-B-7】言語の現在・過去・未来を語る』話題メモ - C# side - NyaRuRuの日記

・ Matz日記 デブサミ2008 1日め (ディープな1日)


言語の現在・過去・未来を語る


<<自己紹介>>

まつもとゆきひろ(以下:ま)
15年前から趣味でRubyを開発、現在は本業へ


波村大悟(以下:波)
MS US本社でC#開発、テストリード。C# 開発の初期から参加

<<Ruby, C#の開発体制>>

波:

・Develop team(実装), Test team(テスト), Design team(言語デザイン) の三チームとPM、と「C#の父」アンダース。合計約20人くらい?

・Test teamとDevelop teamの違いは、5つある機能のうち「一つでも動けばPerfectly!と言うのがDevelop team」「一つでも動かないとダメ!と言うのがTest team」

 >Test teamも開発に関わる(?)

・週三回のデザインMtg

・ユーザ&一般開発者の要望を取り込みつつ、最後はアンダースが設計を決める。 >「マクロが欲しい」は良く上がってくるが大抵アンダースが却下(笑

ま:

・日本語/英語のML (ruby-dev) でコミュニケーション・「こんな機能よくない?」「じゃあ入れよう」

・柔軟、反面だれもやりたがらない機能はなかなか実装されない


<<非互換性 => 言語の進化>>

波:

・C#は結構大きく変化している

 >ジェネリクスは C# 1.0 の開発&リリースと平行して開発された、C# 2.0としてリリースする前に丸ごと書き直されたけど。かなり大きな変化

・言語が大きくVerアップして進化するとき、非互換性が問題になりやすい。

 >MSのサポート規模を考えると、非互換性はまずい(10年は機能を保証。機能の削除できない)

・Rubyはどうか?


ま:

・そんなに気にしない、そろそろ1.9で「ぎゃ!」と皆に言ってもらわないと (笑

・オープンソースコミュニティは鮫、開発が止まると死ぬ。常に進化し続けることがオープンソースコミュニティを駆動する。

・駄目な部分は直す。


波:

・C#にも直したい設計はある。使う前から完璧な設計は難しい。(nullの扱い、voidの扱い)

・言語は言語設計者の想像しない所で、思わぬ使い方をされる。非互換性は意外な部分で出る(イテレータのMSIL(中間言語)コードを変更しただで苦情がきた)



ま:

・Rubyも開発当初はWebなんてなかった、ましてRailsなんて想像のしようがない。(言語は設計者の想像しない範囲で使われる)

・PowerPointは「プレゼンテーション」しかできない、プログラミング言語は「何でも」できてしまう。範囲が広い。

・範囲が広いから15年続いたのかも


波:15年は凄い、モチベーションの維持は?


ま:

・常に新しいテーマが生まれてくる

 >Hello worldを表示するのに半年(IOクラス作って、Stringクラス作って、、)

 >GCに手を付けて一年

・JavaとRubyは実は同じ年


波:

・そのJavaも最近では動的型付言語によってきている

・アンダースも最近は「RubyにできてC#にできないわけがない!Rubyのこの機能を取り込め!」と言っている(笑

 >動的型付とメタプログラミング

 >暗黙的型付け、型宣言を var で ( var x = new X(); )

  >C# 1.0の頃から可能だったが、スクリプト言語と間違われるのが嫌でやめた

  >当時はスクリプト言語の地位が低かった


ま:

C#はコンパイル時に実現しているので大変そう、でも開発環境でエディタの補完等はやりやすい


波:

CodeGearが Ruby & Rails のコード補完をやっているが、あれはランタイムを実行?


ま:

・多分そう、エディタの裏でRubyランタイムを実行している。

・C#も6.0 くらいではタイプリファレンスで凄いことに(?・・聞き取れず)


波:丁度今考えているとこ・・・・


<< LINQ >>

ま:LINQのクエリ式は思い切った変更だと思う


波:あの構文を正式に決定するのに相当時間がかかった


(例を出す)

var hoge = from x in Products

     where x.ID == 100

     select x;

ま:

・言語設計者的には入れたくない。よくアンダースが許した(笑

HaskleやPythonのリスト内包表現を真似るなら from より for では?


波:

・「俺の言語を汚すな」と言っていた(笑、最初一年は反対していた

・from ではなく当初は foreach文を拡張することも検討した

 foreach(var x in Products) . where x.ID == 1

・RailsのO/Rマッピングも凄い、テーブル定義からマッピングをダイナミックにやっていて驚いた

・LINQは一人のエンジニアが実装を担当している

 ・凄い、機械みたいなやつ

 ・急に静かになったと思ったら、大量のコードを一気にコミットしてた(笑

 

<<RubyにLINQ>>

ま:

・(ブロックとメソッドのチェーンでやると?)パフォーマンスが問題

・Rubyの構文木をCで取り出してSQLにしている連中がいた(笑 、パフォーマンスも問題ないと言っていた

 >> 多分これ? http://www.infoq.com/jp/news/2007/10/data-query-with-ambition

 

<<言語設計の醍醐味>>

ま:言語でどうやって表現するか?言語は人間の考えに影響を与える

波:できなかったことを可能にする。機械語でも理論上できるはずだが現実には高級言語でないと不可能なことがある

 

<<Ruby & C# のうらやましいところ>>

ま:膨大なリソース(Microsoft)を使って開発できることがうらやましい。

波:オープンソースのフレキシブルさがうらやましい。Microsoftではオープンソースへの参加も難しい