( uid_6201 | 2020. 10. 26., h – 12:59 )

Igen, meg lehet csinálni akár C-ben, sőt akár assembly-ben is. Kérdés hogy mennyi energia befektetéssel (= jelentős plusz fejleszői költség) és milyen arányban maradnak benne hibák (segfault, nem kívánt strukrúra túlírás és internetes alkalmazásnál biztonsági rés). Ezért próbálunk sokan menekülni a C-től ahol lehet, csak nem volt rendszerprogramozás terén 10 éve még hova. A C++ pedig a C-s öröksége miatt áldás és átok is.

Én inkább a még alaposabb védőhálót kínáló Rust-ról tudok nyilatkozni, de a nagy része a Go-ra is érvényes. Amit ad a C-hez képest:
    - https://prataprc.github.io/media/rust-over-c/rustvsc.png
    - kiemelném a memóriabiztonságot (Go esetén is). Elég egyszer kevesebb RAM-ot allokálni vagy a felszabadítást korán elvégezni és készen van a biztonsági rés. Ha meg elfelejted a ciklusban valahol felszabadítani, akkor a folyamatos futása felzabálja a memóriát. És ha te nem is hibázól, az utcáról felvett másik 10 csapattag által bele fog kerülni legalább 1 biztonsági rés. Viszont ha van védőháló, akkor ZÉRÓ allokációs hiba.
    - kész modulok saját közösségi repóból. Megbízhatóbbak egy noname internetes oldalnál. Sőt:

$ cargo check
  Downloaded itertools v0.9.0
  Downloaded 1 crate (96.4 KB) in 1.15s
    Finished dev [unoptimized + debuginfo] target(s) in 1.19s

Ellenőrzi, hogy éppen ebben a projektben felhasznált külső "itertools" csomagból az itt éppen használt 0.9-es verzióra van-e bugreport.

Visszatérve a C és Rust (vagy Go) integrációra. Itt nem csak kész lib-be tudsz belehívni, hanem C forráskódot is egybe tudsz hozzáfordítani. Végülis a Firefox is így íródik jelenleg. A meglevő kódbázisba szivárog be egyre nagyobb arányú Rust kód. A Linux kernel esetén is ilyen tervek vannak. A C++-t Linus nem engedte, a Rust-ra viszont nyitottságot mutat.