jeudi 28 novembre 2024
« Spotted
here, a lot of non tech and tech details about a recent combo of Firefox and Windows Zero Day.
User were helpless as soon as they connected to a malicious website.
For the Firefox part, I wonder if moving fully the JavaScript engine to Rust could help avoiding issues like this Use After Free.
For the Windows part, it explains how the Firefox sandbox could be escaped.
But the good part is: they released a patch in
25 hours, very close to their best during pwn2own in 21 hours. »
jeudi 24 octobre 2024
« Comment éviter de se répéter dans nos méthodes const et non const en C++ ? L'auteur propose 4 méthodes pour le faire sur un code jouet. »
jeudi 26 septembre 2024
« Je ne connaissais pas cette page qui donne ce qui est supporté ou non par la version de XCode utilisée (et donc indirectement pour Apple Clang, même si pour ce dernier on avait déjà cette
page très utile). »
jeudi 26 septembre 2024
« Est-ce une bonne pratique d'utiliser
using
dans les fichiers d'entête c++ ? En prime, une astuce avec
std::literals
. »
jeudi 19 septembre 2024
« Pour répondre aux critiques concernant la gestion de la sécurité de la mémoire des programmes écrits en C++, les extensions Safe C++ proposent une nouvelle syntaxe pour aider les développeurs. »
jeudi 5 septembre 2024
« Un tutorial CMake pour packager une application écrite en C++ »
jeudi 29 août 2024
« Un tutoriel pour profiter du
structure bindings (C++17) sur ses propres classes. »
jeudi 11 juillet 2024
« J'ai découvert fortuitement que `std::regex` — au moins celui de libstdc++, la bibliothèque standard de gcc — était peu efficace et qu'il valait mieux se tourner vers une bibliothèque tierce si on voulait faire des expressions régulières.
Ce n'était pas l'objet initial de ma recherche — le peu de regex que j'utilise est plutôt dans des scripts Python — mais une investigation suite à
un commentaire dans un fil sur la future bibliothèque d'algèbre linéaire qui doit arriver avec le C++ 26 pointait que `std::linalg` courrait un risque similaire d'être sous-optimale par rapport à la flexibilité qu'apporte une bibliothèque externe (d'autant plus que des bibliothèques comme
Eigen ou
Xtensor sont header-only et ne présentent de ce fait pas de difficulté particulière dans le système de build). »
jeudi 4 juillet 2024
« En C++, pourquoi la déduction du type ne pourrait-elle pas être automatique lors de l'initialisation d'un attribut de classe non statique, alors qu'une propostion avait été faite pour le standard en 200 ? »
jeudi 20 juin 2024
« Comment multiplier des matrices de manière efficace ? Un exemple pour comprendre la problématique, et la solution (spoiler) : utiliser une bibliothèque spécialisée ! »
jeudi 13 juin 2024
« Une réimplémentation (basée sur l'implémentation de Kernighan et Ritchie issue de l'ouvrage
« The C Programming Language ») de malloc et free en C++ pour bien comprendre les allocations de mémoire. »
jeudi 25 avril 2024
« Le mot clé
final (introduit avec le C++11) a-t-il des répercussions sur votre code C++ ? (Suspense...) »
jeudi 18 avril 2024
« Un tutoriel pour apprendre à développer des coroutines en C++ et profiter des dernières implémentations de la STL (C++23 notament) »
jeudi 15 février 2024
« Lors de la dernière CppCon, une proposition de bibliothèque d'algèbre linéaire de la STL a été présentée. »
jeudi 21 décembre 2023
« Une présentation de
CppInterOp qui permet d'interpréter du code C++ (avec openMP et CUDA dans ce cas précis) et de le faire interagir avec du python dans un même notebook. »
jeudi 23 novembre 2023
« Des nouvelles du dernier C++ standard meeting, avec notamment l’adoption pour c++ 26 de l’interface blas dans la bibliothèque standard. »
jeudi 16 novembre 2023
« If you got through the
Rust "Book" and still want to explore further, here is a documentation inspired by Scott Meyers' Effective C++ books. »
jeudi 24 août 2023
« Présentation de nouvelles syntaxes prévues dans le C++ 23 utilisant `std::optional`, qui confirment l'ancrage du paradigme programmation fonctionnelle dans le langage. Ces syntaxes devraient permettre d'éliminer pas mal de boilerplate qu'on rencontre assez vite actuellement quand on utilise le très utile `std::optional`... mais se pose comme souvent en C++ la question de quand ces syntaxes seront supportées par les principaux compilateurs. »
vendredi 7 juillet 2023
« Visual Studio 17.6 permet de rediriger la sortie du sanitizer vers un fichier et de continuer l'exécution du programme malgré les erreurs, ce qui est pratique pour tester dynamiquement son programme. »
jeudi 8 juin 2023
« LLVM a maintenant une nouvelle version dans sa librairie standard C++ (libc++) un algorithme plus efficace qu'auparavant... qui semble contre-intuitif et a été trouvé par de l'apprentissage, en reformulant le problème posé ("trouver le meilleur algorithme de tri") comme un jeu ("il faut minimiser le score" - qui est ici le temps pour réaliser le tri). »
jeudi 8 juin 2023
« Un tutoriel pour bien démarrer avec CUDA, en suivant un exemple simple d'addition de matrices. »
jeudi 8 juin 2023
« Pour mieux comprendre constexpr et les optimisations faites par le compilateur, mais aussi comment avoir des garanties de la part du compilateur »
mercredi 17 mai 2023
« A comprehensive description, with code samples, of what happen when -ffast-math is enabled with GCC. »
mercredi 17 mai 2023
« Even wonder why NumPy is so fast ? It is because it uses an optimized BLAS (Basic Linear Algebra Subprograms). Starting with a naive implementation, and optimizing step by step, this article gives insight about how we could achieve similar performances with plain C++. »
jeudi 11 mai 2023
« A deep dive into programming language design and implementation with LLVM. »
jeudi 20 avril 2023
« cmake-init permet d'initialiser un nouveau projet cmake (moderne) avec un support pour tout un tas d'outils très utiles au développement en C++ (clang-tidy, cppcheck, lcov, ...), permet à votre code d'être utilisé par d'autres projets avec la fonctionnalité FetchContent, ou d'être packagé avec conan et vcpkg. »
vendredi 14 avril 2023
« Comment gérer de manière efficace des constantes à l'intérieur d'une fonction »
vendredi 7 avril 2023
« Billet de blog qui explique quand et pourquoi utiliser
emplace_back plutôt que
push_back »
vendredi 31 mars 2023
« Grâce au
consteval introduit en C++ 20, il est maintenant possible de garantir la conversion de chaînes de caractères en flottant à la compilation. Un exemple qui utilise
fast_float, une librairie de conversion qui vient d'être intégrée à GCC 12 dans la méthode standard
std::from_chars. »
vendredi 31 mars 2023
« Even wonder what are Algebraic Data Types, sum types, product types ? This post explains a lot, with examples on various programming languages like C++, Switf, Haskell, and mostly Rust. »
jeudi 23 mars 2023
« Zig is a fairly new programming language and toolchain which aims mostly to be a simple successor to C. This article explains a bit the why of its existence. »
jeudi 9 mars 2023
« Une vidéo très intéressante sur le futur du calcul scientifique dans la STL qui parle d’ajouter du task-based, BLAS, etc. dans la STL, et de comment ils ont accéléré des codes de calcul avec. Le travail de ce groupe calcul scientifique dans C++ est mentionné par Herb Sutter
https://herbsutter.com/2023/02/ dans son post qui annonce la finalisation de C++23! »
jeudi 16 février 2023
« Un ouvrage récent sur les algorithmes de la bibliothèque standard C++. Dans la préface l'auteur insiste sur le fait qu'il s'agit d'un guide (et non pas d'une manuel de référence) et que le but est souligner les aspects jugés notables, surprenants, dangereux ou intéressants des algorithmes évoqués. »
jeudi 16 février 2023
« Related or not to
this NSA's paper, the C++ community and it's creator Bjarne Stroustrup want to try to change the language to mitigate memory safety concerns. »
jeudi 9 février 2023
« Dans cette vidéo de 10 minutes, Jason Turner propose une interface plus moderne en c++20 à la fonction globale main, notamment pour éviter de passer par des pointeurs grâce aux stringviews. »
jeudi 2 février 2023
« Un guide sur les entrées / sorties en C++, qui m'a appris comment faire l'équivalent du
pickle de Python en C++. »
jeudi 26 janvier 2023
« L'auteur nous sensibilise sur les exceptions en C++ et leur coût d'exécution non négligeable. »
vendredi 20 janvier 2023
« Pour mieux comprendre l'utilisation de std::optional (C++17) et les pertes de performance qu'il peut engendrer. Le code complet est disponible sur ce
lien coliru »
jeudi 12 janvier 2023
« Comment gérer les erreurs en C++ moderne, que ce soit avec les exceptions, std::error_code (C++11) ou encore std::expected (C++23) »
jeudi 5 janvier 2023
« With all the hype for the Functional Programming paradigm comes a lot of notions that could intimidate programmers from other paradigms: Category Theory, Monoids, Monads ... This article drive us through a lot of concept with a pragmatic approach. »
jeudi 1 décembre 2022
« Je suis un grand utilisateur des mots clés
const et
constexpr, mais j'avoue ne pas être sûr que les deux petits nouveaux soient complètement indispensables... En tout cas l'article est vraiment très clair pour voir la différence et propose un très utile tableau récapitulatif à la fin. »
mercredi 23 novembre 2022
jeudi 10 novembre 2022
« Cet article détaille les fonctionnalités dépréciées en c++17, enlevées ou pas en c++20, et propose aussi des alternatives pour les remplacer. »
jeudi 27 octobre 2022
« Un très bel article qui démontre la puissance des
concepts introduits dans le C++ 20, en montrant comment on peut écrire maintenant assez simplement ce que l'on souhaite (ici vérifier si une classe a une méthode avec une certaine signature) sans avoir recours à des pratiques de métaprogrammation avancées.
En bonus il explicite succinctement mais clairement plusieurs outils utilisés en métaprogrammation. »
mardi 11 octobre 2022
« Un gitbook avec plein de bonnes pratiques et de liens très intéressant quand on fait du C++. »
jeudi 29 septembre 2022
« Herb Sutter propose une nouvelle syntaxe expérimentale pour le C++, le cppfront, pour permettre de faire évoluer la syntaxe du C++, sans casser la compatibilité rétroactive historique du langage C++, et dans le but d'améliorer la simplicité et la sécurité des codes sources. »
jeudi 1 septembre 2022
« A simple yet comprehensive explanation of how libraries work, with tools detailed on each platform. »
jeudi 1 septembre 2022
« Une explication pédagogique des motivations derrière une nouveauté de prime abord absconce du langage prévue pour le C++ 23 par l'un de ses co-auteurs.
Apparemment c'est déjà supporté par une version de Visual Studio (mais pas par les
autres compilateurs). »
jeudi 1 septembre 2022
« Started as an internal project by Google, Carbon should be by the end of the year a more open source project. It is announced with features like memory safety with dynamic bound checks, generics, compatibility with C++, and even an up to come package manager. »
jeudi 16 juin 2022
« Un article sur la fonctionnalité "copy elision" introduite en c++11, ses subtilités, et en quoi cette fonctionnalité n'est pas très bien nommée. »
jeudi 19 mai 2022
« Comment passer un tuple à une fonction template variadique. »
jeudi 12 mai 2022
« This is quite know in the case of passing to a function a "constant reference" (which is in fact reference to a constant) to a
std::string. The excellent post on
fluentcpp about
string_view pins it well. But the implicit conversion and creation of temporary copies could strike more frequently than we think. This article explains why and how it could be mitigated. »
jeudi 5 mai 2022
« Ben Dean explores the declarative paradigm in C++ at the CppCon 2018, with a bit of history and practical examples. »
jeudi 14 avril 2022
« J'allais jusqu'ici sur la page des compilateurs pour voir si les nouvelles features du C++ et de sa librairie standard étaient supportées, mais je suis tombé sur cette page de CppReference qui fait la synthèse. En tout cas les dev de clang continuent de faire des choses assez douteuses pour la STL: certains include du C++ 20 sont maintenant présents mais n'implémentent pas encore les fonctions qu'ils devraient (c'est le cas de #include <f
ormat> par exemple). »
jeudi 14 avril 2022
«
nanobind permet corriger les lenteurs remarquées avec pybind11. L'intégration avec NumPy a été remplacée par un
nb::tensor<>, plus générique, et qui supporte mieux les tenseurs CPU/GPU (NumPy, PyTorch, TensorFlow, JAX, ...). Le retour d'expérience et les benchmarks sont très instructifs. »
jeudi 7 avril 2022
« Pour palier aux problèmes de performances et de design du classique
std::cout, le C++20 introduit
std::format (basé sur
{fmt}), et bonne nouvelle, la surcharge de l'
operator<< suffira pour s'en servir (mais il faut déclarer un
std::formatter pour profiter pleinement des améliorations de performance). »
jeudi 24 mars 2022
« Un comparatif des outils valgrind et sanitizer pour vérifier l'intégrité de l'accès de vos programmes C et C++ à la mémoire. »
jeudi 24 mars 2022
« This short article explains well what a compiler tries to do to compile a template function call, what is SFINAE (Substitution Failure Is Not An Error), and immediate context means. »
jeudi 24 mars 2022
« Ever wonder about the magic a C++ compiler does under the scene ?
C++ Insights could help, a lot. »
jeudi 10 mars 2022
« Une série de 4 posts de blog pour expliquer les travaux en cours d'amélioration des performances pour scikit-learn. »
jeudi 10 mars 2022
«
CUDA is both a platform and an API that permit to offload computation to Nvidia GPUs. This hands-on like tutorial allow C (and with little effort C++) programmers to make their first step on Nvidia CUDA programming, from printing "Hello, world" to adding two million-entries vectors. Be wary though, as the right CUDA-Toolkit installation may be time consuming, depending on the platform, your Nvidia GPU, its installed driver ... it may be easier if some have access to GPU enabled nodes on clusters. »
jeudi 10 mars 2022
« Une nouveauté du C++ 11 que j'avais ratée: la possibilité de gérer (un peu plus) proprement des codes d'erreur, qui peut aussi s'utiliser coinjointement avec les exceptions (l'auteur suggère ici d'utiliser ces `std::error_code` à la place de string pour gérer le descriptif des exceptions). »
jeudi 3 mars 2022
« Une présentation rapide et pratique sous forme de poster de diverses ressources d'apprentissage sur le C++. La plupart des supports sont destinés aux débutants. »
mercredi 2 février 2022
« Insights from data on O'Reilly's learning platform, some quotes that may be of interest:
-
"We start with an explosion of fantastic achievements that seem like science fiction—imagine, GPT-3 can write stories!"
-
"We know that C++ dominates game programming, but we suspect that it’s also coming to dominate embedded systems, which is really just a more formal way to say “internet of things.” We also suspect (but don’t know) that C++ is becoming more widely used to develop microservices."
»
jeudi 16 décembre 2021
« Une explication didactique d'un warning lié à la visibilité des symboles que le linker peut donner. Le lien parle notamment de PyBind11 qui cache par défaut les symboles et peut générer ce warning; pour ma part je l'ai obtenu en essayant de compiler un projet avec la norme C++ 20 et gcc. »
jeudi 9 décembre 2021
« Klaus Iglberger's own and SOLID (pun intended) approach on Scott Meyers' recommendation in Effective C++: "Prefer non-member, non-friend functions". »
jeudi 2 décembre 2021
« Les différentes syntaxes autorisées par les différentes versions du C++ pour les fonctions lambda. »
mercredi 24 novembre 2021
« This talk by Ben Dean at the Cpp Con 2021 gives a lot of insight about why and how to achieve composability. Ready to say goodbye to raw conditions and raw loops ? »
mercredi 24 novembre 2021
« Une nouveauté du C++ 20 très utile pour le logging: cela permet d'avoir facilement des informations sur l'endroit dans le code source (fichier, ligne, nom de fonction) où une opération spécifique a eu lieu. On pouvait auparavant utiliser des macros telles que __FILE__ ou __LINE__, mais on pouvait être dans ce cas amené à devoir alourdir la signature (par exemple la function
fun de l'exemple aurait une signature ressemblant à
template <typename T> void fun(T x, const char* file, int line). »
mercredi 10 novembre 2021
« In this post in two parts various way of replacing new and delete are discussed like: using the stack, standard containers, smart pointers, ... »
mercredi 10 novembre 2021
« Une liste d'exemples pour apprendre le C++. »
jeudi 14 octobre 2021
« The creator of ZeroMQ, Martin Sústrik, wrote this two parts blog entry back in 2012. Along with this post, he started to rewrite ZeroMQ in plain C and created nanomsg. »
jeudi 14 octobre 2021
« If you are interested in 3D and have a little background in C++, this online book and tutorial is for you. »
mardi 31 août 2021
« Ryan Dahl talks about programming languages, IDEs, frameworks and much more about software engineering. »
jeudi 24 juin 2021
« For those having notions of assembly and memory layout of a program, and interested about how works shared libraries and what PIC, GOT, PLT are, this article explains a lot. »
lundi 7 juin 2021
« Tout ce qu'il faut savoir sur le mot clé 'auto' »
mardi 25 mai 2021
« Le nouveau standard du C++ rend "deprecated" certaines utilisations de mot-clé volatile. Ce qui peut apporter quelques surprises lors des développements dans l’embarqué. »
lundi 10 mai 2021
« This second parts about Mixins introduces 'Mixin classes' in C++, compared with the Curiously Recursive Pattern (CRTP). »
mardi 27 avril 2021
« Comment capturer
*this dans une fonction lambda en C++, en fonction de la version de votre C++ »
lundi 19 avril 2021
« Présentation d'une nouvelle forme d'initialisation des variables en C++ qui à première vue semble contre-intuitive mais qui présente en fait de multiples avantages (elle est promue notamment par Herb Sutter).
Au-delà de cet exemple, l'auteur encourage à essayer de nouveaux styles et à ne pas se cantonner à ceux en vigueur au moment où on apprend le langage (et ce conseil ne se restreint évidemment pas au C++!) »
jeudi 1 avril 2021
« Cet article explique à partir d'exemples comment se comporte un compilateur C++ à travers les différentes étapes de preprocessing, compilation et l'édition de liens. »
lundi 22 mars 2021
« Une présentation de nouvelles possibilités d'allocation de mémoire dans une expression
constexpr (calculée à la compilation) avec le C++ 20. »
jeudi 11 mars 2021
« Une comparaison rapide de la gestion des valeurs flottante -0/+0, -INF/+INF entre les langages C++ /Java / Swift / GO / C# »
jeudi 11 mars 2021
« Le C++ va enfin introduire dans le prochain standard (pas encore largement supporté par les compilateurs courants) un moyen de déclarer par défaut les opérateurs de comparaison. »
mercredi 10 mars 2021
« A quite detailed overview for C++ programmers interested in Rust, and who prefer watching videos over reading 'The Book'. From Henrik Niemeyer at C++ London. »
mardi 2 mars 2021
« The journey of what happens from a simple Eigen Vector addition in C++ to assembly. From high level like Template MetaProgramming, Curiously Recurring Template Pattern or traits, to low level like alignment and Streaming SIMD Extensions (SSE) intrinsic functions. »
mardi 2 mars 2021
« Une introduction claire à une nouvelle feature du C++ 20: les concepts, qui commencent à être supportés par les compilateurs. »
mercredi 10 février 2021
« Présentation de la fonctionnalité std::any du C++17 et de quelques astuces pour l'utiliser. »
mardi 2 février 2021
« Des conseils pour bien écrire des headers en C et C++ - qui sont pour la plupart bien cernés par des outils tels que
include-what-you-use. »
lundi 25 janvier 2021
« This article, based on two book, one of the 'Gang of Four', another one by Alexandrescu teases us about design patterns with modern C++. »
jeudi 21 janvier 2021
« Before using them, for me, traits classes were only something I read in Effective C++ and seen a lot in Rust while tempting to discover it. Thanks to discussions with Vincent and Sébastien, I had to use this technique in C++. And it made, on my sense, template specialization more readable and elegant. This old article gives good explanations. »
mardi 12 janvier 2021
« Jonathan Boccara, l'auteur du blog
FluentCpp, fait une promotion assez active de
include-what-you-use, qui permet de faire le tri dans les include des fichiers pour être sûr que tous ceux pertinents - et uniquement ceux-là - soient présents, permettant d'avoir une base de code plus structurée et un temps de compilation plus rapide.
Ma propre expérience a tourné un peu court: je suis tombé sur une
issue pas résolue depuis 2017 liée à l'inclusion d'une librairie externe (le ticket mentionne Boost mais c'est
Xtensor-blas qui a bloqué pour moi) mais avant ce blocage ça semblait très prometteur, avec un temps d'exécution relativement rapide et des retours assez pertinents. »
mardi 12 janvier 2021
« En C++, l'héritage virtuel permet de résoudre le
problème du diamant. Cet article explique quand et comment l'utiliser. »
lundi 14 décembre 2020
« This talk covers quickly a lot of concepts (state machine, visitor pattern, algebraic data types, ...) and libraries (including Michael Park's variant and match). It gives access, for C++ developers who would fancy it, to declarative alternatives to the if-else chains. »
jeudi 10 décembre 2020
« An interesting series giving insight on how was created Xtensor, from one of their developer. »
jeudi 3 décembre 2020
« Un exemple simple et un plus compliqué du "Range-based for statements with initializer" du C++20. »
jeudi 19 novembre 2020
« Les processeurs ARM ont un type de mémoire dit "weakly-ordered" contrairement au x86/64 d’Intel et d’AMD. Cet article de 2012 présente un exemple C++ très simple qui en démontre les conséquences. »
jeudi 19 novembre 2020
« Un court entretien de Bjarne Stroustrup, où il explique notamment comment le C++ évolue: "You start small, articulate fundamental principles, articulate long-term ideals, and develop based on feedback from real-world use." »
jeudi 29 octobre 2020
« A complement to http://isocpp.org/faq, by Bjarne Stroustrup, with some insights about design choices (string, arrays, ...) »
lundi 19 octobre 2020
« Une liste de 17 petites innovations introduites dans la norme C++ 17. »
jeudi 15 octobre 2020
« A fairly biased but yet interesting comparisons between those languages and their communities. »
jeudi 8 octobre 2020
« Un benchmark en C++ qui prouvent que la vérification de l'overflow sur des opérations entières peut être très coûteuse. »
jeudi 8 octobre 2020
« An opinionated article about a legendary game written in C++ by John Karmak. Please read also Karmak's comment, it adds useful insights. »
mardi 22 septembre 2020
« En attendant les concepts du C++ 20, un historique des méthodes pour pouvoir tester si une classe contient ou nom un attribut d'un nom donné (ce qui peut être très utile pour de la métaprogrammation). »
mardi 22 septembre 2020
« L'article présente un cas pratique de polymorphisme à l'exécution, implémenté sans appel de fonction virtuelle, grâce au type std::variant. »
lundi 14 septembre 2020
« Un article interessant sur les messaging pattern et zeroMQ, applique au grid search »
lundi 14 septembre 2020
« For those who are curious to understand what happens behind the scene, this article tries to explain how C++ code gets translated into low level instructions. For readability, C is used instead of assembly. »
lundi 7 septembre 2020
« Le récit de la création à l'abandon (par son créateur du moins - le projet a été repris par d'autres) d'un projet open source visant à proposer une alternative à Doxygen plus adaptée aux besoins très spécifiques du C++. »
lundi 31 août 2020
« Une compilation de cas d'utilisation de la fonctionnalité 'if constexpr' venant avec le C++17 »
lundi 31 août 2020
« En dépit de l'aversion affichée par Elon Musk en 2018 pour ce langage, la pile logicielle de Space X est intégralement écrite en C++. »
mercredi 15 avril 2020
« Un exemple très simple et parlant pour s'attaquer aux variadic templates en C++ »
lundi 30 mars 2020
« Une liste assez complète avec plein de détails pour des compilateurs C++ en ligne. »
jeudi 30 janvier 2020
« En C++20, l'apparition de l'opérateur
vaisseau spatial (
<==>) permettra de simplifier son code, puisqu'en le définissant, on aura
gratuitement les opérateurs
==,
!=,
<,
<=,
> et
>=. »
mercredi 15 janvier 2020
« En adoptant les solutions fournies par les sites d'entraide pour les développeurs il existe le risque d'adopter en même temps les failles de sécurité que les dites solutions pourraient contenir éventuellement. Cet article se penche sur ce problème en exposant brièvement huit failles parmi les plus courantes. »
mercredi 13 novembre 2019
« Une fantastique démonstration d'optimisation, qui explique comment s'approcher de la vitesse théorique maximale d'un ordinateur en prenant en compte toutes les astuces de mémoire, jeu d'instructions et parallélisme.
Dans le même domaine,
ce cours peut également être intéressant. »
mercredi 16 octobre 2019
« Un exemple très de mise en place des sanitizers avec gcc ou clang et comment les mettre en place à titre de tests. »
jeudi 19 septembre 2019
« Trois astuces de syntaxe du C++ 17 que je ne connaissais pas; deux d'entre elles répondent assez directement à des besoins que j'ai souvent dans mes codes. »
jeudi 5 septembre 2019
« Le futur standard C++ 20 a été adopté fin juillet; des notes
plus détaillées ont été publiées sur reddit. »
jeudi 5 septembre 2019
« Un wiki avec plein d'exemples (souvent plus parlant que dans la documentation officielle) pour utiliser le générateur de documentation Doxygen. »
mercredi 12 juin 2019
« WebAssemby ouvre les portes du Web à d'autres langages que le Javascript comme C, C++ et Rust. L'auteur fait ici un retour d'expérience sur son utilisation en C++ et propose un banc de test pour tester ses propres librairies. »
mercredi 12 juin 2019
« Comment créer un conteneur hétérogène en C++ avec std::variant (c++17) et le parcourir avec std::visit. »
mercredi 5 juin 2019
« Le
C++ n'est pas cité souvent parmi les langages de la science des données (
Data Science) ... Pourtant il arrive qu'il soit le principal recours possible quand on est face à des problèmes de performance. Quand cela arrive on est confronté à la relative pauvreté des moyens dans la manipulation de données par rapport à d'autres langages de plus haut niveau comme
Python,
R ou
Julia. Le présent article illustre les capacités de la bibliothèque
Xtensor de combler ce manque en apportant des fonctionnalités comparables à celles de
NumPy (par exemple) et surtout des capacités remarquables d'intégration avec les trois autres langages évoqués précédemment. »
jeudi 23 mai 2019
« Une solution élégante à un problème classique en C++. La discussion se poursuit dans le
post suivant qui se conclut par une syntaxe très courte faisant appel à la librairie
range - v3 que je ne connaissais pas. »
jeudi 20 décembre 2018
« Un lien qui recense les solutions de compilateurs C++ en ligne, qui peuvent être utiles notamment pour les formations ou pour tester rapidement un code sous différents compilateurs pour certaines de ces solutions. »
jeudi 13 décembre 2018
« Un lien de veille de la semaine passée parlait de "type erasure", en mentionnant bien qu'il ne s'agissait pas du pattern C++ du même nom. Ca a piqué ma curiosité et je suis tombé sur ce lien très didactique qui explique ce pattern très intéressant qui permet notamment de stocker dans un même std::vector des objets ne dérivant pas d'une base commune. »
mercredi 5 décembre 2018
« Un retour d'expérience intéressant sur le développement d'un projet C++ piloté par les tests, et des exemples pour faire des tests unitaires avec Boost.test et des bouchons avec google mock (intégré depuis à google test). »
jeudi 25 octobre 2018
« Une explication des concepts de covariance et contravariance avec des exemples dans plusieurs langages. »
jeudi 21 juin 2018
« Un post bref expliquant deux nouveaux concepts introduits dans le C++ 17. Il donne un lien vers un
article plus complet (qui donne notamment une struct template "overload" qui simplifie l'usage et pourrait être introduit dans le standard C++20); on peut aussi lire cet
article pour avoir un point de vue critique sur ces nouveaux features. »
mercredi 30 mai 2018
« Une note de
Bjarne Stroustrup, le créateur du C++, qui s'inquiète de la profusion de proposals pour le C++ 20 et d'un manque de vision globale. »
mercredi 30 mai 2018
« Ce site nous propose son "truc du jour" sur le sujet du C++11, 14 et 17. »
mercredi 4 avril 2018
« Site qui utilise la librairie de Google
Benchmark qui permet de benchmarker rapidement des fonctions. »
mercredi 4 avril 2018
« Permet de regarder la sortie d'un compilateur en direct et voir un peu les optimisations faites. J'ai découvert ce lien en regardant une
keynote de la cppcon2017. »
mercredi 28 mars 2018
« Dans ce post de blog, l'auteur nous montre comment jouer avec les range boost avec des exemples bien trouvés, et comment ils se sont intelligemment inspirés du langage Python. Ils ne seront malheureusement pas intégrés dans le C++17, puisqu'ils ont d'abord besoin de la notion de concep »
mercredi 21 mars 2018
« Une illustration sur un programme très simple de l'évolution du C++ 98 au C++ 17: la version C++ 98 est simple mais peu robuste, en C++03 c'est plus sécurisé mais beaucoup plus intimidant et les versions suivantes permettent de regagner en clarté tout en conservant la robustesse (et en gagnant en efficacité avec constexpr). Cet article m'a permis également de découvrir l'existence de l'opérateur "". »
mercredi 7 mars 2018
« Catch2 est une librarie header-only pour écrire des tests unitaires très faciles à déployer et utiliser, découverte sur un
fil Reddit. Un bémol cependant: elle ne gère
pas encore le cas CHECK_ABORT. »
lundi 12 février 2018
« Cet article décrit l'utilité des revues de code, et conseille vivement l'utilisation (voire l'achat) d'un bon analyseur statique de code. Le
site en lui même contient plein de bonnes ressouces. »
mercredi 31 janvier 2018
« Récemment, j'ai eu un bug (buffer overflow) qui m'a été remonté grâce à l'option FORTIFY_SOURCE qui est maintenant activée par défaut sur Ubuntu et Fedora. Ce blog explique les grandes de son fonctionnement. »
mercredi 24 janvier 2018
« Illustration d'un comportement dangereux du C++: comment un attribut pointeur peut casser l'encapsulation. Deux solutions sont proposées: l'une qui peut être déployée même avant le C++ 11 mais requiert un peu de discipline (emploi systématique d'accesseurs) et une nouvelle plus sécurisée qui sera introduite normalement dans le C++ 20 mais est déjà disponible pour clang et gcc dans le namespace experimental. »
mercredi 24 janvier 2018
« Des exemples de bonnes pratiques pour faire des tests unitaires en C++ avec CppUnit. »
mercredi 17 janvier 2018
« L'auteur de cet excellent blog nous montre comment séparer des chaînes de caractères en C++ en utilisant la librairie standard, avec Boost et avec le futur C++20. »
mercredi 29 novembre 2017
« Un blog qui détaille un projet pour faire du C++ dans les notebooks de Jupyter. Les fonctionnalités commencent à être vraiment intéressantes et je vous encourage donc à lire ce blog sur la question. Le packaging conda est en cours et vous devriez pouvoir facilement installer tous ces paquets dans les prochaines semaines. »
mercredi 22 novembre 2017
« Ce post de blog décrit les nouvelles features du C++ 17, ainsi que les versions des compilateurs qui les supportent. Il propose aussi une série d'articles plus détaillés qui commencent
ici. »
mercredi 8 novembre 2017
« Une librairie C++ pour la manipulation de tableaux multidimensionnels, avec une interface très proche de celle de numpy (voir ce
lien pour s’en convaincre) et des bindings pour Python, Julia et R. A noter que deux des développeurs de cette librairie devraient prochainement intervenir lors d’un prochain
café LOOPS. »
mercredi 11 octobre 2017
« Un post qui rappelle le feature
constexpr introduit dans le C++11 et introduit le très utile
if constexpr du C++17, supporté au moins par les versions récentes des compilateurs clang et gcc. J'ai appris incidemment dans le deuxième exemple une utilisation de
decltype très intéressantes qui permet de vérifier si une classe possède une méthode donnée en utilisant l'
opérateur virgule. »
mercredi 27 septembre 2017
« C'est un répertoire de bibliothèques et d'abstractions développées par
Google pour leurs projets. Un certain nombre de ces ressources ont
été incorporées dans les standards successifs de C++, ce qui en fait
des bibliothèques pratiques quand on ne peut pas faire passer sa base
de code à un standard plus récent mais que l'on souhaite néanmoins
utiliser des abstractions modernes. »
mercredi 30 août 2017
« Une réflexion intéressante sur l'usage des smart pointers; avec notamment des cas où ils ne sont pas la solution à privilégier. »
mardi 22 août 2017
« Une interface qui permet de tester des snippets de code d'une trentaine de langages avec différents compilateurs / interpréteurs. Le lien est une illustration avec un snippet de code qui exploite une nouvelle feature du C++17 (
if constexpr): on peut déterminer qu'il faut clang 3.9.1 ou gcc 7.1 pour que le code compile. »
mercredi 14 juin 2017
« Sur ce post de blog, l'auteur revient sur le mot clé "mutable" en C++ à travers un exemple et des explications d'utilisation. »
jeudi 4 mai 2017
« Une vraie mine d’informations sur le fonctionnement du C++ et ses multiples idiomes, avec des explications très claires. »
jeudi 20 avril 2017
« Ce petit tutoriel reprend un à un les concepts et la sémantique sur
cette nouveauté du C++ 11, le mouvement. »
jeudi 23 mars 2017
« Une explication claire des références rvalues et de la move semantic introduites dans le C++ 11. »
vendredi 9 décembre 2016
« Sur ce billet de blog, le programmeur explique comment attrapé les
exceptions sur les nombres flottants en C++. Les fichiers core ainsi générés
donne l'origine de toutes sortes d'erreurs de calcul sur les nombres flottants. »
vendredi 14 octobre 2016
« Ce petit tutoriel explique comment installer et utiliser les outils sparse, splint,
cpplint et clang pour faire une analyse statique de vos codes C/C++. »
vendredi 17 juin 2016
« Dans ce post de blog, l'auteur nous explique comment configurer (que ce
soit avec un Makefile classique, CMake ou autoconf) et utiliser l'analyseur
statique de code C++ livré avec Clang, ainsi que son interface graphique
pour visualiser les erreurs trouvées. »
vendredi 3 juin 2016
« Sur cet exemple, l'auteur nous montre comment résoudre des erreurs de double définition
de fonction lorsque l'on cythonize du code en C++. »
vendredi 13 mai 2016
« Dans cette présentation très simple, on voit rapidement par des exemples
comment se passer des pointeurs en C++ moderne. »
vendredi 8 avril 2016
« Un framework REST en C++. »
vendredi 11 mars 2016
« Un outil sympa de génération de documentation faisant le pont entre Sphinx et Doxygen (plutôt orienté C/C++). »
vendredi 26 février 2016
« Une série d'articles sur l'optimisation de son code C++ avec l'API de multithreading disponible en C++14. »
vendredi 26 février 2016
« Dans cet article très détaillé, l'auteur fait un benchmark entre la
std::list
et les
boost::intrusive::list
, et les résultats sont assez surprenants, puisque
cela améliore bien les performances, sauf pour certaines opérations quand les données
commencent à être grosses. Le code est disponible sur github pour le rejouer. »
vendredi 29 janvier 2016
« Quelques réflexions intéressantes sur le C++... »
vendredi 29 janvier 2016
« Dans cet article, l'auteur a voulu démontrer que l'on pouvait améliorer les temps de compilation de son projet C++ en "réinventant la roue".
Il a fait des tests de performances avec std::unique_ptr et boost::flat_map qu'il a ré-implémenté pour voir les impacts sur les temps de compilation. »
vendredi 8 janvier 2016
« Comment compiler son code C/C++ plus rapidement avec ccache et cmake. »
vendredi 11 décembre 2015
« Clang 3.1 et GCC 4.8 proposent cet outil de détection de corruption mémoire. Il suffit
de compiler avec l'option
-fsanitize=address
. La documentation Wikipedia
explique les différents messages émis à l'exécution du code en fonction
du type de corruption. »
vendredi 4 décembre 2015
« ... ou comment accéder à des sous ensembles de données en C++ comme on peut le faire en python. »
vendredi 2 octobre 2015
« Un long article avec des exemples concrets d'utilisation des smart pointers C++11. »
vendredi 25 septembre 2015
« Un article qui revient sur la célèbre phrase de Linus Torvalds ("C++ is a horrible language") et qui essaie de tordre le cou à cette idée répandue, notamment grâce aux avancées faites par le C++11. »
vendredi 18 septembre 2015
« Un petit tutoriel pour prendre en main valgrind avec des exemples et leurs résultats »
vendredi 11 septembre 2015
« Une discussion intéressante sur les itérateurs en C++ »
vendredi 11 septembre 2015
« Comprendre le principe d'Empty Base Optimization (EBO pour les intimes) en C++ avec des exemples »
vendredi 10 juillet 2015
« Le C++11 vient d'introduire l'opérateur et le constructeur de move. Un petit tuto
pour expliquer les raisons de ce changement, ainsi qu'un exemple concret de son implémentation »
vendredi 3 juillet 2015
« Le "curiously recurring template pattern" (CRTP) est un pattern en C++, dans lequel une
classe
Enfant hérite d'une classe template
Parent<T>, où l'on va
templater
la classe
Parent avec la classe
Enfant
(
class Enfant : public Parent<Enfant>). »
vendredi 20 mars 2015
« Un tutorial yolinux pour configurer des outils Jenkins dédié à l'intégration continue en C++ »
vendredi 6 mars 2015
« Ce cours niveau débutant est très bien réalisé pour débuter C++. Et je ne dis pas ça juste parce que c'est un collègue du réseau
LOOPS.
La partie travaux pratiques permet d'aborder dans la pratique les grans thèmes du C++. »
vendredi 23 janvier 2015
« Un petit article qui montre comment on peut appeler du code Python depuis
un programme C/C++ et compiler le tou »
vendredi 23 janvier 2015
« On y explique en détail comment appeler du C, C++ ou Fortran depuis R.
A travers un exemple, on voit :
- les conversions de type entre les languages
- comment compiler le code C, C++ ou Fortran depuis R
- comment passer des données dans un sens, puis dans l'autre
- comment débugger et faire du profiling de code.
»
vendredi 16 janvier 2015
« Une bibliothèque C++ qui présente une interface simple pour définir/utiliser/commenter les arguments d'un programme en ligne de commande »