Skip to content

Latest commit

 

History

History
262 lines (179 loc) · 13.6 KB

README.md

File metadata and controls

262 lines (179 loc) · 13.6 KB

Ce répertoire contient des images sous licence libre a propos du C++

C++ Complexe

Auteur Contribution Licence
Oliver H Ébauche CC-BY-SA-3.0
AKP Dessin à la main CC-BY-SA-3.0
Oliver H Numérisation et textes CC-BY-SA-3.0
Dave Note repositionnable jaune (post-it) CC0 Public Domain
thep police de caractères Purisa GPL v2

Deux collègues discutent :

  • C++ est enfin sorti
  • Trop top
  • Va falloir se palucher les 1600 pages du standard C++17
  • Gloups

Une note repositionnable (post-it) à la fin du dessin indique : "Il y en a qui ne connaissent pas encore LinuxFr.org" (LinuxFr.org peut être remplacé par C++FRUG...)

La réalisation de cette image s'est basée principalement sur deux logiciels :

  • potrace (vectorisation) ;
  • inkscape.

Quatre variantes :

  1. L'ébauche originelle au crayon ;
  2. La version SVG avec les balises <text> et donc nécessite de la présence de la police Purisa ;
  3. Celle avec les textes remplacés par des chemins <path> donc ne pouvant plus être édités ;
  4. Celle pour une conférence C++Frug

ébauche au crayon

L'original avec les balises <text>

Replacement des balises <text> par <path> pour ne pas dépendre de la présence de la police de caractères

Variante pour une conférence C++FRUG avec les balises <text>

Évolution du langage C++

Auteur Contribution Licence
Jae-Zun Prototypage CC-BY-SA-3.0
Florent B Dessin à la main CC-BY-SA-3.0
Oliver H Numérisation et textes CC-BY-SA-3.0
thep police de caractères Purisa GPL v2

Analogie entre chaque version C++ et l'évolution de l'homme. Le singe est associé à "C with Classes", puis "C++2.0" et "C++98" pour des ancêtres plus proches de homo sapiens qui se redressent de plus en plus. Après homo sapiens (C++03), les descendants se courbent de plus en plus (C++11, C++14) pour se retrouver devant un ordinateur (C++17). Au dessus de ce dernier homme, un texte "Cool On va pouvoir coder".

La réalisation de cette image s'est basée principalement sur quatre logiciels :

  • potrace (vectorisation) ;
  • inkscape ;
  • meld (pour comprendre ce que inkscape rajoutait dans le SVG) ;
  • geany (pour supprimer les parties inutiles du contenu SVG).

Deux versions :

  1. L'originale avec les balises <text> et donc dépend si la police Purisa est installée sur la machine ;
  2. Celle avec les textes remplacé par des chemins <path> donc on ne peut plus éditer les textes.

Version originale avec les balises <text>

Version insensible à la présence des polices de caractères

C++17 Président

Auteur Contribution Licence
Oliver H Dessin, textes, numérisation, vectorisation CC-BY-SA-3.0

Analogie entre les fonctionnalités promises pour C++17 et les promesses des candidats à la présidentielle de 2017 en France.

La réalisation de cette image s'est basée principalement sur deux logiciels :

  • potrace (vectorisation) ;
  • inkscape.

C++17 président

Bjarne impatient pour les Concepts

Auteur Contribution Licence
Oliver H Idée, dessin et textes CC-BY-SA-3.0
H. Harendal (ADF) Police Gillius N°2 inspirée de Gill Sans GPL v2 (avec exception)
thep Police de caractères Purisa GPL v2

En 2003, Bjarne Stroustrup propose la première version des Concepts. Ce "comic strip" imagine alors Bjarne demander l'intégration des Concepts pour chacune des versions de C++ : C++03, C++11, C++14, C++17... et à chaque fois les Concepts ne sont pas intégrés. Sur la dernière vignette, les Concepts sont enfin intégrés (de très nombreuses décennies plus tard). Sur cette dernière vignette est dessinée une pierre tombale avec une voix qui sort "Ce n'est pas trop tôt !".

