Programavimo kalbų palyginimas
C prieš C++: It is kur linija vis dar svarbi
C ir C++ darbo skelbimų lentose atrodo pakeičiamos ir praktiškai elgiasi skirtingai. C yra nešiojamasis mašinos nuorašas: mažos vykdymo laikas, stabilūs ABI ir kalba, kuria parašyta kiekviena OS ir vertėjo branduolys, už kurią mokama siaura standartinė biblioteka ir atminties disciplina. C++ prideda abstrakcijų, pvz., RAII, šablonus ir STL, leidžiančius kurti dideles sistemas, kad jos nenutekėtų visur, už kurias mokama už kompiliavimo laiką, šablonų klaidas ir funkcijų išplitimą. Linija, kurią reikia laikyti: branduoliai, tvarkyklės, įterptoji programinė įranga ir bibliotekos ribos išlieka C; programos, darbalaukio programinė įranga ir žaidimų varikliai veikia C++.
Pagrindiniai punktai
- C standartinė biblioteka, pritaikyta galvoje, nėra prakeiksmas dėl įterptųjų: naujo mikrovaldiklio įrankių grandinė pirmiausia kalba C, dažnai išimtinai.
- C++ RAII pakeičia visas klaidų klases: destruktoriai, susieti su išteklių gavimu, rankinį nemokamą kodą paverčia tik sąrankos kodu.
- Laikykite ABI ribas C: kiekviena dinaminė biblioteka, prijungta prie scenarijų kalbos, branduolio ar paskirstytos dvejetainės programos, eksportuoja C formos sąsają.
- Šiuolaikinė C++ (post-11) yra kitokia kalba: išmaniosios rodyklės, judėjimo semantika, o STL atsako į daugumą „C su klasėmis“ skundų.
- Abu elgesys yra neapibrėžtas, o realiose sistemose jis dominuoja kur kas labiau, nei rodo diskusijos apie ypatybes.
- Į saugumą orientuoti skoniai egzistuoja, nes sertifikavimui reikalingos taisyklės: MISRA C ir AUTOSAR C++ yra to reikalavimo forma, o ne folkloras.
- Stroustrup filosofija yra „nemoka už tai, ko nenaudoji“; prieš atmesdami teiginį bet kuria kryptimi.
- Įdarbinimas suskaidomas švariai: C++ stalų grupė finansų, žaidimų ir HPC srityse; C stalai įterptojoje, branduolio erdvėje ir sistemos įrankiuose. Pasirinkite pagal savo pramonės šaką.
Pastaba iš praktikos
C/C++ ribą mūsų parduotuvėje nustatė biblioteka, o ne filosofija: kiekviena mūsų parašyta įskiepio riba ir Python plėtinys pirmiausia eksportuodavo plokščią C ABI, ir ši taisyklė nužudė dešimt kančių.
Dažniausiai užduodami klausimai
Ar C++ tik C su papildomomis funkcijomis?
Ne: C++ sukompiliuoja daugumą C kodų, tačiau tai yra atskira kalba su savo semantika, o idiomatinė C++ generuoja kitokias mašinų formas nei idiomatinė C.
Ar sistemų projekte C++ viduje turėtų būti naudojama „C, be klasių“?
Kartais; bet jei turite C++ įrankių grandinę, kompiliuokite C kalba ir laikykitės sąžiningos ribos, o ne lažinkitės dėl dialekto, nei bendruomenė netikrina.
Kuris turi geresnę atminties saugos istoriją?
Nė vienas iš jų nepristatomas savo šalyje, todėl Rust gauna savo palyginimą. Šiuolaikinis C++ sušvelnina RAII ir dezinfekavimo priemones; C remiasi disciplina ir įrankiais (valgrind, UBSan).
Kas iš tikrųjų nusprendžia tarp jų?
Ekosistema, su kuria turite susieti, ir komanda, kurią galite samdyti: programinė įranga ir šalia branduolio esantis kodas lieka C; didelės programos su sudėtingais domenais pereina C++.
Kaip Kinetikatech padeda su programavimo kalbų palyginimas
Štai ką darome šiandien: Sistemos darbo, scenarijų ir paslaugų kalbos, palygintos pagal tai, kas iš tikrųjų svarbu gamyboje: saugos garantijos, neapdorotas greitis, ką galite samdyti ir kaip skausminga diegti ir pataisyti teikiamas paslaugas. Mūsų paslauga Serverių administravimas ir Svetainės priežiūra apima viską — nuo vertinimo iki įgyvendinimo, stebėjimo 24/7 ir skubaus reagavimo per 30 minučių.