Я думаю, що питання, які нам потрібно задати, щоб відповісти на ваші, - це "Які інші мови / екосистеми отримують від власного централізованого сховища пакетів?" та "Чи це стосується C / C ++?"
Я відчуваю, що відповідь на перше запитання має щось спільне з первинним просуванням нової мови: ранні усиновлювачі хочуть зробити так, щоб новачки могли якомога простіше в'їхати в екосистему, придбати корисний, перевірений код та внести свій власний внесок. З зрозумілих причин, "графік використання" завжди має один корінь - творець (-ів) мови. Зазвичай існує одна контрольна реалізація (принаймні спочатку), і тому будь-який код, яким ви хочете поділитися, повинен відповідати їй.
Це дозволяє легко створювати пакети, які просто завантажують і компілюють. Безумовно, якби C або C ++ були представлені в 2013 році, їхні громади могли піти подібним еволюційним шляхом, але вони не мали і немає жодного єдиного ланцюжка інструментів, до якого можна застосувати менеджер пакунків. Це робить реалізацію такої програми занадто клопіткою, щоб її вартувати зайвих проблем. (чи варто змусити користувачів вибирати між libfoo-gcc та libfoo-vs? Ви залишаєте це для упаковки, щоб вирішити? Або процес збирання? Якщо так, як пакет відрізняється від прямого тарболу?)
Отже, підводячи підсумки моєї відповіді на перше запитання, я думаю, що модель створення менеджерів пакунків служить здебільшого для сприяння прийняттю .
Зважаючи на це, я думаю, що досить легко зрозуміти, чому жодна система не піднялася для задоволення цієї потреби - тому що для програмістів на C і C ++ немає потреби. Що є проблемою для спільноти C та C ++ (або будь-якої спільноти програмістів, насправді), це спочатку передбачається потреба: розповсюджувати, постійно оновлювати та надавати зворотний код. Це багато разів вирішувалося різними людьми з різним ступенем успіху, і дійсно одна система здобуває значну частку ринку: git (та деякі інші системи до цього).
В основному, коли проблеми відрізняються, рішення також виглядають по-різному, але ІМХО різниця між введенням тексту gem install
і git clone
суперечкою.