Insider's EyeC#への期待。アンダースからの返答デジタルアドバンテージ 一色 政彦 |
|
|
今月初めの2006年2月2日(木)〜3日(金)、パシフィコ横浜にて、「Microsoft Developers Conference 2006」(以降、MDC 2006)が開催された。これは、昨年9月に米国で開催されたカンファレンス「PDC 2005」の内容を、日本の先進的な開発者向けにあらためて(アップグレードしつつ)提供するためのカンファレンスである。
このMDC 2006に合わせて2月2日の正規のセッションの後、主にMVP(ほかにVSUGやINETAなど)を対象としたスペシャル・セッション「コミュニティ・スペシャル・セッション with Anders Hejlsberg」が催された。このセッションは、「C#の父」と呼ばれるC#言語チーフ・アーキテクトのアンダース・ヘルスバーグ氏(Anders Hejlsberg。以降、アンダース氏)をゲストに迎えて、C#に対する疑問や、より良い言語設計に対する要望などをアンダース氏に直接ぶつけてディスカッションしてみようという試みだ。
そしてこの試みは大成功だったと筆者は感じた。セッションでは、アンダース氏と参加者が一体となって、C#に対する深いテーマが熱く議論され、ホワイトボードを使いながら、参加者が持っているC#への疑問にアンダース氏が丁寧に答えたり、より良い言語仕様について参加者全員で考えたりした。この全員参加によるディスカッションは大盛況だった。
ここで議論された内容は多くの.NET開発者にとっても有益なものである。本稿では、このディスカッションの内容を筆者なりに要約してお伝えする。
アンダース氏が明かすC#言語設計の秘話
■C# 2.0の設計段階で削った機能や、意図的に搭載しなかった機能はあるか?
いくつかある。例えば次のようなものがある。
- 「プロパティの自動実装」(Automatic Implementation of Property)
- 「宣言型例外処理」(Declarative Exception Handling)
プロパティの自動実装では、ゲッター(getter。getアクセサ)やセッター(setter。setアクセサ)や、そこで使われるインスタンス変数の宣言を自動的に実装するような機能を考えていたが、さまざまな意見があり、最終的に答えが出なかった。将来的には答えが見えてくるだろうが、いまのところはまだ実装していない。
また宣言型例外処理(=例外処理を.configファイルなどに一括して記述できる機能)については、特にJava開発者からなぜ組み込まないのかと聞かれることもあるが、これらの手法は問題を別の問題にすり替えているだけのように思えるので、意図的にC#には組み込んでいない。このような機能に手を付けないのは、それ以外の解決策を模索しているからだ。
■C#に関して何か興味深い秘話はあるか?
「C#」という言語名を決めたときの話だが、もともとC#プロジェクトのコード名は、「COOL」(C like Object Oriented Language:Cライクなオブジェクト指向言語。クール)だった。だが、すでにほかの製品で使われているなどの理由で、この名前は採用されなかった。
ほかの案として、「EC」(イーシー)、「C2」(シー・スクウェア)、「C3」(シー・キューブ)、また音楽の要素を取り入れて「C#」、元素の名前から「Cs」(シー・セシウム)などが出てきた。「C#」を近くでよーく見ると、「C++++」に見える。そのような理由で最終的に「C#」という名前に落ち着いた。
■言語を設計してみたい人へのアドバイスはあるか?
ある。それは「そんなことはやめなさい」ということだ(笑)。
言語設計のおもしろさは、「言語の設計は、芸術と科学の組み合せである」というところにある。一方では主観的・直感的な判断が必要になる。例えば、言語を使用する開発者にとって、その言語が易しいものなのか、コーディングしやすいのかといったこと。またもう一方では客観的・厳密な判断も必要だ。例えば、その仕様が言語として妥当か、そのコンパイラを実装するうえで妥当かといったことである。
これまでいろいろなプログラミング言語を見てきたが、芸術性の面では良いが、科学の面では良くないといったパターンや、またその逆のパターンもある。この2つをうまく両立させなければならないところに、言語設計者としての妙技があるのだと思う。
INDEX | ||
Insider's Eye | ||
C#への期待。アンダースからの返答 | ||
1. アンダース氏が明かすC#言語設計の秘話 | ||
2. C#に対する開発者からの要望 | ||
3. C#自体やその将来に対する疑問、他言語に対する意見 | ||
Insider's Eye |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|