07/02/2019
- Quand utiliser Rust
- Quand ne pas utiliser Rust
- Quand utiliser C / C ++
- De fausses raisons d'utiliser C / C ++
- Annexe: mon histoire avec C / C ++
- Application: chœur
Il s'agit d'un document de position que j'ai initialement fait circuler au sein de la communauté des micrologiciels de X. J'ai reçu des demandes de lien public, j'ai donc nettoyé l'article et l'ai publié sur le blog. C'est évidemment mon opinion personnelle. Veuillez tout lire avant de m'envoyer des lettres de colère.
TL; DR: C / C ++ a suffisamment de défauts de conception et les outils de développement alternatifs sont déjà en assez bon état, donc je ne recommande pas d'utiliser C / C ++ pour un nouveau développement, sauf dans des circonstances spéciales. Pour les situations où vous avez vraiment besoin de la puissance de C / C ++, utilisez plutôt Rust . Dans d'autres situations, vous ne devriez de toute façon pas utiliser C / C ++ - utilisez autre chose.
Quand utiliser Rust
, , , , ( 30 ) C C++. , , (buffer overflows), (dangling pointers), (race conditions), (integer overflows) .
: , , C. , , .
C/C++, , :
- .
- .
- , .
- , .
( … , .)
Rust 2013 . 2018 ^1^ , , , . C++11 2011 , Rust , C++11 GCC . - .
2018? " " (, ), Rust (nightly Rust toolchain). 2018 .
. , , C++ Rust. , , . Rust , .
Rust
Rust , C/C++, Rust , , C/C++. , . 2019 ; . Rust , .
: (symbolic algebra evaluator), (concurrent persistent data structure) - , , , , - — , - , Rust. C++, , Rust, . Swift^2^, Go, Typescript, Python Kotlin/Java — .
, , Swift , , , .
C/C++
, C/C++:
, , - . , Arduino. .
. , , Ada, , C.
Rust. Rust , LLVM, , GCC. , , 68HC11 68000. (Rust MSP430, Cortex-M .., AVR ). , , . IBM System 390.
, / (toolchain) . , - Rust. , - GCC, CodeSourcery.
, , rustc , , rustc . Rustc , GCC. , . C++; Rust , GCC.
C++, C++ , API (,
extern "C"
, (pipes) RPC). C++ , . (Swift, , .) - "".
C/C++
, , .
C/C++ 30+ , /.
, . .
C C++ , C, , , , .
Rust , , Swift C++ (Clang). , C/C++.
C/C++, .
… . C/C++ , , , . , C++, , . , (UB). , Rust.
, C/C++ , , . , , .
Rust , .
C , , , Rust ( ). , , , Learning Rust With Allly Too Many Linked Lists.
C/C++ , , / SMP . Rust.
; , C++ , , Rust . — , .
: C/C++
, C++ , . , .
C 1993 , C++ 2002 , . , Google, Qt, Chrome, , . Loon, C++ ( 99); C++11 ( 2011 ), , . , X C++, C .
Loon " " C++ crt0.o
Cortex-M, ; . C++, Rust- . C++ … , , . "" ().
: , , C++ , . C++ , .
:
. :-)
(Chris Palmer): State of Software Security 2019: ( )
C++ … , … , C++.
(Alex Gaynor) The Internet Has a Huge C/C++ Problem and Developers Don't Want to Deal With It ( Vice, ):
. , Windows Firefox . , , , . , , .
Manish Goregaokar Mozilla, ycombinator fuzzing Rust Firefox , C++ , :
, . Rust .fuzzing Rust firefox, … ( / «» ). , Gecko .
Copyright 2011-2019 Cliff L. Biffle — Contact