Я думаю, что для ответа на ваши вопросы нам нужно задать следующие вопросы: «Что получают другие языки / экосистемы, имея собственный централизованный репозиторий пакетов?» и "Применимо ли это к C / C ++?"
Я чувствую, что ответ на первый вопрос как-то связан с первоначальным продвижением нового языка: новички хотят как можно проще для новичков войти в экосистему, приобрести полезный, протестированный код и внести свой вклад. По понятным причинам «граф использования» всегда имеет единственного корня - создателя (ов) языка. Обычно существует одна ссылочная реализация (по крайней мере, на начальном этапе), и поэтому любой код, которым вы можете поделиться, должен соответствовать ей.
Это позволяет легко создавать пакеты, которые просто скачивают и компилируют. Конечно, если бы C или C ++ были введены в 2013 году, их сообщества могли бы пойти по схожему эволюционному пути, но у них не было и нет единого преобладающего набора инструментов, к которому можно было бы применить менеджер пакетов. Это делает реализацию такой программы слишком хлопотной, чтобы стоить хлопот. (следует ли пользователям выбирать между libfoo-gcc и libfoo-vs? Вы оставляете решение для упаковщика? Или процесс сборки? Если да, то чем пакет отличается от обычного тарбола?)
Итак, чтобы подвести итог моего ответа на первый вопрос, я думаю, что модель создания менеджеров пакетов служит в основном движущей силой принятия .
Имея это в виду, я думаю, что довольно легко понять, почему ни одна система не возникла, чтобы удовлетворить эту потребность - потому что потребности в программистах на C и C ++ не существует. Что представляет собой проблему для сообщества C и C ++ (или любого сообщества программистов, на самом деле), так это изначально подразумеваемая необходимость: распространять, обновлять и предоставлять код. Это неоднократно решалось разными людьми с разной степенью успеха, и действительно одна система завоевывает значительную долю рынка: git (и некоторые другие системы до этого).
В основном, когда проблемы различаются, решения тоже выглядят по-разному, но ИМХО разница между набором текста gem install
и git clone
спорная.