C++новее C, но это не имеет значения. Это разные языки.
Мат
6
Вы, вероятно, должны спросить об этом в StackOverflow или Программистах (где эта тема уже была хорошо освещена ).
rozcietrzewiacz
4
@ Mat Ну, это не совсем правильно, так как C ++ является надмножеством C. Вы можете программировать на C и компилировать его с помощью компилятора C ++. Он скомпилируется и будет работать как положено.
Там было много дискуссий по этому поводу. В основном причина философская. C был изобретен как простой язык для разработки системы (не столько разработка приложений). Есть много аргументов в пользу использования C ++, но их примерно столько же, чтобы не использовать C ++ и придерживаться C.
В конце концов, это историческая проблема. Большая часть содержимого приложения написана на C, потому что большая часть содержимого ядра написана на C. И с тех пор большая часть содержимого была написана на C, люди склонны использовать исходные языки.
В этот момент кто-то может спросить: «Хорошо, так почему же ядро написано на C, а не портировано на C ++?» , Это было обсуждено на kerneltrap некоторое время назад. Одно хорошее объяснение, которое можно процитировать из этой ветки, - это ответ yoshi314 (цитирование напрямую):
это потому, что почти каждому приложению c ++ для работы нужна отдельная стандартная библиотека c ++. поэтому им придется перенести его в ядро и ожидать дополнительных затрат везде.
С ++ - более сложный язык, и это означает, что компилятор создает из него более сложный код. из-за этого обнаружение того, что проблема связана с ошибкой компилятора, а не с ошибкой кода, легче в c.
Кроме того, язык c более скромен, и легче следовать его представлению на ассемблере, что часто легко предсказать.
C ++ более универсален, но c больше подходит для низкоуровневых или встроенных вещей.
С другой стороны, «большинство программ для Linux» вводит в заблуждение. Посмотрите на графические приложения. Python становится все более и более популярным, особенно в средах с графическим интерфейсом в Linux Примерно то же самое, что происходит с Windows и .NET.
Кроме того, C имеет стабильный ABI и может быть легко подключен к другим языкам через их собственный FFI, в то время как C ++ не имеет удобочитаемого ABI, а g ++ имел изменения в ABI. Поэтому библиотеки, как правило, пишутся на C, а не на C ++. Потому что вы хотите иметь один язык в проекте, так же как и программы, связанные с библиотекой. (По крайней мере, это была история с Gnome).
Мацей Пехотка
@MaciejPiechotka Все это правда, и это хорошее обсуждение, но c не имеет определенного ABI , за исключением того, что часто существует «очевидный» способ работать на каждой платформе. После этого следуйте за лидером.
dmckee
@ dmckee: я не заявлял, что он стандартизирован, но C API на каждой платформе следует определенным простым правилам (включая отсутствие или минимальное искажение), которые редко меняются - что делает его полезным для этой цели, даже если не на 100% правильно.
Maciej Piechotka
2
В настоящее время вы также можете учитывать, что ... * все, что вы можете делать в C, вы также можете делать в C ++ почти таким же образом, думайте также "extern C" ... * компилятор не будет делать более сложный код, если вы не пишете более сложный код ... * вы можете написать тот же самый простой материал на C ++ ... * вы можете связывать и использовать библиотеки C ++ из C. В конце концов, это довольно историческая проблема.
Зрин
7
Прочитав следующее письмо от Линуса Торвальдса, создателя Linux. Я не могу не думать, что ответ выше неверен. Кажется, он думает, что программисты на C ++ не являются хорошими системными программистами. И что дополнительные функции в C ++ часто вызывают больше проблем в долгосрочной перспективе по сравнению с преимуществами, которые они приносят в краткосрочной перспективе. Хотя с ним можно не согласиться, трудно переоценить влияние, которое он оказал на операционную систему Linux.
C++
новееC
, но это не имеет значения. Это разные языки.Ответы:
Там было много дискуссий по этому поводу. В основном причина философская. C был изобретен как простой язык для разработки системы (не столько разработка приложений). Есть много аргументов в пользу использования C ++, но их примерно столько же, чтобы не использовать C ++ и придерживаться C.
В конце концов, это историческая проблема. Большая часть содержимого приложения написана на C, потому что большая часть содержимого ядра написана на C. И с тех пор большая часть содержимого была написана на C, люди склонны использовать исходные языки.
В этот момент кто-то может спросить: «Хорошо, так почему же ядро написано на C, а не портировано на C ++?» , Это было обсуждено на kerneltrap некоторое время назад. Одно хорошее объяснение, которое можно процитировать из этой ветки, - это ответ yoshi314 (цитирование напрямую):
С другой стороны, «большинство программ для Linux» вводит в заблуждение. Посмотрите на графические приложения. Python становится все более и более популярным, особенно в средах с графическим интерфейсом в Linux Примерно то же самое, что происходит с Windows и .NET.
источник
Прочитав следующее письмо от Линуса Торвальдса, создателя Linux. Я не могу не думать, что ответ выше неверен. Кажется, он думает, что программисты на C ++ не являются хорошими системными программистами. И что дополнительные функции в C ++ часто вызывают больше проблем в долгосрочной перспективе по сравнению с преимуществами, которые они приносят в краткосрочной перспективе. Хотя с ним можно не согласиться, трудно переоценить влияние, которое он оказал на операционную систему Linux.
http://harmful.cat-v.org/software/c++/linus
источник