Aller au contenu

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