NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
LT

Programavimo kalbų palyginimas

C: It is kalba, kuria veikia visa kita

C yra kalba, esanti po viskuo: branduoliai, tvarkyklės, vertėjai, kuriuos paleidžia jūsų Python serveriai, duomenų bazės varikliai, esantys už jūsų svetainių. Operacijų komandoms C yra mažiau tai, ką rašote kiekvieną dieną, o daugiau tai, ką privalote laisvai skaityti, nes CVE užrašai, krūvos pėdsakai ir pagrindinės sąvartynos atlieka savo veiklą C žodyne. Tai yra specialus straipsnis, skirtas mūsų C ir C++ palyginimui.

Pagrindiniai punktai

  • Modelis yra sąžiningas: rankinė atmintis per malloc/free, aritmetika ant rodyklių ir neapibrėžtas elgesys kaip specifikacijos lygio tiesa, o ne klaidų kategorija; disciplina, kuri daro C greitą, yra ta pati disciplina, dėl kurios neatsargus C brangus.
  • Neapibrėžtas elgesys yra besisukantis pavojus: ribų indeksavimas, pasirašytas perpildymas, naudojimo po laisvo klasės, kurios tiesiogiai atitinka atminties saugos CVE šeimas (beveik po vieną įtrauktos į CVE duomenis dešimtmečiais); fuzeriai (AFL-libFuzzer klasės įrankiai) ir dezinfekavimo priemonės spėjimus paverčia repro sąlygomis.
  • Derinimo įrankis yra pasaulinio lygio ir vertas žinoti: gdb, valgrind/memcheck, AddressSanitizer ir jo giminės (UBSan, TSan) bandymo metu užfiksuoja klaidų klases, kurias tik reiškia gamybos dėklo pėdsakai; Dėl šio derinio „kurti naudojant dezinfekavimo priemones CI“ yra pagrindinė taisyklė kiekvienoje „C-heavy“ komandoje, su kuria dirbame.
  • Skaitymas C yra operacijų įgūdis: CVE pranešimų nuorodos į funkcijas ir tipus, paslaugų segmento gedimai sukuria atgalinius gdb žodyno pėdsakus, o paketų versijos iš ports-tree klasės šaltinių rodo kompiliatoriaus įspėjimus, atskiriančius kokybę nuo šiukšlių; Skaitytojo pranašumas tyliai jungiasi metų metus.
  • ABI yra jungiamasis audinys: kiekviena „užsienio funkcijų sąsaja“ (Python ctypes, Rust FFI, Go cgo) yra C formos, nes C tapo bibliotekos ribų lingua franca; kad Role išlaiko C aktualumą, nepaisant kūrėjo mados.
  • Kai C vis dar yra tinkamas įrankis rašyti: branduoliai, tvarkyklės, įterptoji programinė įranga ir vidinės kilpos, kuriose dominuoja talpyklos elgesys; kitur kalbų palyginimai (Rūdis, skirtas saugiai perrašyti nesaugius C komponentus, Go for ops tooling) apima sąžiningus šiuolaikinius pasirinkimus.

Pastaba iš praktikos

C klaidą, kuri privertė mus institucionalizuoti dezinfekavimo priemones, prireikė trijų savaičių, kad būtų galima rasti naudojant stack-trace folklorą ir tris minutes naudojant AddressSanitizer: kompiliatoriaus ekosistema jau žino dalykus, kurių žmonės neturėtų ieškoti 2 val.

Dažniausiai užduodami klausimai

Ar turėtume rašyti naują infrastruktūrą C?

Beveik niekada visiškai: kur svarbu maksimali kontrolė, branduolys ir tvarkyklės lieka C; paslaugos ir įrankiai diegia Python/Go/Rust šiandien; C branduolys su saugiais kraštais yra pragmatiška moderni forma.

Kodėl C kaltinamas dėl tiek daug CVE?

Kadangi atminties saugos klaidos gyvena būtent ten, kur gyvena UB, ir dėl to, kad tokia milžiniška pasaulinio kritinio kodo dalis yra C. Valdytojai sušvelnina saugesnius atminties įrankius, miglotą ir tikslinį perrašymą pagal „aktyvaus kūrimo“ praktiką.

Kaip administratoriai gali išmokti efektyviai skaityti C?

Išsirinkite tikrą paslaugų šaltinį: paketus su mažomis kodų bazėmis (gera pradžia yra curl), skaitykite CVE ataskaitas apie pataisymus ir praktikuokite su gdb bandymo laukelyje. Sklandumas – tai keli savaitgaliai ir tikri artefaktai.

Ar šiuolaikinis C (C17/C23) pakankamai skiriasi, kad pakeistų istoriją?

Prieaugis: standartas tobulinamas atsargiai, tačiau atminties modelis ir UB kraštovaizdis išlieka ilgalaikė realybė; Įrankiai, o ne standartinis krebulys, yra vieta, kur saugumo pažanga įvyko.

Kaip Kinetikatech padeda su programavimo kalbų palyginimas

Pasiūlymas paprastas: 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. Patikėkite tai mūsų paslaugai Serverių administravimas ir Svetainės priežiūra ir turėsite visišką aprėptį: rimtą vertinimą, švarų įgyvendinimą, nepertraukiamą stebėjimą.

Pasikalbėkite su inžinieriumi

Serverio problema? Svetainė nukauta? Lėtas įkrovimas?

Kritincidentai sprendžiami per 30 minučių — 24 valandas per dieną, 7 dienas per savaitę.

Kreiptis skubios pagalbos support@kinetikatech.com