Почему большинство программ для Linux написаны на C? Почему они не написаны на C ++, который новее?
Почему большинство программ для Linux написаны на C? Почему они не написаны на C ++, который новее?
Ответы:
Там было много дискуссий по этому поводу. В основном причина философская. C был изобретен как простой язык для разработки системы (не столько разработка приложений). Есть много аргументов в пользу использования C ++, но их примерно столько же, чтобы не использовать C ++ и придерживаться C.
В конце концов, это историческая проблема. Большая часть содержимого приложения написана на C, потому что большая часть содержимого ядра написана на C. И с тех пор большая часть содержимого была написана на C, люди склонны использовать исходные языки.
В этот момент кто-то может спросить: «Хорошо, так почему же ядро написано на C, а не портировано на C ++?» , Это было обсуждено на kerneltrap некоторое время назад. Одно хорошее объяснение, которое можно процитировать из этой ветки, - это ответ yoshi314 (цитирование напрямую):
это потому, что почти каждому приложению c ++ для работы нужна отдельная стандартная библиотека c ++. поэтому им придется перенести его в ядро и ожидать дополнительных затрат везде.
С ++ - более сложный язык, и это означает, что компилятор создает из него более сложный код. из-за этого обнаружение того, что проблема связана с ошибкой компилятора, а не с ошибкой кода, легче в c.
Кроме того, язык c более скромен, и легче следовать его представлению на ассемблере, что часто легко предсказать.
C ++ более универсален, но c больше подходит для низкоуровневых или встроенных вещей.
С другой стороны, «большинство программ для Linux» вводит в заблуждение. Посмотрите на графические приложения. Python становится все более и более популярным, особенно в средах с графическим интерфейсом в Linux Примерно то же самое, что происходит с Windows и .NET.
Прочитав следующее письмо от Линуса Торвальдса, создателя Linux. Я не могу не думать, что ответ выше неверен. Кажется, он думает, что программисты на C ++ не являются хорошими системными программистами. И что дополнительные функции в C ++ часто вызывают больше проблем в долгосрочной перспективе по сравнению с преимуществами, которые они приносят в краткосрочной перспективе. Хотя с ним можно не согласиться, трудно переоценить влияние, которое он оказал на операционную систему Linux.
C++
новееC
, но это не имеет значения. Это разные языки.