Audes
@Audes

Почему C всё еще актуален?

Почему C++ не заменил его?
Из вики:
... Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. ...

Что пошло не так? Почему же С более эффективен?
  • Вопрос задан
  • 1199 просмотров
Решения вопроса 1
@MiiNiPaa
С очень активно используется в embedded программировании: С проще чем С++. Для него проще написать компилятор. Ресурсы управляются вручную и их расход легче контролировать.

С++ очень зависит от качества оптимизатора в компиляторе. Если у вас хреновый компилятор, то для максимальной эффективности придётся писать на «устаревшем С с классами». А для всяких специфических железок компиляторы обычно хреновые.

Взгляните на стандартную библиотеку: она написана для использование в дико ограниченных условиях: все параметры и результат умещаются в регистрах (поэтому много указателей), никакого выделения памяти в функциях (поэтому куча функций вроде gmtime, и даже _s функции в С11 пишут в переданный объект). Это позволяет использовать С в системах реального времени без сильных ограничений на библиотеку и язык.

С и С++ занимают разные ниши и поэтому не могут заменить друг-друга.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 8
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
По-тому, что его достаточно для решения возложеных на него задач, а "оверхед" у него меньше, чем у C++.
Хотя некоторые товарищи пытаются на нем делать ООП, что выглядит сомнительно, но работает.
Ответ написан
terrier
@terrier
Пусть ответит один из наиболее компетентных в практическом смысле C-программистов: harmful.cat-v.org/software/c++/linus

tl;dr : С более портабелен, более эффективен, проще отлаживается и не привязывает к неэффективным моделям
Ответ написан
Комментировать
@Eddy_Em
Потому что лучше ЯП еще не придумали. А С++ — убожество какое-то!
Ответ написан
Комментировать
Olej
@Olej
инженер, программист, преподаватель
Почему же С более эффективен?

С создавался для написания ОС UNIX, и во всех UNIX-like ОС он - основа.
Всё, что касается ядра Linux (модули, драйверы) пишется на C и только C.
Львиная доля из сотен утилит Linux/GNU первоначально были написаны на C ... хотя некоторые и были позже переписаны ... на Python и др.
Так что C все 40 или более лет оставался шире используемым на практике, чем C++.
А сейчас на смену C++ ещё выходит и язык Go - преемник C "40 лет спустя".
Ответ написан
Комментировать
tlito
@tlito
drupal, c++, seo
это не так. си++ более эффективен
Ответ написан
Drakonn
@Drakonn
Инженер-программист
в основном на Си пишут ПО на микроконтроллеры, потому как там выбор не большой, либо ассемблер, либо Си
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Программирование
software engineer
С++ заменил С во все областях, где он эффективнее (ентерпрайз, прикладное программирование).

Но в системном программировании С не хуже, в embedded он лучше.
Ответ написан
Комментировать
@komjaga
Программист встроенного ПО
Ядро linux написано на Си
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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