Question 4: C++開発者の数が増え続けているのは本当ですか?
Many people tend to say that learning C++ is not easy. However, recent news coverage hints that C++ community is still growing. How do you explain this? C++ allows us to manipulate hardware directly. Do you think this C++ strength attract more and more developers from dynamic language world? These days I hear people talk more about embedded systems programming than about Web applications. Is it true C++ is increasing the number of its users?
C++の習得は難しいと多くの人は考えています。ところが一部では、C++コミュニティが依然成長しているといわれます。あなたの感想をお聞かせください。C++はハードウェアの直接操作を可能としています。この強みがダイナミック言語の世界から開発者を引き付けているのでしょうか。最近、私の周囲では組込みシステム開発に関する話題が盛り上がりをみせています。その盛り上がりは、Webアプリケーション開発を凌ぐとさえ感じています。C++がユーザー数を増やしているというのは本当でしょうか。
Stroustrup氏の回答1: すべてのニーズを満たす完璧な言語は存在しない
The C++ community is growing in some areas and shrinking in others. It is extremely hard to find hard numbers, but my impression (based on email, conversations, conferences, books, endless visits to industrial users, sizes of vendor support groups, etc.) is that the total number of C++ users are probably is ever so slightly on the increase. I see "proofs" that C++ is declining, but those are typically exclusively based on relative measures. C++ is not growing proportionally with the number of simple web applications and the number of web sites. After all, C++'s main strengths are in infrastructure and resource constrained applications and for such areas I see no signs of shrinkage. I do believe that it is growing in absolute terms and the "portfolio" of major C++ application is not shrinking. For example, see Vincet Lextrait's documentation of historical trends for language use in major systems: http://www.lextrait.com/vincent/implementations.html (Dr. Lextrait is an executive in the French software industry, responsible for much of the software for the Amadeus airline reservation system).
C++開発者の数が増えている分野もあれば、減らしている分野もあります。正確な数字を把握することは大変難しいところですが、電子メール、意見交換、カンファレンス、書籍、企業訪問、ベンダー主催のサポートグループの規模などから受ける印象をお話しすれば、C++ユーザー数は僅かにではありますが増えていると言ってよいでしょう。C++の衰退を示すデータも目にしますが、それらはよくある相対比較値です。C++は、WebアプリケーションとWebサイトの増加数に比例して成長しているわけではありません。つまり、C++は基盤システムと資源制約のあるアプリケーション開発の面で強みを発揮しているのです。そのレベルでのC++衰退の兆候はまったく考えられません。例えば、主要なシステム開発に使用された言語の歴史的な傾向を分析したVincet Lextrait博士の論文に目を通してみてください。同博士は、フランスソフトウェア業界の重鎮であり、Amadeusエアラインの予約システムの多くを担当した経歴を持っています。
But why isn't C++ disappearing as many have fantasized about since its earliest years? It is now more than ten years since prominent people from Sun declared that "Java will kill C++ completely within two years!" Since then, the C++ community has more than trebled in size and Sun has chosen C++ for some of their key applications, such as their JVM and OpenOffice. Fortunately, there is room for many languages in the world and the world is better for having this diversity. There is no language that is perfect for everything and everybody. C++ has fundamental strengths - even compared to more recent languages:
it has a machine model that directly reflect real hardware (so it runs everywhere),
it provides abstraction mechanisms that can be used to provide a wide variety of useful mechanisms at minimal cost (so it can be used for just about anything),
it has a formal standard process (so that older code is not broken accidentally or for commercial gain), and
it has a large and lively user community that keeps throwing up interesting new ideas.
Probably my HOPL-iii paper: Evolving a language in and for the real world: C++ 1991-2006 (http://www.research.att.com/~bs/hopl-almost-final.pdf) is the best discussion of those strengths, the weaknesses of C++ (every language has some), and how the implications played out.
C++は、その誕生の瞬間から「いずれ消え去る言語」とみなされてきました。しかし、多くの人の"期待"に反して、C++は生き残っています。なぜでしょうか。彼らが当時抱いていたのは、期待ではなく幻想だったのです。10年以上前の話になりますが、Sunの著名な人々は「Javaは2年以内にC++を完全に葬り去る!」と宣言しました。宣言以後、C++コミュニティはその規模を3倍以上に増やし、JVMとOpenOfficeをはじめとするSunの代表的なアプリケーションの開発言語として採用されてきました。幸い、世界は多くの言語を必要としています。世界の素晴らしさはこの多様性にあります。すべてのニーズを満たす完璧な言語は存在しません。C++は、最近誕生した言語と比較した場合でさえ、次のような基本的な強みを持っています。
- C++はハードウェアを直接反映するマシンモデルを採用している(どこでも動く)
- C++はさまざまなメカニズムを最小のコストで提供するための抽象化メカニズムを備えている(なんでも表現できる)
- C++はフォーマルな標準化プロセスを持っている(ベンダ中立であり、古いコードが突然動かなくなるようなことはない)
- C++は新しいアイデアを次々と生み出す、大規模かつ活発なユーザーコミュニティを持っている
C++の強み、弱み(どの言語にもありますが)、そして、強弱を生み出した設計思想的な背景などをしっかり把握したい方は、私の論文『HOPL-iii paper: Evolving a language in and for the real world: C++ 1991-2006』に目を通してください。
