あなたの質問に答えるために私たちが尋ねる必要がある質問は、「他の言語/エコシステムは、独自の集中化されたパッケージリポジトリを持っていることから何を得るのだろうか?」および「これはC / C ++に適用されますか?」
最初の質問に対する答えは、新しい言語の最初のプロモーションに関係していると感じています。早期採用者は、初心者がエコシステムに参入し、有用でテスト済みのコードを取得し、独自に貢献することを可能な限り簡単にしたいと考えています。明らかな理由から、「使用状況グラフ」には常に単一のルート(言語の作成者)があります。通常、(少なくとも最初は)1つの参照実装があるため、共有したいコードはそれに準拠する必要があります。
これにより、ダウンロードしてコンパイルするだけのパッケージを簡単に作成できます。確かに、CまたはC ++が2013年に導入された場合、コミュニティは同様の進化パスをたどることができましたが、そうではなく、パッケージマネージャーを適用する単一の一般的なツールチェーンはありませんでした。これにより、このようなプログラムの実装は面倒になりすぎて面倒になりません。(ユーザーにlibfoo-gccとlibfoo-vsのどちらを選択させるべきですか?解決するのはパッケージャーに任せますか?それともビルドプロセス?もしそうなら、パッケージはストレートアップtarballとはどう違うのですか?)
したがって、最初の質問に対する私の答えをまとめると、パッケージマネージャーを作成するパターンは、主に採用を促進するのに役立つと思います。
そのことを念頭に置いて、このニーズを満たす単一のシステムがない理由を理解するのはかなり簡単だと思います-ニーズはCおよびC ++プログラマには存在しないからです。CおよびC ++コミュニティ(または実際にプログラマコミュニティ)にとって問題となるのは、元々暗示されていた必要性です:配布し、最新の状態に保ち、コードを貢献することです。これは、さまざまな成功度の異なる人々によって何度も解決されており、実際、1つのシステムが大きな市場シェアを獲得しています:git(およびそれ以前の他のシステム)。
基本的に問題が異なる場合、ソリューションも異なって見えますが、入力gem install
と入力の違いgit clone
は無意味です。