Moi, expert C++, j’abandonne le C++
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 juste comme une évolution tant attendue. En 2015, je réalise enfin à quel point, il a révolutionné l’écosystème C++ et ses bouleversements dans l’état d’esprit de la communauté. Je me passionne alors pour C++11, C++14, puis C++17, je m’implique beaucoup, je deviens un référent pour mes collègues, je donne des conférences sur ce langage, j’organise des meet‐ups à Paris, je publie de nombreux articles C++ sur LinuxFr.org…
En 2018, une expérience change radicalement ma façon d’appréhender le développement logiciel.
C++17 libère size(), data() et empty()
Cette évolution est dans la continuité de la libération de begin()
et end()
en C++11. Ces trois nouvelles fonctions, size()
, data()
et empty()
, avaient été oubliées lors des deux dernières évolutions. Le C++17 corrige le tir.
Tout d’abord, nous allons revenir sur les raisons de cette évolution. Puis, nous détaillerons ce qu’apporte chacune de ces trois fonctions. Et, pour conclure, nous verrons comment on va pouvoir les utiliser.
Journal Jouons avec le ``switch`` et C++17
Et non, ceci n'est pas un journal sur la switch, juste un partage rapide et amusé d'une version alambiquée mais qui fait tourner la tête (comme beaucoup de choses sortant d'un alambic, n'est ce pas ?):
template<unsigned N>
__attribute__((noinline)) void stuff() {}
// manual switch
void manual_switch(int i) {
switch(i) {
case 0: return stuff<0>();
case 1: return stuff<1>
(…)
C++17 adapte le static_assert() aux usages
Journal Meetup C++ le jeudi 13 avril 2017 à Paris
- Événement planifié sur l'agenda du libre :
http://www.agendadulibre.org/events/13631 - Inscription sur Meetup.com
https://www.meetup.com/fr-FR/User-Group-Cpp-Francophone/events/238720203/
Ci-dessous le copié-collé, sans les liens hypertextes, ni les images, ni la mise en forme, rien que le texte en brut :
Seizième édition des rencontres du C++ French User Group Paris
L'entrée est gratuite, possibilité de recevoir 150 personnes.
Planning
- 18:30 Accueil
- 19:00 Présentation de notre sponsor
- 19:15 Composer avec le Chaos - Joël LAMOTTE, SoftBank Robotic Europe
- 20:00 Cocktail dînatoire
- 20:30 (…)
C++17 garantit le court-circuit de copie (suite de la précédente dépêche)
Le calendrier de l’Avent du C++ continue son bonhome de chemin. Chaque jour, ou presque, une nouvelle surprise est offerte aux lecteurs de LinuxFr.org. La dépêche sur l’élision de la copie nous a mis l’eau à la bouche :
Comment résoudre le dilemme entre cette optimisation et le fait de ne pas pouvoir en bénéficier dans un code portable ?
Alors, entrons dans les entrailles de la spécification technique P0135 guidés par cette dépêche pédagogique, et découvrons comment le C++ s’améliore de version en version.
C++ se court-circuite le constructeur de copie
Le calendrier de l’Avent du C++ continue. Après quelques trous dans le calendrier, aujourd’hui une nouvelle surprise : le court-circuit du constructeur de copie.
Cette fonctionnalité est présente dans le C++ depuis la nuit des temps et pourtant peu connue, alors que ses effets de bords peuvent être redoutables. Cette dépêche très pédagogique explique tous les détails d’une optimisation ultime.
C++17 exprime la virgule flottante en hexadécimal et offre des cadeaux aux lecteurs de LinuxFr.org
Chaque jour (ouvré) de décembre a droit à sa surprise. Après le if constexpr
, aujourd’hui, le calendrier de l’Avent du C++ présente la spécification technique P0245 concernant le littéral pour exprimer la virgule flottante en hexadécimal.
C++17 branche à la compilation (`if constexpr`)
Chaque jour de décembre a droit à sa surprise. Après la fixation de l’ordre d’évaluation des expressions, aujourd’hui, le calendrier de l’Avent du C++ présente la spécification technique P0292 concernant les conditions à la compilation, grâce à if constexpr
.
C++17 indique la disponibilité des en‐têtes (header)
Chaque jour de décembre a droit à sa surprise. Après l'ordre d'évaluation, aujourd'hui, le calendrier de l’Avent du C++ présente la Spécification Technique P0061 concernant une macro magique : #define __has_include
.
C++17 fixe l’ordre d’évaluation des expressions
Le C++ est un langage bien présent et depuis longtemps dans les logiciels libres (environnements de bureau, outils bureautiques, navigateurs Web…). L’an 2017 approche à grands pas avec la promesse d’un tout nouveau C++17.
Pour finir l’année, voici le calendrier de l’Avent du C++ avec des dépêches pédagogiques sur ce qui nous attend en 2017. Après deux dépêches de mise‐en‐bouche, nous entrons enfin dans le vif du sujet avec deux spécifications techniques concernant l’ordre d’évaluation des expressions. Allez, c’est parti ! ᕕ(ᐛ)ᕗ
C++17, Genèse d’une version mineure
La série de dépêches C++ continue. Cette seconde dépêche nous amène dans les réunions du comité de standardisation en vue de publier la prochaine version C++17 et nous permettra de vérifier ce titre provocateur (comment ça mineure ?). Cette dépêche peut intéresser tous les lecteurs de LinuxFr.org, pas seulement les développeurs. Les prochaines dépêches seront plus techniques.
Journal Gestion de l'erreur - C++ - std::optional
Introduction
Ce journal discute de la gestion d'erreur lors des appels de fonction. Dans la première partie, nous discuterons plusieurs solutions de gestion d'erreur classiques rencontrée dans de nombreux languages comme C, C++, Python, etc. Dans la seconde partie, nous présenterons std::optional<T>
, une nouvelle classe de la librairie standard C++17 et nous discuterons comment celle-ci change la gestion d'erreur. Pour finir je donnerai un avis personnel sur l'API de cette classe que je n'aime pas, et je proposerai une (…)
Les coulisses du standard C++
Le C++ a bientôt la quarantaine et pourtant très actif en ce moment avec la finalisation de la prochaine version C++17. Profitons‐en pour faire le point avec une série d’articles sur le C++. Cette première dépêche nous dévoile la face cachée du C++, et donc peut intéresser tous les lecteurs LinuxFr.org. :-)