Упоређени програмски језици
Ц против Ц++: Где је линија још увек битна
Ц и Ц++ изгледају заменљиво на огласним таблама и понашају се другачије у пракси. Ц је преносиви транскрипт машине: сићушна времена извршавања, стабилни АБИ и језик који је написан да говори сваки ОС и језгро тумача, плаћено уском стандардном библиотеком и дисциплином меморије у потпуности на вама. Ц++ додаје апстракције као што су РАИИ, шаблони и СТЛ, који вам омогућавају да изградите велике системе без цурења свуда, плаћено временом компајлирања, грешкама шаблона и ширењем функција. Линија коју треба држати: кернели, драјвери, уграђени фирмвер и границе библиотеке остају Ц; апликације, десктоп софтвер и мотори за игре иду на Ц++.
Кључне точке
- Ц-ова стандардна библиотека за уклапање у вашу главу није проклетство за уграђене: ланац алата за нови микроконтролер прво говори Ц, често искључиво.
- Ц++ РАИИ замењује читаве класе грешака: деструктори упарени са аквизицијом ресурса претварају ручни бесплатни код у код само за подешавање.
- Задржите АБИ границе Ц: свака динамичка библиотека која се укључује у скрипт језик, језгро или дистрибуирани бинарни програм извози интерфејс у облику слова Ц.
- Савремени Ц++ (пост-11) је другачији језик: паметни показивачи, семантика померања и СТЛ одговара на већину жалби „Ц са класама“.
- Обоје деле недефинисано понашање и оно доминира постмортемима у стварним системима много више него што сугеришу дебате о карактеристикама.
- Укуси фокусирани на безбедност постоје јер сертификација захтева правила: МИСРА Ц и АУТОСАР Ц++ су облик те потражње, а не фолклор.
- Филозофија Строуструпа је 'не плаћате за оно што не користите'; мери пре него што одбије ту тврдњу у било ком правцу.
- Запошљавање се дели чисто: Ц++ столови се групишу у области финансија, игара и ХПЦ-а; Ц столови у уграђеном, кернелспацеу и системским алатима. Изаберите према својој индустрији.
Теренска биљешка
Границу Ц/Ц++ у нашој радњи поставила је библиотека, а не филозофија: свака граница додатка и Питхон екстензија које смо написали прво су извозили равни Ц АБИ, а то правило је убило десет рачуна патње.
Цесто постављања питања
Да ли је Ц++ само Ц са додатним функцијама?
Не: Ц++ компајлира већину Ц кода, али је то посебан језик са сопственом семантиком, а идиоматски Ц++ генерише различите машинске облике од идиоматског Ц.
Да ли системски пројекат треба да користи 'Ц, без класа' унутар Ц++?
Понекад; али ако имате Ц++ алатни ланац, компајлирајте у Ц-у и држите границе поштеним уместо да се кладите на дијалект, нити тестови заједнице.
Која има бољу причу о безбедности меморије?
Ни једно ни друго не испоручује изворно, што је управо разлог зашто Руст добија своје поређење. Савремени Ц++ ублажава последице помоћу РАИИ и средстава за дезинфекцију; Ц се ослања на дисциплину и алате (валгринд, УБСан).
Шта заиста одлучује између њих?
Екосистем са којим се морате повезати и тим који можете ангажовати: фирмвер и код који суседни језгру остаје Ц; велике апликације са сложеним доменима иду на Ц++.
Како Kinetikatech помаже код упоређени програмски језици
Јскрено, већина тимова дође до нас након што су прво покушали сами: Језици за системски рад, скриптовање и услуге, у поређењу са оним што је заправо битно у продукцији: безбедносне гаранције, сирова брзина, кога можете да унајмите и колико је болно постављање и закрпање резултирајућих услуга. Наша услуга Server Management и Website Maintenance постоји да се не морате упознавати с упоређени програмски језици на тежи начин; ми се бринемо о пуштању у рад, надзору и изненађењима у три ујутро.