C / C++¶
Le langage système par excellence, de C créé par Dennis Ritchie en 1972 aux standards modernes C++23. Pilier des systèmes d'exploitation, de l'embarque, du jeu video et du calcul haute performance, C et C++ restent incontournables pour le code proche du matériel.
graph LR
A["Histoire"] --> B["Frameworks"]
B --> C["Exemples"]
C --> D["Tests"]
D --> E["Construction"]
E --> F["Bonnes pratiques"]
F --> G["Ecosysteme"] Ce que vous allez apprendre¶
À la fin de ce tutoriel, vous serez capable de :
- Situer C et C++ dans leur évolution de Dennis Ritchie aux Bell Labs aux standards C23 et C++23
- Choisir un framework ou une bibliotheque adapté (Qt, Boost, POCO, Dear ImGui, cpp-httplib)
- Implémenter une API REST CRUD avec cpp-httplib + SQLite3 et créer des bindings vers Python et Rust
- Mettre en place des tests avec Google Test, Catch2 et le fuzzing avec AFL++ et libFuzzer
- Construire et packager avec CMake moderne, Conan 2 et vcpkg
- Appliquer RAII, les smart pointers, les C++ Core Guidelines et éviter les anti-patterns dangereux
Parcours¶
| Section | Contenu |
|---|---|
| Histoire | De Dennis Ritchie aux Bell Labs a C++23, standards C (C89 a C23) et C++ (C++98 a C++23), comites ISO WG14/WG21 |
| Frameworks courants | Comparatif Qt, Boost, POCO, Abseil, GUI (Dear ImGui, wxWidgets), réseau (Boost.Asio, cpp-httplib), écosystème C |
| Exemples d'implementation | API REST CRUD avec cpp-httplib + SQLite3 + nlohmann/json, bibliotheque C avec bindings Python (ctypes) et Rust (FFI) |
| Tests | Google Test, Google Mock, Catch2, CTest + CMake, coverage gcov/lcov/llvm-cov, fuzzing AFL++ et libFuzzer |
| Construction & packaging | CMake moderne (targets, presets), Conan 2, vcpkg, toolchain files, Dockerfile multi-stage, CI/CD |
| Bonnes pratiques | RAII, smart pointers, move semantics, std::optional/variant, anti-patterns (raw new, C-style casts), std::expected C++23 |
| Ecosysteme | CLion, VS Code + clangd, clang-format, clang-tidy, Sanitizers ASan/TSan/UBSan, GDB, LLDB, Valgrind, Heaptrack |