ブロガー、インフルエンサー、C++標準委員会は、モダンC++の使用を積極的に提唱しています。ブロガーやインフルエンサーは、記事、チュートリアル、ソーシャルメディアを通じて、最新のC++標準の利点と革新的な機能を強調し、プログラミングコミュニティの教育と刺激を目指しています。彼らの集団的な努力は、開発者にモダンC++を採用し、その高度な機能を活用してより効率的で保守しやすく堅牢なコードを書くことを奨励することに向けられています。
しかし、すべてのC++開発者がモダンC++の採用に同意しているわけではありません。さまざまな理由から、C++の最小限のサブセットの使用を提唱するOrthodox C++アプローチが登場しました。
Orthodox C++は、その 支持者
による定義では、 C+とも呼ばれ、Cを改善しながら、いわゆるモダンC++の不要なものをすべて回避する、C++の最小限のサブセットです。これは、モダンC++が目指すものの正反対です。
要約すると、Orthodox C++の支持者は、Bjarne Stroustrupが40年前に提示したC++の採用者です:
Orthodox C++アプローチのプロジェクト例をいくつか挙げます:
- DOOM 3 BFG
- Qt (no-rtti、no-exceptionsでビルドした場合)
- dear imgui
- bgfx
- TheForge
- Oryol
- Network Next SDK
推奨されるOrthodox C++ルール:
- C風のC++は良い出発点です。コードがそれ以上の複雑さを必要としない場合は、不必要なC++の複雑さを追加しないでください。一般的に、コードはC言語に精通している人なら誰でも読めるべきです。
- このようなことはしないでください this。Orthodox C++における「設計根拠」の終わりは、「非常にシンプルで、使える。 EOF」の直後であるべきです。
- 例外は使用しないでください 例外。
- RTTIは使用しないでください。
- CランタイムインクルードのC++ランタイムラッパーは使用しないでください(
<cstdio>、<cmath>など)。代わりにCランタイムを使用してください(<stdio.h>、<math.h>など)。 - ストリームは使用しないでください(
<iostream>、<stringstream>など)。代わりにprintfスタイルの関数を使用してください。 - メモリを割り当てるSTLのものは何も使用しないでください。
- 学術的な自己満足のためにメタプログラミングを過度に使用しないでください。必要な場所でのみ、コードの複雑さを減らす場所でのみ、適度に使用してください。
ご覧のとおり、Orthodox C++の支持者はC++の最小限のサブセットの使用を提唱していますが、オンラインの情報源によると、彼らは少数派のようです。実際、多数派はモダンC++の使用を支持しています。しかし、より広いC++開発者コミュニティに関しては、疑問が残ります。ほとんどの開発者はモダンC++の機能を積極的に使用しているのでしょうか、それとも主に基本的なC++の概念に依存しているのでしょうか?
これに正確な答えを出すことはできませんが、多くのプロジェクトがレガシーコードベースのためにOrthodox C++アプローチに従っているのは明らかです。これはしばしば開発者がモダンC++への移行を妨げ、基本的なC++の概念への継続的な重点をもたらしています。
