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

Ohjelmointikielten vertailu

C: kieli, jolla kaikki muu toimii

C on kieli kaiken muun alla: ytimet, ohjaimet, Python-palvelimiesi käyttämät tulkit, verkkosivustojesi takana olevat tietokantakoneet. Ops-tiimeille C on vähemmän sellainen, jota kirjoitat joka päivä, vaan enemmän jotain, jota sinun on luettava sujuvasti, koska CVE-kirjoitukset, pinojäljet ​​ja ydinvedoskirjat toimivat C:n sanastossa. Tämä on C-vs-C++-vertailumme takana oleva artikkeli.

Keskeiset kohdat

  1. Malli on rehellinen: manuaalinen muisti malloc/freen kautta, aritmeettinen osoittimien avulla ja määrittelemätön käyttäytyminen spesifikaation tason totuutena eikä vikakategoriana; kurinalaisuus, joka tekee C:stä nopean, on sama, joka tekee huolimattomasta C:stä kalliin.
  2. Määrittelemätön käyttäytyminen on pyörimisvaara: rajojen ulkopuolinen indeksointi, allekirjoitettu ylivuoto, use-af-free -luokat, jotka vastaavat suoraan muistin turvallisuuden CVE-perheitä (lähes yksi kerrallaan liitettynä vuosikymmenten CVE-tietoihin); fuzzerit (AFL-libFuzzer-luokan työkalut) ja desinfiointiaineet muuttavat arvaukset repro-olosuhteiksi.
  3. Virheenkorjaustyökalut ovat maailmanluokan ja tuntemisen arvoisia: gdb, valgrind/memcheck, AddressSanitizer ja sen sukulaiset (UBSan, TSan) havaitsevat testiaikana virheluokat, joihin tuotantopinon jäljet ​​vain viittaavat; Tämän yhdistelmän vuoksi "rakenna desinfiointiaineilla CI:ssä" on sisäsääntö kaikissa C-heavy-tiimeissä, joiden kanssa työskentelemme.
  4. C:n lukeminen on ops-taito: CVE-ilmoitukset viittaavat funktioihin ja tyyppeihin, palvelun segfaultit tuottavat backtrackeja gdb-sanastossa, ja ports-tree-luokan lähteistä peräisin olevat paketit näyttävät kääntäjien varoituksia, jotka erottavat laadun roskasta; lukijan etu yhdistetään hiljaa vuosia.
  5. ABI on sidekudos: jokainen "vieraan funktion rajapinta" (Pythonin ctyypit, Rustin FFI, Go:n cgo) on C:n muotoinen, koska C:stä tuli kirjastorajojen lingua franca; että Role pitää C:n merkityksellisenä kehittäjän tyylistä riippumatta.
  6. Kun C on edelleen oikea työkalu kirjoittaa: ytimet, ohjaimet, sulautettu laiteohjelmisto ja sisin silmukat, joissa välimuistin käyttäytyminen hallitsee; muualla kielivertailut (Rust vaarallisten C-komponenttien turvalliseen uudelleenkirjoittamiseen, Go for ops-työkalut) kattavat rehelliset nykyaikaiset valinnat.

Kenttämuistiinpano

C-virheen, joka sai meidät laittamaan desinfiointilaitteet laitokseen, löytäminen kesti kolme viikkoa stack-trace kansanperinteen avulla ja kolme minuuttia AddressSanitizerin alla: kääntäjäekosysteemi tietää jo asioita, joita ihmisten ei pitäisi etsiä kello 2 yöllä.

Usein kysytyt kysymykset

Pitäisikö meidän kirjoittaa uusi infrastruktuuri C-kielellä?

Lähes koskaan kokonaan: missä maksimaalinen hallinta on tärkeää, ydin ja ajurit pysyvät C; palvelut ja työkalut ottavat Python/Go/Rustin käyttöön tänään; turvareunoilla varustettu C-ydin on pragmaattinen moderni muoto.

Miksi C:tä syytetään niin monista CVE:stä?

Koska muistin turvavirheet elävät tarkalleen siellä, missä UB asuu, ja koska niin valtava osa maailman kriittisestä koodista on C. Esimiehet vähentävät tilannetta turvallisempien muistityökalujen, sumennuksen ja kohdistettujen uudelleenkirjoitusten avulla "proaktiivisen kehityksen" käytäntöjen mukaisesti.

Kuinka järjestelmänvalvojat voivat oppia lukemaan C-kirjainta tehokkaasti?

Valitse oikea palvelulähde: paketit pienillä koodikantoilla (curl on hyvä alku), lue CVE-raportit korjauksista ja harjoittele gdb:tä testilaatikossa. Sujuvuus on muutama viikonloppu plus todellisia esineitä.

Onko moderni C (C17/C23) tarpeeksi erilainen muuttamaan tarinaa?

Inkrementaalinen: standardi kehittyy huolellisesti, mutta muistimalli ja UB-maisema pysyvät pitkään todellisuutena; työkalut, ei standardi churn, on se, missä turvallisuuden edistyminen tapahtui.

Näin Kinetikatech auttaa: ohjelmointikielten vertailu

Olemme hoitaneet tätä satoja kertoja: Järjestelmätyön, komentosarjojen ja palvelujen kieliä verrataan siihen, mikä on todellisuudessa tuotannossa: turvallisuustakuut, raakanopeus, kenet voit palkata ja kuinka tuskallista palveluiden käyttöönotto ja korjaaminen on. Palvelulla Palvelinten ylläpito ja Verkkosivuston ylläpito saat täyden kierron: arvioimme, otamme käyttöön, seuraamme keskeytyksettä ja reagoimme 30 minuutissa tarvittaessa.

Puhu insinöörin kanssa

Ongelma palvelimella? Sivusto hakkeroitu? Lataus hidasta?

Kriittiset ongelmat ratkaistaan 30 minuutissa — ympäri vuorokauden, seitsemänä päivänä viikossa.

Pyydä hätätukea support@kinetikatech.com