Почему большинство программ Linux записано в C?

ZSH имеет глобальные псевдонимы. Это разворачивает псевдоним где угодно в командной строке. Я нашел это полезным для имен хостов:

Например:

alias -g sub='sub.domain.tld'

Затем я могу сделать, например:

sftp sub
ssh sub

и т.д.

30
10.03.2017, 02:40
3 ответа

Было много дискуссий об этом. Главным образом причиной является философская. C был изобретен как простой язык для разработки системы (не такая разработка приложений). Существует много аргументов в пользу использования C++, но существует о как многие для того, чтобы не использовать C++ и придерживаться C.

В конце это - историческая проблема. Большая часть материала приложения записана в C, потому что большая часть материала Ядра записана в C. И так как тогда большая часть материала была записана в C, люди склонны использовать языки оригиналов.

На данном этапе кто-то мог бы спросить "хорошо, итак, почему ядро записано в C и не портировано к C++?". Это было обсуждено на kerneltrap некоторое время назад. Одно хорошее объяснение, которое может быть заключено в кавычки из этого потока, является ответом yoshi314 (заключающий в кавычки непосредственно):

поэтому почти для каждого приложения C++ нужна отдельная библиотека стандарта C++ для работы. таким образом, они должны были бы портировать его на ядро и ожидать дополнительные издержки везде.

C++ является более сложным языком, и это означает, что компилятор создает более сложный код из него. из-за этого, находя, что проблема происходит от ошибки компилятора, а не ошибка в коде легче в c.

также язык C является более базовым, и легче следовать за своим представлением блока, которое часто легко предсказать.

C++ более универсален, но c больше подходит для низкого уровня или встроенного материала.


С другой стороны, "большинство программ Linux" является довольно вводящим в заблуждение. Смотрите на графические приложения. Python получает все больше земли особенно в средах GUI на Linux. О том же самом это происходит с Windows и.NET.

37
27.01.2020, 19:38
  • 1
    Дополнительно C имеют стабильный ABI и могут быть легко включены на другие языки через их собственный FFI, в то время как C++ не имеет человекочитаемого ABI, и g ++ имел изменения в ABI. Поэтому библиотеки были склонны быть записанными в C скорее затем C++. Поскольку Вы хотите иметь один язык в проекте так сделал программы, связанные библиотекой. (По крайней мере, который был историей с Gnome). –  Maciej Piechotka 31.10.2011, 01:33
  • 2
    @MaciejPiechotka Все это верно, и это - хорошее обсуждение, но c не имеет определенного ABI, за исключением того, что часто существует "очевидный" способ работать вещи над каждой платформой. После этого это, следуют за лидером. –  dmckee --- ex-moderator kitten 01.11.2011, 02:34
  • 3
    @dmckee: Я не заявил, что это стандартизировало, но API C на каждой платформе следует определенным простым правилам (включая никакое или минимальное искажение), который редко изменяется - который делает это полезным для цели, даже если не 100% исправляют. –  Maciej Piechotka 01.11.2011, 15:08
  • 4
    В наше время можно также полагать, что... * все можно сделать в C, который можно также сделать в C++ в значительной степени тем же способом, думайте также "экстерн C"... *, компилятор не сделает более сложный код, если Вы не напишете более сложный код... *, можно записать тот же базовый материал в C++... *, можно связать и пользоваться библиотеками C++ от C. В конце это вполне историческая проблема. –  Zrin 12.12.2014, 23:04

После прочтения следующего письма от Линуса Торвальдса, создателя Linux. Я не могу не думать, что приведенный выше ответ неверен. Похоже, он думает, что программисты на C ++ - плохие системные программисты. И что дополнительные функции C ++ часто вызывают больше проблем в долгосрочной перспективе по сравнению с преимуществами, которые они приносят в краткосрочной перспективе. Хотя с ним можно не согласиться, трудно переоценить влияние, которое он оказал на операционную систему Linux.

http://harmful.cat-v.org/software/c++/linus

7
27.01.2020, 19:38

Я думаю, рядом с техническими темами об использовании C стоит децентрализация системы linux, строго централизованная система Windows :AD и т. д. Linux создается многими людьми по всему миру, и у него нет таких инструментов, как AD, хорошо, у нас есть OpenLdap, но в Linux каждая программа работает как отдельное приложение. Конечно, историческая причина является наиболее важной. Я не представляю, кто будет заботиться о безопасности приложений `объектов, если Linux будет написан на Object C++.

0
07.12.2020, 06:15

Теги

Похожие вопросы