June 13, 2012
C++Now! - BoostCon新装開店 (C++Now! – Boost-Konferenz im neuen Gewand)

source: http://www.heise.de/developer/artikel/developer_artikel_1586999.html

新しいBoost(Neuer Boost)

五月中旬、BoostConに代わって、C++Now!が開催された。新しいC++11標準についても、簡便性やモジュール性についての議論が交わされ、焦点が当てられた。

(Mitte Mai fand die aus der BoostCon hervorgegangene Konferenz C++Now! statt. Neben dem Schwerpunkt auf dem neuen C++11-Standard sorgten Überlegungen hinsichtlich eines modularen und einfacheren C++ für Aufsehen.)

Boost-CommunityはBoost Libraryのさらなる発展のためにBoostConをここ数年開催している。昨年、新しいC++が標準化されたことを受けて、非常に多くのアイデアがBoost-Commnunityに流れ込み、会合の主題はBoost LibraryというよりC++11に移ったようだ。会合の名前はC++Now!にかわったものの、例年通りコロラド州アスペンで開催された。

(Die Boost-Community organisierte die BoostCon in den vergangenen Jahren, um die Entwicklung der Boost Bibliotheken voranzutreiben. Mit der Verabschiedung des neuen C++-Standards im vergangenen Jahr, in den viele Ideen der Boost-Community geflossen sind, hat sich nun der Schwerpunkt der Konferenz von den Boost Bibliotheken zu C++11 verschoben. Während sich der Name der Konferenz änderte, blieb der Veranstaltungsort derselbe: Die C++Now! fand wiederum in Aspen, Colorado, statt.)

会合の参加者はC++標準委員会の面々によるプレゼンを期待していた。例えばC++標準委員会メンバーであり、libstdc++のリードディヴェロッパであるHoward Hinnant氏によるRvalue-referenceのプレゼンである。氏はC++03からのreferenceは、新しい標準においてlvalue-referenceと改名され、C++11においてreferenceと言ったばあい、lvalueとrvalue両方を指すと述べた。氏は種々のexpressionとそれらの関係について示した。単なるreferenceにとどまらず、glvalueやxvalue、prvalueといった概念についても述べた。最後に、Hinnant氏は、関数の戻り値をrvalue referenceで定義する必要はない、というのも、より高速かつよりよい方法としてRVOがあるからだ、という実用的な助言で締めくくった。

(Die Konferenzteilnehmer konnten sich auf Präsentationen einiger Mitglieder des C++-Standardkomitees freuen. So stellte Howard Hinnant, Mitglied des C++-Standardkomitees und verantwortlicher Entwickler der Bibliothek libstdc++, Rvalue-Referenzen vor. Er erklärte zum Beispiel, dass Referenzen aus C++03 im neuen Standard in Lvalue-Referenzen umbenannt wurden und Referenzen in C++11 sowohl Lvalue- als auch Rvalue-Referenzen bedeuten. Er präsentierte verschiedene Arten von Ausdrücken und zeigte deren Zusammenhänge auf. So gibt es nicht nur Referenzen, sondern zum Beispiel auch glvalues, xvalues und prvalues. Schließlich gab Hinnant praktische Tipps, etwa Rückgabewerte von Funktionen nicht zwangsläufig als Rvalue-Referenz zu definieren, da es mit der RVO (Return Value Optimization) eine schnellere und bessere Möglichkeit gebe, Werte von Funktionen zurückzugeben.)

コンパイルを拒否するためのC++のmodule(Veto für modulares C++)

同じくC++標準委員会メンバーであるDavid Vandevoorde氏は、moduleに関する氏の意見について述べた。moduleはC++11に定義されなかったが、氏が将来のC++に搭載して欲しいと望んでいる機能である。moduleはdynamicでもstatic libraryでもなく、特に多くのヘッダファイルからなるプロジェクトのコンパイル速度向上に寄与する。

(David Vandevoorde, ebenfalls Mitglied des Standardkomitees, stellte seine Idee der Module vor. Module sind nicht in C++11 definiert, sollen aber nach Vandevoordes Willen Bestandteil einer zukünftigen Version von C++ sein. Bei Modulen handelt es sich nicht um dynamische oder statische Bibliotheken, vielmehr geht es um die Möglichkeit, die Kompilierung zu beschleunigen – vor allem, wenn ein Projekt aus vielen Header-Dateien besteht.)

Vandevoorde氏が提案したmoduleには、あるヘッダファイルに変更があっても毎回コンパイルされるわけではないというより高度なコンパイル済みヘッダファイルが含まれている。興味深いことに、clangはコンパイラ依存のmoduleをサポートしており、これは期待した通りの効果を発揮し、C++のコードを変更することなくコンパイル速度の向上に寄与している。

(Bei den von Vandevoorde vorgeschlagenen Modulen geht es eher um eine intelligente vorkompilierte Header-Datei, die nicht jedes Mal neu zu kompilieren ist, wenn sich eine Header-Datei ändert. Interessanterweise unterstützt Clang Compiler-abhängige Module, die den gewünschten Effekt haben und die Kompilierung beschleunigen können, ohne dass C++-Code zu ändern ist.)

MicrosoftでVisual Studioのプログラムマネジャーを務めるSumit Kumar氏は、プレリリース版のVisual Studio 11について述べ、開発環境の新機能について紹介した。例えば、プロジェクトは非同期的にロードできるようになるので、開発者は他のプロジェクトがバックグラウンドでIDEにロードされている間にコードを閲覧したり編集するといったことができるようになる。Visual Studio 11は内部の依存関係を示すグラフを自動的に生成することができる。例えば、実行ファイルやnamespace、classや関数の依存関係をグラフにして表示できる。

