@krot0glot

В чём отличия языка Си и С++? Зачем нужен Си?

Пример:
Есть некий проект, он реализован через Си и С++. Какой именно проект - не помню, просто где-то видел.
Собственные мысли:
Статьи в интернете практически ничего не дали, поскольку все они сводятся к тому, что Си - процедурный, С++ - ООП. А мне бы конкретики: зачем проекту Си, когда есть С++? На данный момент могу назвать только одно отличие, что динамические массивы удобно писать на Си, и всё.
  • Вопрос задан
  • 861 просмотр
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
По учебнику, фундаментальных отличий три: классы, шаблоны и исключения. По факту там еще целый ворох мелких различий и это два вообще разных языка, хоть и слегка похожих.

C сейчас используется в основном там, где легаси (куча старого кода в проекте уже на C), или где очень жесткие требования к легкости окружения исполнения языка (микроконтроллеры всякие).
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
vabka
@vabka
Токсичный шарпист

На данный момент могу назвать только одно отличие, что динамические массивы удобно писать на Си

Да что вы? А в C++ уже есть std::vector, который будет гораздо удобнее любого велосипеда на си.

Си используют там, где нужен очень низкий уровень абстракции над железом и C++ со своим ООП, виртуальными вызовами, и исключениями будет только мешать.
Ответ написан
@dima20155
you don't choose c++. It chooses you
Начнем с того, что далеко не везде можно с лёгкостью примерять С++ в виду ряда ограничений. Также, довольно часто С++ неожиданно, может оказаться избыточным или ненужным для сфер, где необходим глубокий контроль над тем как система работает.

Для встраиваемых систем у вас может возникнуть желание реализовать контейнеры самостоятельно, а тогда встаёт вопрос а зачем вам вообще заморачиваться с добавлением поддержки плюсов в свой проект.

Ещё одной важной причиной может являться проблема с сертификацией: в МРТ аппарате или рентгеновской трубке требования к надёжности должны быть довольно серьезными, а, следовательно, необходимо доказать, что программный пакет (например, новую стандартную библиотеку из С++23) безопасно использовать в данной сфере.

Динамические массивы удобнее писать на С? А если вам нужно хранить в массиве что-то сложнее int? Все равно будет также легко, как на плюсах? Сомневаюсь.
Ответ написан
@pfg21
ex-турист
сознание человека образно, логика процессора "атомарна".
и это большая проблема - человеку напрямую писать код для процессора практически невозможно.
все языки упрощают это написание, отвязывая код от "атомарных" инструкций процессора.
чем "дальше" язык от инструкций процессора и ближе к образному мышлению человека, чем язык проще для человека-программиста.
С очень близок к инструкциям процессора.
С++ гораздо дальше.
какойнить джаваскрипт еще дальше.
Ответ написан
@AngelicCare
C милостиво теоретически дальше от доказательства, что это мы виновны через детерминистические вычисления. Сейчас только ведь уже защищённые, правда? Извините за экс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы