Здравствуйте, so5team, Вы писали:
S>Речь не про привыкнуть, а про то, что после изучения нескольких фич C++ использование C++ для конкретного разработчика перестает быть проблемой. Тут дело не в привычках, а в знаниях и опыте.
Никакая конкретная фича C++ не является сама по себе проблемой. Проблемой является невероятная сложность, необъятность и запутанность языка в целом.
S>А вот тут обеспечивает как раз таки. Целиком и полностью. Ибо возможностей для разработки своих абстракций или выражения ограничений нет от слова совсем.
Обстракции, хм. Для обстракциев языку не помешало бы иметь алгебраические типы, паттерн матчинг, лямбда-функции и замыкания. Этого всего нету ни в C, ни в C++, ни в моем любимом Go. В Go, впрочем, немножко есть, но в очень уж зачаточном виде.
Отсутствие в языке абстракций не очень заметно, когда пишется какая-нибудь хрень, типа драйвера устройства, но когда надо делать нетривиальные операции с нетривиальными данными (например, написать оптимизирующий кодогенератор для компилятора), то их отсутствие становится очень заметным.
Pzz>>В целом, в проекте на C++ может быть меньше кода за счет более широкого использования сторонних библиотек и фреймворков (которые зачастую проще найти, годные, для C++, чем для C), но если говорить о написании нового, оригинального кода, а не об интеграции посторонних библиотек, код на C получается компактнее.
S>Нуждается в доказательствах.
Ну какие тут могут быть доказательства? Могу лишь сослаться на свой собственный опыт, но кто ж его примет в качестве доказательства?
Pzz>>а от людей, которые им пользуются.
S>Тогда нужно определиться с предметом обсуждения: либо обсуждаются свойства языка, которые могут быть использованы при должном уровне подготовки разработчика. Либо обсуждаются сами разработчики.
Это взаимосвязанные вещи. Языком пользуются люди, люди имеют свои ограничения, глупо их не учитывать. В общем и целом, человек не способен удерживать в голове слишком сложную конструкцию, язык (и прочие инструменты) должен способствовать упрощению вещей, а не наоборот.
S>Вы не поняли. Достижения Торвальдса не ставятся под сомнение. Упор делается на то, что разработка ядра Linux-а или git-а принципиально отличается от коммерческой разработки под заказ или коммерческой разработки коробочного продукта. Поэтому то, что хорошо работало для Торвальдса не обязательно должно работать для условных "Рогов и Копыт".
Единственное принципиальное отличие, которое вижу я, заключается в том, что линуксоиды не могут просто так взять и потратить несколько миллиардов долларов на разработку очередной версии ядра. Поэтому в ядре линиха около 300 системных вызовов, а не несколько тысяч, как в менее ограниченных в бюджете операционных системах.