(Sumit Kumar, Programm-Manager bei Microsoft für Visual Studio, präsentierte eine Vorabversion von Visual Studio 11 und stellte einige der Neuheiten der Entwicklungsumgebung vor. Beispielsweise lassen sich mit der IDE Projekte asynchron laden, sodass ein Entwickler sofort mit dem Startprojekt arbeiten sowie Code ansehen und verändern kann, während andere Projekte noch im Hintergrund geladen werden. Visual Studio 11 kann automatisch Grafiken erstellen, die die internen Zusammenhänge einer Software erkennen lassen. Zum Beispiel kann man in einer Grafik in eine ausführbare Datei hineinzoomen, um Namensräume, Klassen oder Funktionen sichtbar zu machen.)

またKumar氏によると、Visual StudioのデバッガはMicrosoftが最適化に力を注いだ重要ツールである。開発者コミュニティに寄せられた批判を受け入れて、Microsoftは最終的にこのカンファレンスで紹介したVisual Studio11のプレリリース版よりもカラフルにするとのことである。

(Laut Kumar wird der Debugger in Visual Studio als eines der wichtigsten Werkzeuge erachtet, weswegen ihn Microsoft erkennbar optimiert hat. Zu guter Letzt hat sich Microsoft die Kritik seiner Entwickler-Community zu Herzen genommen, die Symbole in der IDE farbiger zu gestalten, auch wenn die auf der Konferenz vorgestellte Vorabversion von Visual Studio 11 noch eintönige Symbole besaß.)

より簡便なC++に向けて (Credo für einfacheres C++)

参加者に最も感銘を与えたキーノートは、一流の科学者でありAdobeのソフトウェアアーキテクトでもあるSean parent氏によるものではないろうか。氏はC++が今後進むべき道を示そうとした。氏は、たったふたつの値を保持するだけのデータ構造であるstd::pairの実装を例に、ヘッダファイルを上から下までスクロールして、C++はもっとシンプルになるべきだと述べた。また、C++を使う開発者が実際にコンピュータのパフォーマンスの恩恵を受けられるように、C++はGPUのような部品はもとより、コンピュータ全ての装置に標準でアクセスできる方法を提供すべきだとも述べた。threadについては、C++11で標準搭載されたので、C++開発者は、現在プロセッサの複数のコアにアクセスしてマルチスレッドアプリケーションを組むことができるようになった一方、GPUのようなパワフルな装置にアクセスするためのインターフェースがC++標準にない。

(Am meisten beeindruckt hat die Teilnehmer wahrscheinlich die Keynote von Sean Parent, Principal Scientist und Softwarearchitekt bei Adobe. Er versuchte eine Richtung vorzugeben, in der sich C++ weiterzuentwickeln habe. Seiner Meinung nach ist C++ drastisch zu vereinfachen. Beispielhaft zeigte er eine Implementierung von std::pair und scrollte die Header-Datei seitenlang nach unten, obwohl diese Datenstruktur letztlich lediglich zwei Werte speichert. Außerdem müsse C++ einen standardisierten Zugriff auf Komponenten wie die GPU bieten, damit Entwickler mit C++ tatsächlich von der Leistungsfähigkeit eines Computers – und zwar aller Komponenten eines Rechners – profitieren können. Während sich mit Threads, die mit C++11 Einzug in den Standard gehalten haben, nun Multithreaded-Anwendungen entwickeln lassen und sich somit auf mehrere Kerne eines Prozessors zugreifen lässt, haben C++-Entwickler derzeit keine Möglichkeit, über eine im C++-Standard definierte Schnittstelle auf leistungsfähige Komponenten wie die GPU zuzugreifen.)

C++Now!での他のプレゼンとして、Alisdair Meredith氏は、新しいC++標準の策定を通じて学んだことを話した。また、MicrosoftでC++標準ライブラリ開発に従事しているStephan t. Lavavej氏は、C++11の正規表現ライブラリについて発表した。Googleでclangチームを率いているChandler Carruth氏は、いかにclangがC++コードのリファクタリングの助けになるかについて語った。

(Weitere Vorträge der C++Now! hielten etwa Alisdair Meredith, der erklärte, welche Lehren das Komitee aus der Entwicklung des neuen C++-Standards gezogen hat, und Stephan T. Lavavej, der bei Microsoft für die C++-Standardbibliothek verantwortlich ist. Dieser gab eine Präsentation zu regulären Ausdrücken in C++11. Chandler Carruth, der das Clang-Team bei Google leitet, erklärte schließlich, wie Clang beim Refactoring von C++-Code helfen kann.)

およそ130名いた参加者でなくとも、全プレゼンの概要は閲覧可能である。ほとんどのプレゼン資料はpdfファイルでダウンロード可能だ。また、プレゼンのヴィデオはカンファレンスのWeb siteにて公開される。

(Wer nicht zu den rund 130 Konferenzteilnehmern zählte, kann auch unter eine Übersicht zu allen Vorträgen aufrufen. Für zahlreiche Präsentationen stehen PDF-Dateien zum Download zur Verfügung. Videos der Präsentationen werden in Kürze auf der Konferenz-Website veröffentlicht.)

次回のC++Now!は2013年5月12日から17日、Aspenにて開催される予定である。

(Die nächste C++Now! findet vom 12. bis 17. Mai 2013 wieder in Aspen statt.)

  1. shousen-h reblogged this from zakkas783-blog-blog
  2. zakkas783-blog-blog posted this