Разработка ядра и C ++

24
задан Community 23 May 2017 в 11:47
поделиться

2 ответа

Для решения проблем Торвальдса и других проблем, упомянутых в другом месте здесь: в системах с жестким RT, написанных на C ++, STL / RTTI / исключения не используются, и тот же принцип может быть применен к гораздо более мягкому ядру Linux. Другие опасения по поводу «модели памяти ООП» или «издержек полиморфизма» в основном показывают программистов, которые действительно никогда не проверяли, что происходит на уровне сборки или структуре памяти. C ++ столь же эффективен, и благодаря оптимизированным компиляторам во много раз эффективнее, чем программист C, плохо пишущий таблицы поиска, поскольку у него нет виртуальных функций под рукой.

В руках среднего программиста C ++ не добавляет никакого дополнительного ассемблерного кода против написанного на C фрагмента кода. Прочитав перевод asm большинства конструкций и механизмов C ++, я бы сказал, что у компилятора даже больше возможностей для оптимизации по сравнению с C, и он может время от времени создавать еще более простой код. Поэтому, что касается производительности, довольно просто использовать C ++ так же эффективно, как и C, при этом используя возможности ООП в C ++.

Таким образом, ответ таков: он не связан с фактами и в основном вращается вокруг предрассудков и не знает, что именно создает код CPP. Я лично наслаждаюсь C почти так же сильно, как C ++, и я не против, но нет никакого разумного против наложения слоев на объектно-ориентированный дизайн над Linux или в самом Kernel, это сделало бы Linux очень хорошим.

9
ответ дан SeventyFive 23 May 2017 в 11:47
поделиться

Одним из больших преимуществ языка С является его читабельность. Если у вас много кода, который более читабелен:

foo.do_something(); 

или:

my_class_do_something(&foo); 

Версия C явно указывает, какой тип foo используется каждый раз при использовании foo. В C ++ за кулисами происходит много неоднозначного «волшебства». Так что читаемость намного хуже, если вы просто смотрите на небольшой кусочек кода.

-3
ответ дан user2826084 23 May 2017 в 11:47
поделиться
Другие вопросы по тегам:

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