質問: プログラミング言語に関する質問です。
回答: karamazohu1192さん C/C++でのwebアプリの開発の開発ということであれば、 マアー、少数派でしょう。 C/C++より少量のコードで、簡単に、上位常連に入れる程度の性能のWebアプリが作れるJava言語の方が多く使われています。 <高速化が容易> 下記URLに、同一仕様のWebアプリケーションを、20種類近い言語で記述して、性能競争した結果が掲載されています。 上位常連はJava言語です。 なぜC/C++で、Webアプリケーションを作ると、C/C++が不利なのかというと、 C++で高い性能を出している例は少数ですが在るものの、C言語で下記サイトの競争に参加しているチームはモウ在りません。 細かいマシン語レベルの工夫よりも、”大規模な構造”のアルゴリズムでの工夫のほうが高い性能を出せます。 <大規模化が容易> C/C++には、自然石の石組みの様に、不規則で積み上げ難い部品となりなちで、”大規模な構造”の構築を作ることを支援する機能が無いのです。 C++をベターユースすれば、大規模なプログラムを作れないことは無いのですが、C言語の悪しき機能を ツイツイ 使ってしまって、簡単に破綻してしまいます。 一方、Java言語は、”大規模な構造”を維持することを阻害する機能が排除され、レンガ積みの城壁のように、簡単に大規模な構造を作ることができるように、言語仕様も洗練され、標準ライブラリも完備しています。 C++で、上記サイトでの性能競争で、上位に入っているhhvmとcpoll_cppsp-rawのチームは、Javaの標準ライブラリ並みに 多種のライブラリを、自前で揃えたという、力技を使ったからです。 さらに、hhvmなど、Facebook社という大きな組織が開発したシステムで、PHP風な言語で記述して、C++のコードに変換して、C++をコンパイルして動かすという、コンパイラまで作るという力技まで用いています。 <高品質で頑健なシステムの実現が容易> 昔、C/C++でWebアプリを作ることが流行っていた時期もありました。 でもC/C++では、「何回も繰り返し実行すると、メモリリークして、Webサーバ・プロセスが丸ごと止まってしまうことが多い」という経験則が、Apatch httpsdサーバのMaxRequestsPerChildというパラメタの標準値に反映されています。 さように、C/C++では、「繰り返し実行できるコードを確実に作る」ということが難しかったのです。 一方、Java言語では「繰り返し実行が出来ないコードなど、作り様が無い」という仕掛けが標準装備されています。 参考「 MaxRequestsPerChildは、子プロセスが停止するまでそれぞれの子サーバープロセスが処理する要求の総数を設定します。 MaxRequestsPerChildを設定する主な理由は、長期に生き続けるプロセスで誘導されるメモリリークを回避するためです。 MaxRequestsPerChildの標準値は10000。 」