Другие языки программирования и технологии

почему C++ тупее чем C? (ответ знаю, но интересует ваше мнение)

Выше степень формализации (и не только за счет объектов) , еще большая степень ухода от низкоуровневого программирования, как следствие - больше ограничений или соглашений, которые обойти нельзя или трудно.

UPD

> критерии: скорость выполнения кода, скорость компиляции, скорость обработки
> даных.

С этим тоже все логично. Повышение универсальности оплачивается избыточностью. В том числе, избыточностью кода.
Не всегда, но очень часто, избыточность - причина того, что Вы привели в качестве критериев.
Ivan Khmelnoy
Ivan Khmelnoy
8 518
Лучший ответ
Потому что плюс на плюс дает минус )))
А с чего это он тупее?
Решение задач, которые на него возложены, средствами, которые он предоставляет, порождает необходимость решения дополнительных, совершенно ненужных логических задач - эт да. Но C++ не тупее C.

Шаблоны и макросы. Их нельзя скомпилировать, их можно поставлять только в исходном коде. Организация модульности средствами препроцессора. Куча заголовочных файлов, которые приходится каждый раз парзить при компиляции - это о скорости компиляции.
Постоянное выделение/освобождение памяти в куче, копирование объектов (скажем, возвраты по значению и передача параметров в большой цепочке вызовов при инкапсуляции в стиле C++) - являются причиной падения производительности программ C++ в сравнении с программами на процедурных языках, но это всё фигня по сути.
Главная причина падения производительности программ - повышение абстрактности, которое достигается уточнением терминов и понятий предметной области до реализации средствами примитивов, поддерживаемых вычислительной платформой. Для того, чтобы перейти на более высокий уровень абстракции, необходимо, чтобы предыдущий уровень был законченным, робастным и притом достаточно гибким - а это порождает дополнительный код, слой в такое состояние слой приводящий, поддерживающий его и корректно это состояние снимающий. Добавим теперь сюда код, обслуживающий переносимость (например, контракты и инварианты, которые в данной конкретной ситуации излишни, но, в случае отрыва ОО-кода от контекста и перенесения его в другую систему, могут оказаться весьма полезными) - вот тут производительность падает драматически.
Впрочем, вычислительное оборудование средней категории сейчас обходится дешевле месячной зарплаты программиста C++ средней категории, так что падение производительности приложений - не главная беда, если только речь не идёт о мобильных и встраиваемых системах.
Гарик Рай
Гарик Рай
9 617
Это с какой стороны посмотреть...
MS
Muhammed Seul
2 409