この記事はFacebook社員Ben Gertzfield氏のSpeaking a whole new language: DConf 2013 at Facebookを翻訳したものです。
#はじめに
今月の始め、Facebookで60人以上の技術者、探究者、ドリーマー、アーキテクトが集まるD言語のカンファレンス、DConf 2013 が3日間開催されました。
私は数多くのプログラミングカンファレンスに参加してきましたが、アーリーアダプター達がそれぞれの考えた未来への眺望を共有していたDConfには本当に目を見張りました。
このリンクにそれぞれの講演のスライドと録画があるので、あなたは仮想的にDConf 2013に出席することができます!(いくつかの講演はこれを書いている現在まだ公開されていません。数日経ってからまたチェックしてみてください)
もしあなたがD言語を初めて聞いたと言うのなら、dlang.org(※訳注:日本語版はこちら)をチェックしてみてください。D言語はC言語をルーツとする完全に現代的なシステムプログラミング言語です。
他の現代的なプログラミング言語と同じように、D言語はオブジェクト指向、ガベージコレクション、強力で型安全なシステム、堅牢なジェネリクスなどを持ちます。
が、他にも驚くべき新しい特徴であるコンパイル時関数実行(CTFE)、Erlangスタイルの非同期メッセージパッシング、Haskell風の(恐らく無限の)rangeの機能的な操作などが含まれています。
プログラミング言語の設計といえば、私を含む多くのコンピュータサイエンスを学んだ学生はこの本を連想します。
(※訳注:レッドドラゴンブックとして世界的に有名なコンパイラ解説書)
1970年代のマイクロコンピュータや時分割共有のメインフレームはさておき、私がDConfで見聞きした現代的な言語設計の巨匠のビジョンはコンピュータ専攻の学部生が学ぶ構文解析(parser)、字句解析(lexer)、コンパイラ、最適化といった話よりも遥かに多くのことを私に教えてくれました。
今日では、プログラミング言語設計は理論、実践ともにコンピュータサイエンスに限らず驚くべき量の哲学、言語学、社会工学、コミュニティビルディングなどのユニークな連携で成り立っています。
1日目
DConfの初日は、まずD言語の生みの親であるWalter BrightがD言語のムーブメントの勢いについて、そしてAli Çehreli(彼は英語とトルコ語でD言語プログラミングのフリーオンライン書籍を書いています)とLeandro Lucarella の2人はD言語の内部仕様の深い所について講演しました。
Robert Schadekは彼の研究プロジェクトであり高速なキャッシュ式D言語コンパイラであるDMCDについて話し、さらにManu Evansは実際のゲーム会社でD言語と既存のC/C++のコードを統合して用いる方法について講演しました。
(※訳注:Manu Evans氏はロングランヒットとなり世界300万本以上の売り上げを記録したAlan Wakeの開発にも参加していた生粋のゲームプログラマで、この講演はRemedyが5月に発表したXbox One用ソフトQuantum Breakについての話だと言われています)
私も自身の情熱について講演を行い、テスタブルなソフトウェアを書くことと、私が作ったD言語向けのオープンソースの依存性注入ライブラリであるDejectについて話しました。
2日目
2日目には、Iain BuclawがgccベースのDコンパイラであるgdcについての素晴らしい講演を行いました。Iainは現在そのプロジェクトの偉大なリーダーを務めていて、gdcの開発において素晴らしい視点とビジョンを提供しています。
D言語のコンパイラフロントエンドと、コアランタイムライブラリの著名な貢献者であるMartin Nowakは、最近の機能に関わるD言語の共有ライブラリの作成方法について講演しました。
続いてAdam Wilsonは巨大なプロジェクトをC#からDに移行するための明快な分析的検討を紹介しました。(驚いたことに、それは思っていたよりも簡単でした。しかし、それは全労力の90%が全コードベースの10%にかかる特定のシチュエーションの場合です)
Web開発は(まだ!)D言語のコア市場ではありません。それでもD言語はその分野において速度と利便性という確固たるアドバンテージを持っています。
好評を博しているD言語のオンラインフォーラムであるforum.dlang.orgの作者Vladimir Panteleevは、
オープンソースのWebフレームワークであるvibe.dの出現によって、Web開発におけるD言語は同類のプロジェクトと同様に将来有望な道を辿っていくと主張しました。
(※訳注:vibedはフィーリングを表す英語のスラングで日本における性的な意味とは違います)
続いてRainer SchützeがD言語コミュニティにとってホットな話題である精密なガベージコレクションの実装について話しました。
モントリオール大学の大学院生であるMaxime Chevalier-Boisvertは、彼女の研究プロジェクトであるJavascriptのJITコンパイラHiggsについて講演しました。
最後に、Andrew Edwardsがスタートアップシナリオにおいてより良く関心を惹き、教えることができ、使われるためにD言語を用いるということについて論じました。
(※訳注:残念ながらこの講演の資料はありません)
3日目
DConf 2013の最終日、まずDon ClugstonはSociomantic LabsがD言語を用いてどのようにリアルタイムオークション広告を運用しているかについて講演しました。Dプログラマは型安全なコードをコンパイル時に実行する素晴らしいCTFEによってアプリケーションをビルドすることができます。
これは私が気に入っているD言語の機能で、他の言語にも似たような機能は見受けられます(※訳注:C++のテンプレートなど)。しかし、Dのそれは非常に納得が行く形で言語に統合されています。
その後、David SimchaはD言語におけるデザインパターンを再考させる素晴らしいトークで皆の関心を集めました。そして、広範囲で評判の悪いdouble-checked lockingパターンもD言語のような効率的なスレッドローカルストレージ(TLS)プリミティブを持つ言語では安全に実装できることを披露しました。
仕上げに、まずDavid NadlingerはLLVMバックエンドを用いたDコンパイラであるLDCについて講演を行いました。それはLLVMの恩恵を受けてオリジナルのDコンパイラであるDMDよりもかなりパフォーマンスが改善されています(※訳注:現状でもgccでコンパイルしたC言語ソースと全く同程度の速度が出るようになっています)。
そしてもちろん、 Andrei Alexandrescuには感激させられました。彼はC++とD言語の両方の世界において重要な有力者です。彼はイベントの締めくくりとして熱の篭った"我々は此処から何処へ行くか"という講演を行い、
カンファレンスの参加者と講演者によって生まれた新しい繋がりとインスピレーションが世界に羽ばたき、D言語と共に素晴らしい事を成していくだろうと総括を行いました。
おわりに
全体的に驚くべき週でした。そして私個人としてもこんなに大勢の本当にイノベーティブな探究者が集まる技術カンファレンスに出た事はありませんでした。我々のほとんどは生きている間にほんの数回しか全く新しいものの誕生に出会う事はありません。
そして私もFacebookでD言語を推進して行きながら、D言語のコミュニティに参加したいと本気で考えるようになりました。
(※訳注:文中に度々出てくるAndrei Alexandrescu氏はModern C++ Designなどの著書で有名な古参のC++プログラマでしたが、近年ではD言語に着目して言語の設計・開発に貢献しつつ、今年日本語版も出版されたプログラミング言語Dの執筆を行ったり、自らが所属するFacebookを中心にD言語の布教に努めています)