07/02/2019
- Quando usar ferrugem
- Quando não usar ferrugem
- Quando usar C / C ++
- Falsos motivos para usar C / C ++
- Apêndice: minha história com C / C ++
- Aplicação: refrão
Este é um documento de posicionamento que distribuí originalmente dentro da comunidade de firmware em X. Recebi solicitações de um link público, então limpei o artigo e o postei no blog. Esta é obviamente minha opinião pessoal. Por favor, leia tudo antes de me enviar cartas com raiva.
TL; DR: C / C ++ tem falhas de design suficientes e ferramentas de desenvolvimento alternativas já estão em boa forma, então eu não recomendo usar C / C ++ para novos desenvolvimentos, exceto em circunstâncias especiais. Para situações em que você realmente precisa do poder do C / C ++, use o Rust . Em outras situações, você não deve usar C / C ++ de qualquer maneira - use outra coisa.
Quando usar ferrugem
, , , , ( 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