C++について、このようなコメントを何度読んだことがあるでしょうか。
C++は、経験豊富なC++開発者にとってさえ難しい言語です。 最も単純なアルゴリズムでさえ、 言語の多くの微妙な点を説明しなければなりません。Hello Worldの例を考えてみましょう。
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
}これは その #include コマンドですか? これは std::cout。 なぜ その ::ですか? これは 何 <<ですか? ああ、オーバーロードされた演算子なんですね!オーバーロードされた演算子とは何ですか?なるほど、 では ints、 ビットシフトを行いますが、 それが std::cout 何であっても、コンソールに出力します。ああ、 std::cout はストリームであり、ストリームには その << と >> 演算子 がオーバーロードされています。同じサンプルをPythonで見てみましょう。
print("Hello World!")この観察は、標準が提供するメソッドやユーティリティを直接使用する場合には当てはまるかもしれません。しかし、実際のC++プロジェクトではそうではありません。実際、多くのC++プロジェクトには次のようなコードが含まれています。
#include "utilities"
int main()
{
print("Hello World!");
}std::coutを通じてコンソール出力のための低レベルメカニズムと、それが提供するすべての可能性があるという事実は、他の多くの言語には見られない豊かさを言語に与えています。その豊かさを最大限に活用して、読みやすく、保守しやすく、効率的なコードを作成するのはあなた次第です。
同じ観察は、過度に複雑と見なされるあらゆるC++コードに当てはまります。C++では、その使用を簡素化し、複雑さを隠すライブラリを提供するために必要なすべてが揃っており、言語を扱いやすくしています。
別の例を取りましょう。ファイルを開いてその内容をすべて読み取る場合です。C#では、次のようにできます。
string text = System.IO.File.ReadAllText(@"C:\Users\Public\TestFolder\WriteText.txt");
しかし、C++で同じことをするのを妨げるものはあるでしょうか?
string text = FileHelper.ReadAllText(@"C:\Users\Public\TestFolder\WriteText.txt");
しかし、多くの開発者は尋ねるかもしれません。やりたいことを簡単に行うために、なぜ別のライブラリが必要なのでしょうか?なぜこれらの便利さを標準ライブラリに組み込まないのでしょうか?
おそらく最良の答えは別の質問です。なぜすべての言語にこれほど多くのライブラリがあるのでしょうか?遅かれ早かれ、最も簡単な言語でも外部ライブラリを使用する必要があります。そして実際のプロジェクトでは、Pythonでさえ、多くの外部ライブラリとともに、社内ライブラリがよく使用されます。
プログラミング言語は、それが提供する機能を使用するために必要な基本的なスキルを持つエンジニアのためのものであることを忘れないでください。どの分野でも、エンジニアの仕事は問題を分析し、適応し、効率的なソリューションを提供することではないでしょうか?C++は低レベルかもしれませんが、より多くの可能性を提供しており、その豊かさは問題を効率的に解決するのに役立ちます。
個人的には、私が携わった多くのC++プロジェクトでは、繰り返し発生するタスクを簡素化する社内ライブラリがありました。繰り返し発生するニーズに遭遇した開発者は、ライブラリへのユーティリティの追加を提案でき、チーム全体がこれらの追加から恩恵を受けました。このアプローチは、チームにC++の達人やエキスパートを必要としません。単なる常識です。。
