インフィニティソリューションズ株式会社ブログ

C++がセンターポジション獲得へ?!

現在PHPのエンジニアを募集しているが、なかなかいない。「AndroidやJavaのエンジニアは沢山いるが、PHPのエンジニアは少ない」と言われる。「一時期PHPのエンジニアは沢山いたんですけどね」とも言われる。急にPHPのエンジニアがいなくなるわけではないはずなので、かつてPHPの看板を出していたエンジニアも時代の流れに応じて「Android」や「Java」の看板にすげ替えているのかと思う。C++のエンジニアもPHPと似た感じで、少ないように思われる。

Javaだろうが、PHPだろうが、C++だろうが、所詮は言語であり、もちろんそれぞれの方言、スタイルはあるにせよ、ロジックを表現する手段に過ぎないので、特定の言語にこだわるのはいかがなものかとは思う。ただ世の中、流行、廃りがあるわけで、それに対応していくことも必要だ。そう考えるとC++の看板を出す必要があるかもしれないし、今から出すのでは遅いかもしれない。

というのも、SD Timesによれば、今年はC++の年になる、というのだ。しぶとく生き残っている感はあるものの、センターポジションにつくほどではないようにも思えるが。

From the Editors: C++ moves front and center(編集者から:C++が前面、センターに移る)

‘…C++ has remained the sine qua non of modern object-oriented languages, in part due to its genuine foothold in standards (ISO/IEC JTC 1/SC22/WG21), in part due to its long history, in part due to its ubiquity in commercial development, and in part because it’s a solid language that continues to evolve. ‘

「C++は現代のオブジェクト指向言語に必須のものとして残っている。これは、標準(ISO/IECJTC1/SC22/WG21)に確固たる地位を占めていること、長い歴史があること、商用開発ではどこでもあること、常に進化する確かな言語であることなどが要因であろう。」

ISO IEC JTC1 SC22 WG21 - The C++ Standards Committee

‘One can be a fan of C++ and also recognize its shortcomings. The language is complex. It can be cryptic and hard for humans to read; it’s never easy to come up to speed on a large C++ codebase. The language doesn’t play well in managed environments, and coders and testers are responsible for trapping a lot of bad behavior. C++ isn’t Basic.’

「C++のファンであれば、その欠点もわかる。言語は複雑だ。不可解で人間にとっては読みにくいものになりえる。大規模はC++コードベースではスピードを上げることは難しい。この言語は管理された環境ではうまく動かないし、プログラマーやテスターは変な動作を探し出す責任を負うことになる。C++はBasicではないのだ。」

–なのだが、

‘We are impressed with the changes appearing in the new C++11 standard released last November, as described by Larry O’Brien in “Building blocks for the future.” (p. 47). The work with type inference, lambda functions, range-based for loops and concurrency is solid. We don’t expect compiler and tool makers to have trouble adapting their software to handle the new C++11 features. Developers may take some time to understand and begin adopting those features, such as lambda functions. But coders will embrace them, once they understand them. ‘

「Larry O’Brien氏が『将来に向けてのビルディング・ブロック』で書いている通り、昨年11月にリリースされた新しいC++ 11で盛り込まれた変更は高く評価できる。タイプ・インタフェース、ラムダ関数、range-based for loopや同時実行は確かなものだ。コンパイラメーカやツールメーカが新しいC++ 11の機能を取り扱えるようにすることに問題があるとは思えない。開発者はラムダ関数など、これらの機能を理解し、使い始めるまでに多少時間がかかるかもしれないが、プログラマーは一度理解すれば、愛用するようになるだろう。」

‘C++, though, whether alone or in conjunction with other languages, is reasserting itself as the foundational language for application development. Unless a developer wants to live entirely within a managed environment like a JVM or the .NET CLR, C++ knowledge is essential, and of course knowing C++ makes it easy to learn Java, C++, Objective-C and other “C-like” languages.’

「しかしC++は、それ自体あるいは他の言語と関連しても、アプリケーション開発にとって、基礎的な言語である。開発者がJVMや.NET CLRのような完全にマネージされた環境でしか生きていかないということでない限り、C++の知識は必須で、C++を知っていれば、Java、C++、Objective-C、その他の『Cのような』言語を学ぶのも楽だ’。」

‘Yes, 2012 is the Year of C++, like the years before it, and the years that will come after.’

「そう、2012はC++の年。これまでも、これからも。」

— いくら言語が良くなっても、そう簡単にはセンターポジションを獲れるとは思えないが。