La réalisation de cette image s'est basée sur quatre logiciels :

  • inkscape (pour le dessin vectoriel initial) ;
  • geany (pour les améliorations manuelles dans le XML générés par inkscape) ;
  • gimp & potrace (tentative de conversion des textes en path au lieu d'utiliser inkscape).

Deux versions :

  1. L'originale avec les balises <text> nécessite l'installation des polices de caractères Purisa et Gillius, ainsi que le support des attributs letter-spacing et word-spacing (firefox ne le supporte pas, du moins pas en 2016) ;
  2. Celle avec les balises <text> remplacées par des chemins <path> (10 foix plus volumineuse, mais les <path> de mêmes caractères ne sont pas réutilisés).

C++ Concepts et Bjarne (version originale avec les balises text)

C++ Concepts et Bjarne (version insensible aux polices de caractères)

Chantons déçus C++17

Auteur Contribution Licence
Guss Idée d'un chaton triste Concept & Réflexion
Ziyue Dessin à la main (crayon) CC-BY-SA-3.0
Oliver H Numérisation, changements importants et textes CC-BY-SA-3.0

Deux chatons déçus du contenu de C++17 discutent :

  • Sniff.. On n'a pas les Concepts
  • Ni la Réflexion

La réalisation de cette image s'est basée principalement sur deux logiciels :

  • GIMP ;
  • G'MIC (Vector painting) .

Chatons tristes C++17

Ci-dessous le dessin original dessinée par Ziyue avant les améliorations réalisées avec GIMP et G'MIC. Cette image est au format WebP afin de limiter les fichiers binaires dans le dépôt Git. Chromium supporte depuis longtemps le format WebP, et Firefox devrait bientôt le supporter aussi.

Dessin original de Ziyue

C++17 sauve une écolière

Auteur Contribution Licence
Ziyue Dessin à la main (crayon) CC-BY-SA-3.0
Oliver H Numérisation, changements importants et textes CC-BY-SA-3.0

Une maîtresse est atterrée que son élève ait rédigé sa punition en C++ avec une boucle qui écrit 100 fois "Je ne dois pas jeter d'avion en papier en classe". A teacher is appalled her student has written her punishment in C++ using a loop writing 100 times "I do not throw paper plane in class" in French.

La réalisation de cette image s'est basée principalement sur deux logiciels :

  • GIMP ;
  • G'MIC (Vector painting) .

Le fichier source au format XCF pèse 104 Mo (8466 × 4505 pixels) :
https://commons.wikimedia.org/wiki/File:Cpp-ecole-primaire_copyright-Ziyue-OliverH-2016_CC-BY-SA-3.xcf

Six images générées = deux format (JPEG et WebP) et trois codes C++ écrits sur le tableau :

  • en utilisant int i=0 (C++98) ;
  • en utilisant auto i{0} (C++17) ;
  • en utilisant std::fill_n() (idée de devnewton).

  1. JPEG "int i=0"
  2. WebP "int i=0"
  3. JPEG "auto i{0}"
  4. WebP "auto i{0}"
  5. JPEG "std::fill_n()"
  6. WebP "std::fill_n()"

Compilé c'est Testé

Auteur Contribution Licence
Oliver H Idée, dessin et textes CC-BY-SA-3.0

L'adage "Compilé c'est Testé, Linké c'est Livré" est possible pour le C++ en codant sa lib en constexpr et ses tests unitaires en static_assert().

La réalisation de cette image s'est basée sur quatre logiciels :

  • inkscape (pour le dessin vectoriel initial) ;
  • scour (pour améliorer le fichier XML produit par inkscape) ;
  • geany (pour finaliser les améliorations manuellement) ;
  • meld (pour contrôler les changements à chaque étape).

Deux versions :

  1. Le brouillon original matricielle ;
  2. La version vectorielle.

Brouillon original

Version vectorielle

Un bogue dans le livre de Bjarne

Auteur Contribution Licence
Oliver H Idée, dessin et textes CC-BY-SA-3.0

Le livre de référence du C++ par Bjarne Stroustrup contient une erreur.
Pas de soucis : pour corriger la situation, on change le langage !

La réalisation de cette image s'est basée sur quatre logiciels :

Bjarne propose de changer le C++ pour corriger son livre qu'il tient dans ses mains

Les fonctions libres

Auteur Contribution Licence
lmg HS Idées -
Oliver H Dessin CC BY-SA 4.0
FreeSeamlessTextures.com Texture CC BY
Émilie Suggestions d'améliorations -

Cette illustrations contient de nombreux messages.

Deux prisons sont représentées en arrière plan. La première est celle des fonctions membres. La seconde prison est celle des spécifications techniques (TS) qui ne sont pas (encore) intégrées au standard. Un bonhomme derrière les barreaux de cette prison représente le TS "Unified Call Syntaxe". Celui-ci se dit qu'il vient de prendre trois ans ferme (car il n'a pas été intégré Au C++17, et il sera peut être intégré à C++20).

Trois bonhommes sortent de la première prison : empty(), data() et size() car ces fonctions deviennent également des fonctions libres à partir de C++17. Voici leur dialogue :

  • empty() : Que faire maintenant que nous ne sommes plus cantonnés aux classes ?
  • data() : Étendre les autres types d'objet.
  • size() : Et faciliter la programmation générique.

Dehors, les attendent deux filles : begin() et end(). Ces deux fonctions étaient les seules fonctions membres à avoir été devenues également fonctions libres (C++11). La fonction begin() leur fait signe et leur dit "Coucou, par ici les fonctions libres". Quant à la fonction end(), elle accueille une autre fille en lui disant "Salut string_view". Cette fille s'oriente vers end() et tourne le dos au lecteur qui remarque son pantalon taille basse et son string.

La réalisation de cette image a pu être possible grâce à plusieurs logiciels libres :

Les fonctions empty, data() et size() sortent de la prison "class" et rejoignent les fonctions begin() et end() qui les accueillent. Ces deux dernières fonctions accueillent également string_view. Derrières les barreaux de la prison des spécifications techniques, Unified-Call-Syntax va devoir y rester trois ans pour tenter de sortir avec C++20