Note de lecture : A Tour of C++ 2nd edition, par Bjarne Stroustrup

Note : 5 ; Une introduction qui résiste quand même beaucoup sous la dent

S’embarquer pour un tour avec Bjarne Stroustrup, cela ressemble davantage à une descente de rapides qu’à une croisière pour le troisième âge. La première édition s’arrêtait au C++11, celle-ci adresse C++17, avec un regard vers C++20, même si la norme a quelque peu évolué depuis la parution de l’ouvrage.
Le format du livre n’a guère changé : avec 225 pages sur 16 chapitres, il reste dans les canons du volume précédant. On pourrait croire que le premier chapitre à vocation introductive n réserve aucune surprise, mais ce serait sans compter sur la déduction de type avec « auto » ni sur les constexpr qui trouveront leur usage dans le template metaprogramming. Les types utilisateurs du second chapitre introduisent, mais avec si peu de clarté, les enum class qui doivent concurrencer les énumérations de Java et entretien fort perfidement la confusion entre struct et class ! La limpidité n’a jamais été le fort du créateur du C++.

Pour le chapitre 3 consacré à la modularité, ce sont les modules qui sont la grosse nouveauté… à venir dans le C++ 20 ! Mais le texte évoque aussi les évolutions concernant les exceptions et les structured bindings. Le texte est clair, ce qui n’est pas coutumier. Le chapitre 4 se focalise sur les classes et aborde aussi les conteneurs (qui seront aussi abordés plus loin). Peu de nouveautés en vue ici hormis les nouveaux initialiseurs et unique_ptr qui remplace avantageusement l’exécrable auto_ptr (paix à son âme).

Les opérations essentielles, au chapitre 5 aborde, entre autres chose, le move operator et les « références droites ». Le concept est difficile et il faut bien dire qu’il était acquis que cela serait très, très mal expliqué ici. Le détour par le « modern C++ » s’avérera indispensable. L’opérateur littéral est aussi évoqué sans non plus que son usage soit spécialement clair. Les templates sont au menu du chapitre6, ce qui nécessite de s’accrocher car il y a beaucoup de nouveautés ici. Toutefois, les gros morceaux seront d’avantage abordés au chapitre 7. Cela laisse à l’auteur la possibilité d’évoquer les concepts mais sans les présenter ce qui nous laisse joyeusement dans le brouillard. Bien joué.

Lire la suite
Publicité

Note de lecture : A Tour of C++, par Bjarne Stroustrup

Note : 5 ; Une introduction au C++ 2011, qui se lit mieux si on comprend déjà quelque peu le langage…

Une mise à jour de mes connaissances sur les dernières évolutions du langage : voilà ce qui étaient mes attentes concernant ce livre. Un livre fort court avec seulement 170 pages, ce qui me convenait parfaitement. D’ailleurs quand je dis « dernières évolutions du langage », c’est une façon de parler : j’ai bien attendu l’année de la norme 2017 pour lire un livre sur la norme 2011…

Le texte est bien découpé : les 170 pages sont réparties en 14 chapitres, chacun adressant un thème particulier du langage. Le premier couvre les « basics » sur 14 pages, j’y apprends quand même plusieurs nouveautés : le nullptr qui remplace null et la syntaxe for range permettant l’itération implicite sur des containers, comme en Java. Mais aussi l’inférence de types avec auto et l’initialisation des variables avec les accolades au lieu des parenthèses (on continue par ailleurs à utiliser celles-ci, tout n’est pas clair…). De petites (et moins petites) choses, mais de bonnes choses. Seulement 6 pages pour les « User defined types » du chapitre 2. Il faut dire que l’on n’a pas encore abordé les classes. Ici la nouveauté réside dans les class enums qui permet de typer ceux-ci. Là aussi on se rapproche du Java, mais sans pour autant pouvoir faire autant de choses avec. Dommage d’y consacrer moins d’une demi-page.

Lire la suite

Finally, the days where a novice programmer can know all of a language are gone, at least for the languages in widespread industrial use. Few people know “all of C” or “all of Java” either and none of those are novices. It follows that nobody should have to apologize for the fact that novices do not know all of C++. What you must do—in any language—is to pick a subset, get working writing code, and gradually learn more of the language, its libraries, and its tools.

Bjarne Stroustrup

Bjarne Stroustrup

Note de lecture : The C++ Answer Book, par Tony L. Hansen

Note : 6 ; Un compagnon de route au Stroustrup.

Il s’agit, comme son titre l’annonce d’un livre d’exercices corrigés. Aujourd’hui c’est un texte fort ancien. Ancien peut-être, mais volumineux, certainement. On en prend pour 520 pages sur 8 chapitres seulement, sans compter les annexes ! Voyons ce qu’il a dans le ventre.
On passera rapidement sur le 1er chapitre qui est introductif (5 pages) pour nous tourner vers le 2nd qui traite des déclarations et des constantes. Les exercices sont tous très simples, c’est aussi l’occasion d’évoquer des éléments connexes à la questions en plus de répondre à celle-ci.

Si le chapitre 2 ne comptait qu’une trentaine de pages, c’est près de cinquante que nous offre le chapitre 3 dédié aux expressions. On y a droit inévitablement aux ordres d’évaluation de expressions, mais aussi aux comportements « limite » du langage, y compris à ceux causant des problèmes de portabilité. Une partie significative du chapitre est dédié à la manipulation de chaine de caractères, à l’ancienne façon « C ». Le niveau de difficulté augmente significativement, il était au maximum à 1.5 au chapitre 1, il monte ici à 2.5 selon l’échelle exponentielle de l’auteur ! La dimension algorithmique des exercices n’est pas triviale. De quoi se rafraichir les neurones !

Lire la suite