Journal Moi, expert C++, j'abandonne le C++

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
86
3
juin
2019
Ce journal a été promu en dépêche : Moi, expert C++, j’abandonne le C++.

Je profite de cette anecdote pour rédiger un long journal afin de partager mon expérience et mon apprentissage en espérant t’apprendre de nouveaux points de vue.

Peut-être cela vaut le coup d'en faire une dépêche… Dis-le moi dans les commentaires. 😉

Ma passion C++11, C++14, C++17…

Ma carrière professionnelle de développeur C a débuté en 1994 et j’ai naturellement adopté avec enthousiasme le C++ en 1999.
J’étais un développeur C++ heureux et j'avais considéré la nouvelle version du standard C++11 (…)

Quelques cadriciels Web C++ (2/2)

Posté par  (site web personnel) . Édité par Davy Defaud, Benoît Sibaud, ZeroHeure, bubar🦥, claudex et palm123. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
38
12
déc.
2018
C et C++

Actuellement, il existe de nombreux langages et cadriciels intéressants pour le développement Web back‐end. Dans ce domaine, le C++ n’est pas le langage le plus à la mode, mais il possède cependant des atouts intéressants. En effet, le C++ possède de nombreuses bibliothèques (dont des cadriciels Web), il est réputé pour ses performances et, enfin, ses dernières normes le rendent plus agréable à utiliser.

L’objectif de cet article est de donner un aperçu des outils C++ disponibles pour le développement Web back‐end, à partir d’un exemple d’application. Les codes sources présentés ici sont disponibles sur ce dépôt Git. Les différents cadriciels utilisés sont résumés en annexe (partie 2). Enfin, une liste de bibliothèques C++ est disponible sur Awesome C++.

Partie 2 : les cadriciels Web.

Quelques cadriciels Web C++ (1/2)

Posté par  (site web personnel) . Édité par Davy Defaud, ZeroHeure, Julien Jorge, palm123, Benoît Sibaud, bubar🦥 et claudex. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
34
9
déc.
2018
C et C++

Actuellement, il existe de nombreux langages et cadriciels (frameworks) intéressants pour le développement Web côté serveur. Dans ce domaine, le C++ n’est pas le langage le plus à la mode, mais il possède cependant des atouts intéressants. En effet, le C++ dispose de nombreuses bibliothèques (dont des cadriciels Web), il est réputé pour ses performances, enfin ses dernières normes le rendent plus agréable à utiliser.

L’objectif de cet article est de donner un aperçu des outils C++ disponibles pour le développement Web back‐end, à partir d’un exemple d’application. Les codes sources présentés ici sont disponibles sur ce dépôt Git. Les différents cadriciels utilisés sont résumés en annexe (partie 2). Enfin, une liste de bibliothèques C++ est disponible sur Awesome C++.

Partie 1 : exemple d’application, génération de HTML et accès à une base de données.

Journal Un harnais de test pour Qt

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
Étiquettes :
8
7
déc.
2018

Bonjour Nal,

Je viens de publier ce harnais de test qui permet de lancer facilement des tests écrits avec le moteur de Qt et de collecter les résultats dans un rapport en HTML.

Le contexte

Qt fournit quelques classes pour réaliser des tests unitaires, mais ils proposent de générer une application séparée pour chaque test, et de les lancer toutes à la fois via un "make check". Les résultats sont alors affichés sur la console et pénibles à lire. De (…)

Journal Déployer une application web C++ sur Heroku avec Docker et Nix

Posté par  (site web personnel) . Licence CC By‑SA.
17
15
nov.
2018

