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. :-)
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.
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 ! ᕕ(ᐛ)ᕗ
Journal [C++14 ] Expressions template pour les nuls
Expression Templates pour les nuls
Après un contact prolongé avec Joël Falcou, et pas mal de nœuds aux cerveaux pour arriver à émuler le comportement du broadcasting de Numpy avec des expression templates dans Pythran, j'ai eu l'envie soudaine, un peu folle peut-être, de réécrire un moteur d'expressions template en C++14, mais pour faire simple et didactique.
Mais de quoi zy parle
Les expressions templates sont une maintenant assez vieille technique de C++ qui permet par exemple d'éviter de (…)
Journal De tout, de rien, des liens, du vrac (mais moins bookmarks cette fois)
Et voici un nouveau numéro !
Bon, faudrait que j'arrive à me caler sur trolldi pour publier, ça pourrait être un peu plus marrant…
Quoi qu'il en soit, j'ai essayé de faire ça un peu mieux en catégorisant un peu plus, même si c'est pas encore parfait. Les liens sont plutôt inclus dans le texte, à vous de dire si c'est mieux ou si vous préférez de bêtes listes.
Pour cette fois, principalement trois thèmes :
- Des histoires de boulot
- Quelques (…)
Journal Un tap tempo en ligne de commande
Bonjour à tous,
j'aimerai vous présenter mon dernier petit projet : TapTempo.
C'est un détecteur de tempo en ligne de commande. L'utilisateur frappe une touche en cadence régulière et le programme en déduit le tempo correspondant. Il est affiché en nombre de battements équivalent par minute (ou BPM en anglais).
La plupart des logiciels audio-numériques ainsi que beaucoup de d'instruments électroniques ont cette fonctionnalité, mais ça me rebutait de lancer un gros logiciel ou de me déplacer vers mon (…)
Qt 4.8 est sorti
La nouvelle version de Qt (prononcer « cute » comme mignon en anglais), le framework en C++ derrière KDE et bien d'autres applications libres, est sortie. Celle-ci est la dernière version majeure de la branche 4.x et la prochaine sera la branche 5.
Merci à Gof, Nÿco, _PhiX_ et reno pour leur aide lors de la rédaction de cette dépêche.
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 (…)
Opmock : un outil pour le TDD efficace en C et C++
Le [TDD] est une pratique souvent utilisée dans les projets de développement utilisant les « méthodes agiles ». Pour supporter cette pratique, il est nécessaire de disposer d'outils qui permettent d'écrire facilement des tests unitaires, mais également de couper les dépendances d'une section de code, afin de la tester en isolation. Les langages actuels, comme Java ou C#, bénéficient tous de pléthore d'outils de ce type, comme Jmockit ou Mockito. Cependant, le C et le C++ n'ont pas cette chance, bien qu'une quantité impressionnante de code les utilise.
Opmock est un outil de génération automatique de stubs et de mocks, qui permet de simplifier énormément le TDD avec des bases de code importantes en C ou C++, existantes ou nouvelles.
Le projet est placé sous licence GPLv3.
Journal C++ Core Guidelines
En ce moment a lieu la conférence CPPCon qui regroupe la crème des acteurs du C++ et de son comité de normalisation. Au cours de cette conférence, Herb Sutter (le responsable du comité de normalisation, travaillant à Microsoft) et Bjarne Stroustrup (inventeur du C++) ont donné deux exposés sur la manière de bien écrire du C++.
Ils en ont profité pour dévoiler un guide des règles de bonne conduite pour C++ accompagné d'une bibliothèque, GSL (Guideline Support Library) permettant (…)
Journal Votre potager a (encore) besoin de Tomate
Je vous parlais l'année dernière de Tomate, un logiciel pour planifier et suivre les cultures au potager.
Le code source est disponible ici: https://github.com/MickaelG/tomate_cpp
Pas de révolution pour cette année, mais pas mal de corrections de bogues, un changement de l'organisation de l'écran, et surtout la possibilité de placer chaque culture dynamiquement dans la planche, au lieu des subdivisions fixes de la première version.
Pour le futur:
- Une version Windows
- La possibilité de spécifier les positions des cultures graphiquement au (…)
C++11 : sur le fil
Dans la course effrénée que se livrent les compilateurs, GCC vient de gagner une manche en étant le premier à fournir une implémentation complète du langage C++11. Les développeurs ont profité de la sortie de la version de maintenance 4.8.1 pour implanter les deux fonctionnalités manquantes :
- les
rvalue-references
pour le pointeurthis
- l'utilisation de
decltype
sur des expressions de type incomplet
NdM : merci à nazcafan pour son journal.
Journal C++11 : sur le fil
Dans la course effrénée que se livrent les compilateurs, GCC vient traîtreusement de gagner une manche en étant le premier à fournir une implémentation complète du langage C++11. Les développeurs ont profité de la sortie de la version de maintenance 4.8.1 pour implanter les deux fonctionnalités manquantes :
les rvalue-references
pour le pointeur this
Celles-ci permettent (entre autres) de surcharger des fonctions membres quand this
est une rvalue
; voici un exemple tiré de la proposition originale :
class X {
(…)
Concours de programmation CodinGame le 22 Février 2014
La prochaine édition de CodinGame, le challenge de code en ligne, aura lieu le samedi 22 Février 2014 à 18h (UTC+1).
L'événement accueillera des développeurs du monde entier pour leur permettre de passer un bon moment, défier leurs pairs, gagner des prix ou entrer en contact avec des sociétés qui leur plaisent et qui recrutent.
Parmi les nouveautés sur la plate-forme :
- Bash arrive parmi les langages disponibles.
- Dart 1.1 et de nouvelles bibliothèques pour Perl ont été ajoutés.
- Le thème de ce challenge est "Ragnarök", issu de la mythologie scandinave. Pour l'occasion, de nouveaux graphismes seront à l'honneur.
Journal Des nouvelles de boost
Bonjour Nal,
Je ne fais plus de C++ depuis longtemps, mais je regarde parfois l'actualité de ce langage.
Sa meilleure bibliothèque est sortie en version 1.75 depuis et propose des nouveautés intéressantes:
Tout d'abord un parseur JSON vraiment simple:
auto george = boost::json::parse( R"( { message: "Monde de merde" } )" );
std::cout << george["message"] << std::endl;
Ensuite un gestionnaire d'erreur qui ressemble un peu à ce que fait Go avec des valeurs de retours multiples.
D'autres libs plus (…)