Чому більшість програм Linux написані на мові C? Чому вони не написані на C ++, що новіше?
Чому більшість програм Linux написані на мові C? Чому вони не написані на C ++, що новіше?
Відповіді:
З цього приводу було багато дискусій. Основна причина - філософська. C був винайдений як проста мова для розробки системи (не стільки розробка додатків). Існує багато аргументів для використання C ++, але є приблизно стільки ж за те, що вони не використовують C ++ і не дотримуються C.
Зрештою, це історичне питання. Більшість матеріалів програми написані на C, оскільки більшість матеріалів у kernel написано на C. І оскільки тоді більшість матеріалів було написано на С, люди прагнуть використовувати оригінальні мови.
У цей момент хтось може запитати "Добре, так чому ядро написано на C, а не перенесено на C ++?" . Про це обговорювалося в ядрі пастки деякий час тому. Одне приємне пояснення, яке можна цитувати з цієї теми, - це відповідь yoshi314 (цитуючи безпосередньо):
це тому, що майже кожному додатку c ++ для роботи потрібна окрема стандартна бібліотека c ++. тож їм доведеться перенести його до ядра і очікувати додаткових накладних витрат скрізь.
c ++ є більш складною мовою, і це означає, що компілятор створює з неї більш складний код. через це виявити, що проблема випливає з помилки компілятора, а не помилка коду легше в c.
Також мова c є більш босоніжною, і її легше дотримуватися її складання, що часто передбачити.
c ++ є більш універсальним, але c більше підходить для низького рівня або вбудованих речей.
З іншого боку, "більшість програм Linux" є досить оманливими. Погляньте на графічні програми. Python отримує все більше місця, особливо в середовищі GUI в Linux. Приблизно те саме, що відбувається з Windows і .NET.
Прочитавши наступне повідомлення від Лінуса Торвальда, творця Linux. Я не можу не думати, що відповідь, наведена вище, є невірною. Він, здається, вважає, що програмісти на C ++ не є хорошими системними програмістами. І що додаткові можливості в C ++ часто спричиняють більше проблем у довгостроковій перспективі порівняно з вигодами, які вони приносять за короткий термін. Хоча хтось може погодитися з ним, важко перебільшувати вплив, який він мав на операційну систему Linux.
C++
новішеC
, але це трохи не має значення. Вони різні мови.