Les services de plateforme (PaaS) comme Heroku permettent de déployer des applications web écrites dans des langages comme PHP, Ruby, Java… Cependant, déployer des applications C++ est plus compliqué (portabilité de l'interface binaire ABI, gestion des dépendances…). Ce post présente plusieurs solutions pour déployer des applications web C++ sur Heroku, en utilisant des images Docker et le gestionnaire de paquet Nix.

Voir aussi : code source - vidéo youtube - vidéo peertube

Exemple d'application web C++ avec

(…)

Journal Ⓒ✙✙ Le tiret bas (underscore) au début des variables membres ?

Posté par  (site web personnel) . Licence CC By‑SA.
11
18
août
2018

En réponse à guppy, j’ai rédigé un long commentaire qui mérite d’être promu en journal.   \_o_/

La norme C++ réserve l’utilisation du tiret bas (underscore)

Résumé de la norme Ⓒ✙✙ : https://en.cppreference.com/w/cpp/language/identifiers

[…]

An identifier can be used to name objects, references, functions, enumerators, types, class members, namespaces, templates, template specializations, parameter packs, goto labels, and other entities, with the following exceptions:

  • the identifiers that are keywords cannot be used for other purposes;
  • the identifiers with a double underscore (…)

Journal Spacewar! pour Haiku

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
Étiquettes :
33
11
nov.
2018

Bonjour Nal,

Bon voilà, il fait froid dehors, je suis un peu fatigué et j'ai pas envie de replonger tout de suite dans le code de WebKit pour trouver pourquoi il est persuadé de ne pas savoir traiter les tags aujourd'hui, mes slides pour le Capitole du Libre sont prêtes (enfin à peu près…)…

C'est le moment de porter Spacewar! sur Haiku!

Spacewar! est un jeu vidéo écrit à l'origine pour le PDP-1 entre 1961 et 1962 (en savoir (…)

Journal Conversion entre pointeurs de fonctions incompatibles

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
14
7
nov.
2018

Posons nous dans le cas suivant (oui ça commence direct)

int strange_apply(int (*f)(int) {

    return reinterpret_cast<(int(*)(int, int)>(f)(1, 2);

}

Ce code compile avec un warning depuis le dernier gcc, et c'est bien car c'est en fait un undefined behavior (cast entre types de fonctions incompatibles dans le cas présent).

Et pourtant on voit pas mal de code (…)

Verilator 4.002

Posté par  (site web personnel, Mastodon) . Édité par Davy Defaud, BAud, ZeroHeure, bubar🦥, palm123 et Benoît Sibaud. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
29
24
sept.
2018
Matériel

La version 4.002 de Verilator a été annoncée à la conférence ORConf2018 en Pologne.

Verilator est sans conteste le simulateur HDL open source le plus rapide du « marché ». Il permet de simuler des porte‐grammes écrits en Verilog synthétisable.

Le nouveau logo de Verilator

Journal Le quiz c++ de l'été - Débriefing

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
12
31
août
2018

Très bonne discussion sur le fil du Quizz C++ de l'été !

Sur le problème en lui-même, Clément V a donné la bonne réponse en parlant de temporaire dans le 4ème appel (shared_ptr de B). Je vais développer :

Les deux premiers appels sont identiques en terme de code machine. En effet, en C++, un objet B dérivant de A est, au point de vue de l'arrangement mémoire, un A, suivi des attributs de B (oublions l'héritage virtuel pour le (…)

Journal Pythran, en plein délire

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
50
23
mai
2018

Cher journal, je dois te confesser que j'ai déclenché quelque chose dont j'ai un peu honte.

Tu te souviens bien sûr de Pythran, ce compilateur pour noyau scientifiques écrit en Python, et de ce petit détail d'implémentation qui veut que le compilateur commence par transformer les fonctions Python en fonctions C++ template (a.k.a. transformer du code Python en meta-programme C++ pour faire stylé voire pédant).

Un choix de design a été de faire en sorte que ces fonctions ne (…)

Journal Tirez-vous une bûche, qu'on cause C++ et singletons

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
17
14
août
2018

Le métier est venu me voir. "On aime beaucoup ton composant A, celui qui cache les données depuis la base, mais on voudrait l'instancier tout plein de fois, sans qu'il recharge tout à chaque fois."

Comme j'aime bien le métier, je me suis attelé à la tâche, je me suis bouché le nez, et je leur ai planqué une petite variable globale des familles histoire de mettre en commun les caches. Et ils étaient fort contents.

Ensuite, j'ai regardé ma (…)

Journal Faites des tests !

Posté par  . Licence CC By‑SA.
14
22
juil.
2018

Actuellement sur le développement d'un programme en langage C++ et avec la quête de produire un logiciel fiable et performant je me suis mis à la recherche d'outils me permettant d'atteindre cet objectif.

Après quelques recherches, j'en ai découvert deux, le test unitaire et fonctionnel. Pour le test unitaire j'ai choisi la librairie Boost et un script Bash pour le test fonctionnel.

Durant la rédaction de ces tests, j'ai été surpris plusieurs fois à corriger des bugs dans mon programme (…)

Journal Une structure partiellement constante en C++

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
27
6
juil.
2018

Hop, quelques réflexions sur un langage non réflexif.

Si on veut un tableau de taille statique, on peut utiliser depuis C++11 la classe std::array<T, N>.

std::array<long, 5> my_array{{1, 2, 3, 5, 8}};

Si on veut forcer ce tableau à ne contenir que des constantes utilisables à compile-time, on a la possibilité de marquer cette déclaration constexpr.

constexpr std::array<long, 5
(…)