Programavimo kalbų palyginimas
Rūdys: atminties sauga be šiukšlių surinkėjo
Rust pasiūlymas yra tikslus: pašalinkite nenaudojimo po nemokamo ir duomenų lenktynių klaidų šeimas kompiliavimo metu, išlaikant vietinį greitį ir be šiukšlių surinkimo pauzių. Pramonė pastebėjo – nuo OS branduolių, priimančių Rust modulius, iki saugumą taisančių didelių C-heavy kodų bazių; Tai yra skirtas straipsnis, skirtas mūsų esė „Kodėl rūdys“ ir tiesioginiai palyginimai su „Go“, „Python“ ir „C++“.
Pagrindiniai punktai
- Pasiskolinimo tikrintuvas yra naujovė, kuri apmoka: nuosavybė ir viso gyvenimo trukmė statiškai ištrina visas atminties sugadinimo CVE šeimas (nenaudojamas po naudojimo, dvigubas nemokamas naudojimas, iteratoriaus negaliojimas, duomenų lenktynės tarp gijų); ta pati ergonomiška kaina paaiškina, kodėl jos bendruomenė rekomenduoja to išmokti anksti.
- Nė vienas šiukšlių rinkėjas nėra rinkodara: delsos nuoseklus atminties elgesys yra svarbus sudėtingiausiuose pramonės atvejuose (įterptieji, branduolio keliai, realiojo laiko garsas); „Rust“ savojo kodo veikimas be GC pauzių yra priežastis, dėl kurios „perrašymas Rust“ yra skirtas konkretiems karštiems keliams, o ne viskam.
- „Cargo“ yra patirties griovys: priklausomybė / versijų kūrimas / kūrimo įrankiai ir „crates.io“ ekosistema leidžia sklandžiau įsisavinti istoriją nei senos kompiliuotos kalbų sistemos; „Krovinių auditas“ pagal patariamąsias duomenų bazes yra tiekimo grandinės atsakymas.
- „Interop“ palaiko tai pragmatišką: FFI ribos iki C yra standartinė integravimo istorija (skambinkite esamas C bibliotekas, gaukite panašius puslapius Rust iš kitų kalbų), todėl Rust gyvena didesnėse sistemose (naršyklėse, branduoliuose, žiniatinklio serveriuose), o ne reikalauja izoliacijos.
- Išlaidos yra sąžiningos: mokymosi kreivė (skolinimosi modelis perkelia idėjas apie slapyvardžio keitimą / duomenų nuosavybę) ir kompiliavimo laikas yra didelis trumpais iteracijos ciklais; CRUD didelio produkto tempo komandos dažnai pristatomos greičiau, naudodamos GC kalbas (straipsnyje „Kodėl rūdys“ aprašoma, kurie komponentai subręsta į rūdis ir kurie lieka).
- Kur tai laimi praktikoje: infrastruktūros komponentai ir analizatoriai (proxy / filtras / įrankių grandinės), CLI ekosistemos, įterptieji ir branduolio moduliai ir saugumui svarbūs perrašymai, kai viena atminties klaida kainuoja daugiau nei kada nors kainavo inžinerijos kreivė.
Pastaba iš praktikos
„Rust“ perrašymas, dėl kurio jis buvo išsaugotas, pakeitė C analizatorių, kuris per metus pagamindavo vieną CVE: skolinimosi tikrintuvas aptiko tris lygiavertes klaidas, kurių CVE sekimo priemonė niekada neparodė. Mokymosi kreivė yra ištrintų klaidų klasių kaina.
Dažniausiai užduodami klausimai
Ar mano komanda turėtų viską perrašyti į Rust?
Ne: perrašykite patikimumui jautrius pagrindinius komponentus (analizatorius, tarpinius serverius, branduolio krašto atvejus), kai svarbu užtikrinti saugumą. Mūsų straipsnyje „Kodėl rūdys“ aprašomas sąžiningas taikymas pagal komponentus, o ne mada.
Koks iš tikrųjų yra skolinimosi tikrintuvas?
Savaitės iki kompetencijos sklandžiai besinaudojantiems sistemomis kūrėjams, mėnesiai – architektūroms, turinčioms daug nuosavybės; atlygis atsiranda tada, kai vienu metu naudojamas kodas, kuris kadaise sukūrė lenktynių sąlygas, saugiai sukompiliuoja vietoj (kas jį parašys).
Kaip tai palyginti su „Go head-to-head“?
Kompiliavimo laikas gerokai viršija „Go“ kūrimo greitį; lygiagretumo modeliai skiriasi (rūdžių nuosavybė, eiti kanalai); CLI-plus patikimumo ekosistemos yra draugiškos; mūsų straipsnyje „rust-vs-go“ aprašoma sąžininga kiekvieno darbo krūvio tipo riba.
Ar „Rust“ dabar veikia „Linux“ branduolyje?
Taip: branduolio palaikymas nusileido (adapteriai, todėl moduliai gali būti parašyti Rust), o tvarkyklės / komponentai susiliejo paraštėse; pramoninis pritaikymas dar ankstyvas, bet kryptis nustatyta.
Kaip Kinetikatech padeda su programavimo kalbų palyginimas
Jums nereikia tapti programavimo kalbų palyginimas ekspertu: 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. Būtent tam ir skirta Serverių administravimas ir Svetainės priežiūra: paleidimas, sutvirtinimas, stebėjimas ir budintis žmogus dieną ir naktį.