
Quelques raccourcis :
C++
– Bases, culture et pédagogie
Les liens qui suivent mènent pour l'essentiel vers des sites et articles
discutant des bases du langage C++,
ou ayant une vocation pédagogique quant à ce langage.
Ressources et textes d'introduction
- Démarer avec C++ :
https://isocpp.org/get-started
- Quelques ressources recommandées (et recommandables) pour apprendre C++ :
-
http://derwiki.tumblr.com/post/98651197/what-i-wish-i-had-known-about-developing-c-c-from
- Réapprendre C++
après l'avoir quitté pendant plusieurs
années, un texte de Josh Reuben en 2011 :
http://geekswithblogs.net/JoshReuben/archive/2011/10/29/post-build-c-skill-rebuild.aspx
- Dans les mots de l'auteur, Jordan DeLong, C++, The Good Parts,
une présentation de 2013 :
http://qconsf.com/system/files/presentation-slides/C%2B%2B_good_parts.pdf
- Un glossaire : http://www2.research.att.com/~bs/glossary.html
- Considérations globales sur le langage : http://www.parashift.com/c++-faq-lite/big-picture.html
- S'acclimater à C++
en tant que programmeuse ou en tant que programmeur, texte de Manu Sánchez en
2015 :
http://blog.biicode.com/the-pragmatic-cpp-programmer/
- Que faut-il connaître pour se considérer une programmeuse ou un
programmeur C++
« intermédiaire »? Texte de Jeff Cogswell en 2015 :
http://insights.dice.com/2015/06/22/what-to-know-for-intermediate-c/
- En 2015, Sasha Goldshtein donne ses
recommandations à celles et ceux qui ne se sont pas encore mis à jour vers le C++
moderne (C++ 11
et plus récent) :
http://blogs.microsoft.co.il/sasha/2015/08/15/why-you-have-to-learn-modern-c/
- Plusieurs algorithmes (de tri, principalement, comme
std::sort()) et
plusieurs conteneurs (surtout les conteneurs associatifs comme
std::map) exigent
des types pour lesquels un ordonnancement faible et strict (Strict Weak
Ordering) est possible. Pour comprendre ce que cela signifie :
- Comprendre pourquoi compiler un programme C++
peut être long (de
Walter
Bright) : http://www.drdobbs.com/blog/archives/2010/08/c_compilation_s.html
- Grammaire de C++ :
- Programmer avec C++
serait un geste moral et environnemental, texte de 2014 :
http://mempko.wordpress.com/2014/04/01/c-and-climate-change/
- Quelques pièges qui attendent la « nouvelle » programmeuse ou le
« nouveau » programmeur C++,
répertoriés par Florian Weber :
http://florianjw.de/en/modern_cpp.html
- En 2016, Stephanie Hurlburt suggère
d'apprendre C++
en réalisant des tâches concrètes :
http://stephaniehurlburt.com/blog/2016/5/29/learning-c-as-you-go
- Texte de 2019 dans lequel Jan Wilmans explique
son cheminement pour apprendre C++ :
http://nullptr.nl/2019/01/better-cpp-software-engineer/
Généralités
Liens sur des sujets d'ordre général :
Programmation
fonctionnelle en C++ :
../../Liens/Paradigmes-programmation--Liens.html#programation_fonctionnelle_langage_Cplusplus
Enseignement
Chez
WG21, nous avons depuis 2019
un groupe d'étude travaillant spécifiquement sur l'enseignement de C++, groupe nommé
SG20
dont j'ai l'honneur de faire partie
Enseigner C++ :
Culture et histoire
À propos des aspects culturels et historiques du langage :
- Histoire de ce langage :
- Le pays de C++ :
- C++ est-il vraiment utilisé? à vous de voir :
- Pourquoi C++
n'est pas si mal que ça, finalement :
- Truc un peu vilain : le Grand
C++ Error Explosion Competition, un concours pour
générer le plus grand nombre d'erreurs possible à la compilation avec le moins
d'instructions possible.
http://tgceec.tumblr.com/post/74534916370/results-of-the-grand-c-error-explosion-competition
- L'impact très positif de
C++ 11,
texte de Tony DaSilva en 2014 :
http://bulldozer00.com/2014/06/16/game-changer/
- En 2015, Kenny Kerr
se demande si nous entrons dans un âge d'or (au sens anglais de Golden Age)
ou dans un âge sombre (Dark Ages) de C++ :
http://kennykerr.ca/2015/05/26/a-second-dark-age-for-c/
- C++
est-il un langage du passé ou du futur? Réflexion d'Arne Mertz en
2015 :
http://arne-mertz.de/2015/06/the-state-of-c-is-it-back-or-not/
- Approcher C++
comme un
langage de script, texte de 2015 par A. Sinan
Unur :
http://www.nu42.com/2015/05/cpp-new-scripting-language.html
- Démarrer une entreprise sur la base du développement en C++,
cas vécu relaté par James Perry en 2016 :
https://medium.com/swlh/starting-a-tech-startup-with-c-6b5d5856e6de
- En 2016, Bruce Bye relate son passage à
Meeting C++ 2016,
où il s'est présenté en sceptique provenant du monde du langage
C :
http://undo.io/resources/blog-articles/cpp-confessions-of-a-c-dev/
- Le code source de Cfront, qui a longtemps été le compilateur C++
de référence :
http://www.softwarepreservation.org/projects/c_plus_plus/cfront
- En 2017,
Jens Weller réfléchit sur ce que
deviendra C++...
en 2017, justement :
http://meetingcpp.com/index.php/br/items/cpp-in-2017.html
Technique
Voici quelques articles techniques d'ordre général, qui ne tombent pas
directement dans l'une ou l'autre des autres rubriques.
- Système de types de C++ :
../../Liens/Systemes-types--Liens.html#langage_Cplusplus
- Liste des symboles de la blbiothèque standard de
C++ 03 :
http://www.bobarcher.org/software/C++98%20Symbols.html
- Liste des symboles de la blbiothèque standard de C++ 11 :
http://www.bobarcher.org/software/C++11%20Symbols.html
- Introduction aux structures de contrôle du langage, texte de
2014 :
http://www.lifengadget.com/lifengadget/control-structures-in-cplusplus/
- Quelques quiz de connaissances dans ce langage :
- Méthodes virtuelles :
- Parcourir un répertoire
UNIX
avec des itérateurs : http://www.artima.com/cppsource/randomdirectories.html
- Article du Code Project sur l'effacement
de types et le typage dynamique : http://www.codeproject.com/kb/cpp/dynamic_typing.aspx
- Article du Code Project sur les délégués :
http://www.codeproject.com/kb/cpp/ImpossiblyFastCppDelegate.aspx
- Quelques passages du très bon
C++
Coding Standards, par
Herb
Sutter et
Andrei
Alexandrescu : http://www.artima.com/cppsource/codestandards.html
- Trucs d'optimisation en C++ :
http://h-deb.ca/Liens/Optimisation--Liens.html#optimisation_c_cpp
- Les métafonctions : http://www.artima.com/cppsource/metafunctions.html
- Des λ (avant leur inclusion dans C++ 11),
par Matthew Might :
http://matt.might.net/articles/lambda-style-anonymous-functions-from-c++-templates/
- Transformer constante énumérée en
string et vice versa :
- Utiliser XML avec C++ :
../Sujets/Web/XML-etc.html#langage_Cplusplus
- Traverser des structures hétérogènes avec C++ :
http://www.dre.vanderbilt.edu/~sutambe/documents/pubs/LEESA-DSL09.pdf
- Prudence avec les variables non-initialisées, et en particulier avec
les booléens : http://mlangc.wordpress.com/2010/07/18/when-true-is-not-true-anymore/
- Contrôler des composants Flash avec C++, article du Code Project : http://www.codeproject.com/KB/COM/flashcontrol.aspx
- Rédiger des énumérateurs paresseux (Lazy) :
http://www.simonask.dk/blog/cpp-can-have-lazy-lambda-enumerators-too
- Résoudre un problème en définissant un
DSL interne à C++ :
http://cpp-next.com/archive/2010/09/expressive-c-playing-with-syntax/
- Écrire un
interpréteur Lisp
en C++ : http://howtowriteaprogram.blogspot.com/2010/11/lisp-interpreter-in-90-lines-of-c.html
- Micro manuel pour Lisp implémenté
en C++ : http://badbyteblues.blogspot.com/2010/09/micro-manual-for-lisp-in-c.html
- Les littéraux analogues multidimensionnels (une bizarrerie amusante) :
http://www.xs4all.nl/~weegen/eelis/analogliterals.xhtml
- Si vous aimez la syntaxe de passage de messages d'Objective-C,
voici un article du Code Project montrant
comment il est possible de l'implémenter (avec C++ 11;
ça se fait avec
C++ 03, mais c'est moins agréable) :
http://www.codeproject.com/KB/cpp/cpp0x_message_passing.aspx
- Automatiser la « mémoisation » avec C++ 11 :
http://slackito.com/2011/03/17/automatic-memoization-in-cplusplus0x/
- Utiliser C++ pour développer sous
Windows :
- Intégrer les systèmes de types de
C++ et de Haskell, texte d'Arjun Comar en 2014 :
http://www.acomar.net/posts/2014-04-25-Foreign-CPP-Useful-Types-For-CPP-Interop.html
(notez que ça ne donne pas nécessairement du C++ idiomatique!)
- Déduire le nombre d'éléments d'un tableau, à
l'aide de techniques de programmation générique. Textes de Pete
Barber en 2011 et en 2012 :
- Réduire les copies inutiles par Copy Elision, un texte de
David Rodriguez en 2011 : http://definedbehavior.blogspot.ca/2011/08/value-semantics-copy-elision.html
- Générer du bruit de Perlin, texte de Paul Silisteanu en
2012 : http://solarianprogrammer.com/2012/07/18/perlin-noise-cpp-11/
- Comprendre std::terminate(), texte d'Andrzej
Krzemieński en 2012 :
http://akrzemi1.wordpress.com/2011/10/05/using-stdterminate/
- Évaluer des FFT à la compilation, un texte
de Paul Keir en 2012 :
http://paulkeir.wordpress.com/2012/09/02/a-compile-time-fft-in-c11/
- Un interpréteur statique (oui!) brainfuck
en métaprogrammation, par Tony Young en 2012 :
http://blog.rfw.name/2012/11/12/brainfuck_with_templates.html
- Construire un système de types dynamiques en C++, une ébauche proposée en
2012 (je ne suis pas convaincu que ce soit très idiomatique de C++, cela dit) :
http://crazycpp.wordpress.com/2012/12/29/arbitrary-binding-pt2-rolling-your-own/
- Des fractals avec C++ 11, texte de Paul Silisteanu en
2013 :
http://solarianprogrammer.com/2013/02/28/mandelbroot-set-cpp-11/
- Les 22 (oui, vous avez bien lu!) façons de passer un paramètre à une fonction en C++, selon Sumant
Tambe en 2013 :
http://cpptruths.blogspot.ca/2013/09/21-ways-of-passing-parameters-plus-one.html
- Convertir une chaîne de caractères en entier, comparatif de plusieurs
approches, colligé en 2013 :
http://www.kumobius.com/2013/08/c-string-to-int/
- En 2013,
Raymond Chen rapelle que C++ permet
non seulement de déclarer une méthode abstraite, mais aussi de la définir. Tristement, ni lui, ni les commentatrices et les commentateurs
n'expliquent clairement en quoi cette pratique est raisonnable... Car elle
l'est! En effet, parfois, on veut que les classes dérivées implémentent une
méthode, mais on souhaite quand même offrir une implémentation par défaut de
cette méthode (en particulier, dans le cas d'un destructeur) :
http://blogs.msdn.com/b/oldnewthing/archive/2013/10/11/10455907.aspx
- Quelques choses que peu de gens savent sur ce langage :
- Réduire les dépendances, et par le fait-même le temps de compilation :
- Définir un type scope, ayant un comportement
semblable à celui qu'on rencontre en D, un texte de Nicolas Guillemot en
2013 :
http://cppsecrets.blogspot.ca/2013/11/ds-scope-statement-in-c.html
- Un piège sournois relevé par Andrzej Krzemieński en 2014 :
http://akrzemi1.wordpress.com/2014/03/20/strings-length/
- Intervalles :
- Quelques subtilités plus obscures du langage, colligées par Apie Mane en
2014 :
http://aurisc4.blogspot.ca/2014/03/darkest-corners-of-c.html
- Utiliser C++ pour le développement sur plusieurs plateformes mobiles,
l'exemple de Dropbox relaté par Ole Begemann en 2014 :
http://oleb.net/blog/2014/05/how-dropbox-uses-cplusplus-cross-platform-development/
- Implémenter un système de signaux, réminescent de celui de Qt, par Adrien
Hamelin en 2014 :
https://aboutcpp.wordpress.com/2014/12/20/a-simple-signal-system/
- Des trucs de programmation :
- Accélérer la compilation de programmes C++,
une série proposée par Krzysztof Szatan en 2017 :
Bas niveau
Certaines considérations ayant trait au
système de types de C++ vous toucheront sans doute aussi si la présente section vous intéresse.
C++
à un niveau plus bas :
Moderne
Il semble d'usage de qualifier de « moderne » le code C++
qu'il est possible d'exprimer depuis
C++ 11,
bien qu'il existe aussi une bibliothèque
portant ce nom. Ce nom a été introduit (je pense) par
Andrei
Alexandrescu dans
Modern C++
Design, mais je pense que son sens a changé (évolué?) depuis et porte une
nouvelle teinte suivant la publication d'Effective
Modern C++ par
Scott Meyers :
- Texte de 2015 par Mike P., qui décrit ce que
signifie à ses yeux moderniser le code (et sa définition rejoint ce que permet
de faire le code
C++
moderne) :
https://software.intel.com/en-us/articles/what-is-code-modernization
- Éviter de s'empêtrer dans la complexité avec le C++
moderne, une présentation de 2015 par Victor A.
Laskin :
http://vitiy.info/Slides/MeetingCPP2015/assets/player/KeynoteDHTMLPlayer.html#0
- En 2016, Philippe Desjardins-Proulx met
en relief à quel point l'écriture moderne de code C++
simplifie la tâche des programmeuses et des programmeurs :
http://phdp.github.io/posts/2016-06-28-not-your-grandmother-cpp.html
- Certains se questionnent sur le sens à donner à l'appellation (maintenant
consacrée) de C++
« moderne ». C'est une question plus profonde qu'il n'y paraît à première vue :
- Profiter du C++ moderne
pour réduire les bogues dans nos programmes, par Pavel Belikov en
2016 :
http://www.viva64.com/en/b/0429/
- Réflexion de Phil Nash en 2015 sur ce que
signifie écrire du code C++
« moderne » depuis l'avènement de
C++ 11 :
http://accu.org/index.php/journals/2064
- C++
et le monde « moderne », par Sergey Vasiliev en 2015 :
https://medium.com/@CPP_Coder/c-in-the-modern-world-ce6f470dfbe0
- Bénéficier du C++
moderne, mais sans devenir fou, un texte de Bartlomiej Filipek en 2017 :
http://www.bfilipek.com/2017/02/how-to-stay-sane-with-modern-c.html
- En 2017, Rainer Grimm essaie de définir ce
que signifie le C++
« moderne » :
http://www.modernescpp.com/index.php/what-is-modern-c
- Toujours en 2017, Rainer Grimm offre un
plaidoyer pour des guides destinés à faciliter l'accession au C++
« moderne » pour les novices :
http://www.modernescpp.com/index.php/why-do-we-need-guidlines-for-modern-c
- Découvrant le C++
« moderne » en 2017, l'auteur de ce texte
exhorte les programmeuses et les programmeurs de s'approprier les nouveaux
idiomes et les nouveaux outils de ce langage :
http://cppdepend.com/blog/?p=171
- En 2016, David Bolton présente le C++
« moderne » à partir de quelques exemples :
http://uk.dice.com/technews/modern-c-examples/
- Dans ce texte de 2018, Mathieu Ropert explique
qu'il est possible d'écrire du code C++
« moderne » même en se limitant à C++
03 :
https://mropert.github.io/2018/02/25/modern_cpp_03/
- Migrer un système embarqué vers une version C++
« moderne », par Phillip Johnston en 2016 :
https://embeddedartistry.com/blog/2016/10/18/migrating-to-modern-c
- Texte de 2018 par Arne Mertz, qui rappelle de
programmer en C++
« moderne » n'est pas nécessairement équivalent à « programmer avec le tout
dernier standard » :
https://arne-mertz.de/2018/08/modern-c-newest-standard/
Critiques
Je vous invite à lire ces critiques... avec un esprit
critique, sans mauvais jeu de mots, car certaines sont un peu grossières,
mais tout n'est (évidemment) pas si sombre...
- http://www.mindspring.com/~blackhart/Re%20%20C++%20-%20The%20COBOL%20of%20the%2090s.html
- http://cpptruths.blogspot.com/2005/10/whats-wrong-with-c.html
- http://www.mistybeach.com/articles/WhyIDontLikeCPlusPlusForLargeProjects.html
- http://www.adaic.org/whyada/ada-vs-c/cppcv3.pdf
- http://weblog.raganwald.com/2006/03/fair-and-balanced-look-at-static-vs.html
- Article du Code Project suggérant
d'introduire plus de dynamisme dans le langage : http://www.codeproject.com/KB/cpp/dynamic_cpp.aspx
- http://www.theregister.co.uk/2009/05/07/verity_stob_cplusplus/
- Yosef Kreinin n'aime vraiment pas C++ :
- Critique des itérateurs, par
Andrei Alexandrescu : http://www.boostcon.com/site-media/var/sphene/sphwiki/attachment/2009/05/08/iterators-must-go.pdf
- http://ridiculousfish.com/blog/archives/2009/06/22/i-didnt-order-that-so-why-is-it-on-my-bill-episode-1/
- Préférer Fortran à C++ :
http://www.lahey.com/PRENTICE.HTM
- Pas de C++
dans le noyau
de Linux (Linus
Torvalds n'aime pas le langage) :
http://gigamonkeys.com/blog/2009/10/16/coders-c++.html
- http://eli.thegreenplace.net/2009/10/17/the-c-bashing-season-is-back/
- http://jafl.my.speedingbits.com/blog/2009/10/17/c/
- http://wordaligned.org/articles/next-permutation
- http://schneide.wordpress.com/2009/07/06/how-much-boost-does-a-c-newbie-need/
- Ceci est, bien entendu, humoristique : http://artlung.com/smorgasborg/Invention_of_Cplusplus.shtml
- Ceci aussi : http://www.teamten.com/lawrence/writings/dynamic_cast_std_integer_c.html
- Tiens, tiens : quel est le langage utilisé par les équipes
en tête de liste?
- http://eli.thegreenplace.net/2010/06/11/the-perils-of-unsigned-iteration-in-cc/
- http://blog.codeimproved.net/2010/07/whats-wrong-with-c/
- http://librelist.com/browser//mongrel2/2010/7/15/c-verses-c++/#770d94bcfc6ddf1d8510199996b607dd
- http://my.opera.com/Vorlath/blog/2010/07/17/c-does-it-suck
- http://apenwarr.ca/log/?m=201007#22
- http://www.fefe.de/c++/c%2b%2b-talk.pdf
(j'ai beaucoup de réserves sur ce texte-là, mais enfin...)
- http://c0de517e.blogspot.com/2011/02/surviving-c.html
-
http://miek.nl/downloads/2010/c++-talk.pdf (si je peux me permettre : je pourrais écrire quelque chose de semblable pour tout langage de programmation; c'est un peu faible)
- http://www.johndcook.com/blog/2011/06/14/why-do-c-folks-make-things-so-complicated/
(mais plus récemment http://www.johndcook.com/blog/2011/07/06/maybe-c-hasnt-jumped-the-shark-after-all/comment-page-1/)
- Les critiques positives sur C++ 11
commencent à circuler, par exemple :
- Vivre le passage à un nouveau standard, une rélexion de Marc
Mutz en 2011 : http://marcmutz.wordpress.com/2011/09/20/c98-support-costs-extra/
- En 2012, John Sonmez se dit d'avis que pour la
plupart des applications, C++ est trop complexe pour ce qu'il apporte :
http://simpleprogrammer.com/2012/12/01/why-c-is-not-back/
- Texte de 2012 par Jon Harrop, attaquant directement certaines propositions de
Herb Sutter
à propos du modèle mémoire de C++ 11
et de ses avantages :
http://flyingfrogblog.blogspot.ca/2012/01/c-renaissance.html
- Critique de
Bartosz Milewski en 2013, qui présente C++ comme le Edward
Scissorhands de la programmation, capable de belles choses mais trop
périlleux :
http://bartoszmilewski.com/2013/09/19/edward-chands/
- Texte de Thomas Becker en 2013 sur ce qu'il qualifie de « culture de la
complexité » :
http://blog.greaterthanzero.com/post/58482859780/c-and-the-culture-of-complexity
- En 2013, Steve Donovan critique le design des
templates sur plusieurs aspects :
http://steved-imaginaryreal.blogspot.ca/2013/10/c-some-consequences-of-design-decision.html
- En 2014,
Miguel de Icaza exprime sa vision quelque peu critique de certaines
bibliothèques C++ :
http://tirania.org/blog/archive/2014/Jan-04.html
- Texte de 2014 d'un auteur qui cherche un bon
remplacement pour C++,
qu'il estime être une chose du passé :
http://c0de517e.blogspot.ca/2014/06/where-is-my-c-replacement.html
- Selon Igor Kalnitsky en 2014, le pire aspect
de C++
est le legs du code
C, qui
fut longtemps l'un de ses plus grands avantages :
http://kalnitsky.org/2014/10/25/c-legacy-is-evil/
- En 2012, Maurizio Tomasi explique ce que d'autres langages
comme Ada
et D lui ont appris sur C++
et qu'il n'apprécie pas :
http://ziotom78.blogspot.it/2012/11/what-ada-and-d-taught-me-about-c.html
- Texte de 2014 défendant l'idée que le pire
ennemi de C++
soit son passé :
http://www.codergears.com/Blog/?p=867
- En 2010, Botond Ballo explique qu'il aime bien C++,
personnellement, et donne ses raisons :
https://botondballo.wordpress.com/2010/09/18/why-i-love-c-plus-plus/
- Texte de 2014 par Tony DaSilva, mettant l'accent sur le fait
qu'on fasse erreur en prenant C++
comme un langage
OO,
fonctionnel ou
générique, sa grande force étant qu'il embrasse toutes ces approches à la
fois :
http://bulldozer00.com/2014/05/30/fungenoop-programming/
- À propos de la complexité de C++ :
- Si vous utilisez encore Turbo C++, un produit du début des années
1990, il serait peut-être temps de vous mettre à jour...
http://gettinggeek.com/stop-using-turbo-c-that-is-now-stupid/
- En 2010, texte dont l'auteur se dit d'avis que
les abstractions que permet de réaliser C++
ne suffisent pas pour un projet d'envergure (je ne sais pas s'il a changé
d'avis depuis C++ 11) :
http://voodoo-slide.blogspot.ca/2010/01/amplifying-c.html
- Texte de 2013 où Dorin Lazăr explique qu'il a abandonné C++ :
http://dorinlazar.ro/the-day-i-gave-up-on-cpp/
- Richard Mitton a des reproches à adresser au comité de standardisation :
- En 2016, Joseph Anderson explique pourquoi il
n'a pas abandonné C++ :
https://josephanders0n.github.io/2016/02/12/why-i-haven-t-given-up-on-c.html
- En 2015,
Scott Meyers
(oui, lui!) émet des critiques sévères envers C++ :
- Henrique F. Bucher se montre critique envers
C++,
en particulier son incarnation moderne :
- Écrire du code obscur mais légal en C++,
un texte très méchant de 2016 :
https://dev.krzaq.cc/post/code-doodles-4-obfuscating-code-its-logical/
- En 2016, Henry Bucher (je pense) fait une
critique étrange, à l'effet que C++
serait moins intéressant qu'il ne le semble car certains des outils de sa
bibliothèque standard utilisent du code
C sous
la couverture :
http://www.vitorian.com/x1/archives/393
- Dans ce texte de 2017, Evan Klitzke se porte à
la défense de C++,
le langage qui (malgré ses défauts) permet d'écrire du code extrêmement
efficace :
https://eklitzke.org/in-defense-of-c++
- En 2017, Oleksandr Kaleniuk estime que programmer en C++ est une forme de violence que
l'on s'applique pour être fière / fier de soi :
https://hackernoon.com/blood-sweat-and-c-294c8bb7836
- Texte de 2017 par Dendi Suhubdy pour qui, malgré quelques
irritants, programmer avec C++
est la meilleure option pour qui souhaite du code extrêmement « performant » :
http://suhubdy.com/blog/in-defence-of-c/
- Un exemple proposé par
Eric Niebler
(que plusieurs ont critiqué comme quelque peu mal avisé, étant inaccessible
pour la pensée de la majorité... L'enfer est pavé de bonnes intentions!) a
mené à quelques critiques bien senties :
- En 2017, Robert O'Callahan exprimer les
difficultés qu'il ressent à essayer d'écrire du code C++
robuste, pour mettre de l'avant que ce n'est pas une simple question de
compétence :
https://robert.ocallahan.org/2017/07/confession-of-cc-programmer.html
- En 2017,
Eric S. Raymond explique pourquoi il ne veut plus toucher à C++ :
http://esr.ibiblio.org/?p=7724
- En 2018, l'équipe de CppDepend montre,
chiffres à l'appui, que C++
est plus pertinent que jamais :
http://cppdepend.com/blog/?p=649
- Dans un autre article de 2018, l'équipe de
CppDepend discute de la différence entre « supporter la programmation de
bas niveau » et « être trop compliqué » :
http://cppdepend.com/blog/?p=766
- Critique de Jonathan Blow, qui explique ce qu'il n'aime pas de C++ et
pourquoi il développe son propre langage,
Jai :
https://www-gamesindustry-biz.cdn.ampproject.org/v/s/www.gamesindustry.biz/amp/2018-07-02-jonathan-blow-c-is-a-weird-mess
- En 2018, Corentin Jabot offre une critique
étoffée du modèle de compilation de C++ :
https://cor3ntin.github.io/posts/translation_units/
- Dans ce texte de 2019, Alex Gaynor se dit
d'avis qu'il est trop difficile d'écrire du code C++
robuste, même s'il est moderne :
https://alexgaynor.net/2019/apr/21/modern-c++-wont-save-us/
Étrangetés techniques :
- En 2017, Simon Brand montre que l'opérateur
:: de C++
a parfois un bien drôle de comportement :
https://blog.tartanllama.xyz/silly-syntax/
- Glennan Carnie, dans ce texte de 2018, montre
que la grammaire de C++
accepte parfois des parenthèses à des endroits discutables :
https://blog.feabhas.com/2018/02/may-not-meet-developer-expectations-77/
- Présentation de Simon Brand en 2018, qui met en
relief quelques étrangetés du langage :
https://docs.google.com/presentation/d/1V98O1F7aFqqCdenDQsUI3ZlQVHUwZIvkmB2HyPAJH4Y/edit#slide=id.g3482464683_0_154
- Texte d'Arthur O'Dwyer en 2018 décrivant
quelques « impossibilités » avec C++ :
https://quuxplusone.github.io/blog/2018/06/12/perennial-impossibilities/
- En 2018, Arthur O'Dwyer souligne que la
programmation générique par contrainte sur des références peut surprendre...
https://quuxplusone.github.io/blog/2018/09/09/constrained-forwarding-references/
- Survol de manières étranges de dire "Hello" en C++,
une courte présentation de Olve Maudal en 2018 :
https://speakerdeck.com/olvemaudal/42-silly-ways-to-say-hello-in-modern-c-plus-plus-sep-2018
- Durant CppCon 2018,
Richard Smith a lancé un concours. Pour le remporter, il fallait livrer un
extrait de programme
C++
valide mais « intéressant » (au sens de surprenant, horrible,
décontenançant, etc.) et suffisamment concis pour être logé dans un tweet :
https://zygoloid.github.io/cppcontest2018.html
(il y a des horreurs épouvantables dans ça, la plupart des vraiment vilaines
venant de membres du
WG21)
- Série d'étrangetés mises en lumière par Bartlomiej Filipek en 2019 :
https://www.bfilipek.com/2019/03/darker-cpp.html
Dialectes
C++ n'est pas un langage qui encourage la segmentation en dialectes, mais il en existe malgré tout quelques-uns.
Pour mes compte rendus des rencontres de WG21, le comité de standardisation de C++, du moins pour celles auxquelles j'ai participé, voir :
Standardisation
Si la question de la progression du langage vous intéresse, sachez que nous
tenons à jour un outil remarquable pour qui souhaite consulter les document
pertinents à ces travaux : wg21.link
Standardisation
(voir aussi C++ 11,
C++ 14
et
C++ 17) :
Notez que vous pouvez en tout temps accéder à une version à peu près
finale du standard le plus à jour, avec hyperliens et tout le tralala, à
travers http://wg21.link/draft et que le
merveilleux site http://eel.is/c++draft/ est
construit sur la base des sources les plus à jour du standard en cours de
construction