8 ポイント 投稿者 xguru 2022-09-27 | 6件のコメント | WhatsAppで共有
  • Google Chromeチームが、C++20導入時に発生した40件あまりの問題点を列挙し、解決策を整理
  • C++標準は3年ごとに策定されるが、リリース後にChromeで最初に適用されるのは3年後になることが多い
  • C++20には多くの変更がある
    • 廃止予定、比較演算子の並べ替え、アグリゲーション規則の変更など
  • 問題点
    • GoogleのスタイルガイドがC++17ベース
    • ClangのC++20対応が未完成で、新しいlibc++が必要
    • Windowsバイナリが大きくなる
    • std::iteratorのサポート終了(C++17から)
    • conceptrequires のような新しいキーワードが追加され、同名の変数があると衝突する
    • そのほか多数

6件のコメント

 
galadbran 2022-09-27

えっ… C++くらいの言語がブレイキングチェンジをたくさん生み出しちゃだめなんじゃないですか… ただの私の固定観念なんでしょうか…

 
qwery 2022-09-28

だからC++は変な言語なんですよね..
言語はバージョンアップを重ねるたびにモジュールだのコルーチンだのいろいろ追加されて、何でも自分でやろうとするし、
機能が出てもコンパイラにその機能が追加されるのは4年後5年後だったりするし、
コンパイラごとにできることに差があって文法も少しずつ違うし、
バージョンアップで今まで普通に使えていた細かいものがどんどんなくなっていくし、
STLも肥大化して、バージョンアップが進むと旧世代のコンピュータでは動かなくなるし..
使うならGoやPythonを使えと言いたいですね

 
heal9179 2022-09-28

バージョンアップに伴って下位互換性が維持されなかった項目は、
ほとんどが未定義動作や欠陥のある機能を改善したケースです。
モジュール、コンセプト、コルーチンのような機能は、他の言語と同じように言語が継続的に発展しているということです。
特にモジュールについては、以前からずっと存在していた要求事項ですね。

 
functor 2022-09-29

std::iterator の廃止予定化が、おっしゃる「未定義動作や欠陥のある機能を改善」したケースに含まれるのかは、よく分かりません。

 
heal9179 2022-09-28

ただし、C++が他の言語と比べて遅れている点は、主に次のとおりです。

  1. パッケージマネージャー
  2. コンパイラの断片化
  3. 複雑なコンパイル方式(Make、CMakeの追加学習が必要)
  4. コミュニティの無関心

このうち、コミュニティの無関心によって質の高い記事が非常に不足しており、
利用者数の少なさのために残り3つの問題が解決されないことが大きいと考えています。

 
deokim 2022-09-28
  • Rust