C++で不利なところとは
パフォーマンス面
C++ 
 C++は静的な多態と動的な多態の両方をサポートする。コンパイル時に解決される静的な多態は柔軟性に劣るもののパフォーマンス面で有利である。一方、実行時に解決される動的な多態は柔軟性に優れているもののパフォーマンス面で不利である。
並列計算 
 しかし、問題点もある。並列計算を行う場合、もっともパフォーマンスを発揮するのはこれら複数のプロセッサが全て100%使い切られた時と考えられるが、従来のプログラムの多くは、複数のプロセッサを均等に全て使い切るようにはできておらず、また、そういったプログラミングは難しい。 カーネル 
 カーネル開発はプログラミングの中でも複雑で難しいタスクのひとつと考えられる。オペレーティングシステムの中核部であるということは、高い性能を要求される最重要なソフトウェアであり、正しく設計し実装することは難しい。カーネルはユーザプログラムの互換性や移植性を考慮する必要などから、設計が制限されることもあり、そのことがさらに開発を難しくしている。 中央銀行 
 中央銀行の独立性が弊害を齎す（もたらす）場合がある。中央銀行が雇用よりもインフレ抑制を志向した場合、景気対策を実施する政府の意向に対立して、独立性を持つ中央銀行が金融引締めにまわることで財政政策の効果が相殺され、デフレーションが続き、失業率が高止まりすることや、それに伴う潜在成長力低下のリスクがある。 並列計算 
 並列計算では、処理の「ある瞬間」ではそれぞれのプロセッサは実質まったく別に動作しており、そのため実行順番が全く問題にならないプログラムなら性能は引き出しやすい。しかし、先の例のように実行順番が強く束縛される場合は、あるプロセッサだけが働き、ほかのプロセッサはすることがなくなってしまうといった状態になり、性能が引き出しにくい。そのため，並列計算はそうでない場合と比べて性能を引き出すプログラミングが困難となる。 プログラミング 
 Java、C#、PHP、Python といった言語にはそのような問題がほとんどないが、性能は低い。ただし、データベースアクセスやファイル入出力が性能を決定付けるような分野では、これらの言語の性能でも何ら問題ない。また、最近ではこれらの言語の処理系でも性能が向上してきている。 プログラミング 
 続いて、全体のスタイルをおおまかに2つに分けると「トップダウン設計」と「ボトムアップ実装」になる。「なんとかの設計と実装」といったようなタイトルの本が多くあるように、どちらも重要だが、一般に対象についてよくわかっているものについてのプログラミングでは前者のスタイル、よくわかっていない場合は後者のスタイルとする。「設計された通りに実装することは不可能」といった場合に開発体勢の問題などから正しい対処がされないまま、設計と実装がちぐはぐになったプロダクトは悲惨である。また反復型開発では、あまりに大きなプログラムを一方通行のプロセスで書くことは最初から避けるものとされる。 バグ 
 AIの発達に伴い、プログラマーの書くコードをAIに監視させ、バグにつながりそうなコードを書いたら警告を与えてバグの発生を未然に防ぐ手法もある。難点としては大量の学習用データとマシンパワーが必要とされている。 リスク 
 利得がある不確実性をアップサイドリスク(Upside Risk)、損失する不確実性をダウンサイドリスク(Downside Risk)と呼ぶ。英語では、The Upside/Downside of Risk（リスクの上側部分／下側部分）という言い回しもあり、同じ意味で使われている。上記経済産業省のテキストにおいて使われている定義も、リスクとは「組織の収益や損失に影響を与える不確実性」であり、「プラスの影響とマイナスの影響のどちらも与えるものである」ことから、後者の呼び方の方が誤解が少ない。収益や損失、あるいはその可能性自体をそれぞれリスクと呼ぶのではなく包括的な不確実性をリスクと呼ぶということである。 並列計算 
 GPGPUに関しては、統合型シェーダーアーキテクチャの出現以降、NVIDIA社によるCUDA、KhronosグループによるOpenCL、マイクロソフト社によるDirectComputeといったAPIの整備・標準化も進んでいる。APIごとに特色はあるが、カーネル記述方式などに概ね似通った特徴を持つ。ただしCPUとGPUはメモリ空間が異なるため、まずCPU側のメモリからGPU側のメモリに入力データをコピーしてGPUに処理を実行させ、さらに処理後の結果を出力データとしてGPU側のメモリからCPU側のメモリにコピー（リードバック）する必要があるなど、プログラミングモデルは分散メモリ環境に近く、煩雑である。 バグ 
 論理的なバグは、プログラムの設計過程において発生する。無限ループや計算間違いなどを引き起こし、時にはコンピュータを暴走させたり、逆に停止させたりすることもある。