====== C++, Qt, OpenGL, CUDA ====== Bonjour à tous Les tutoriels sur internet sont une source d'information et d'auto-formation très intéressante. Cependant, il faut reconnaître qu'il est difficile de trouver des tutoriels de niveau correct, on doit souvent se contenter de tutoriels de qualité plus ou moins bonne, plus ou moins bien rédigés, plus ou moins exacts. L'un des points que j'appréciais sur Developpez.com est le processus de validation en plusieurs étapes des articles. La vie d'un article commençait sur le forum privé de l'équipe de rédaction C++, l'auteur devait lancer une discussion pour avoir une relecture technique. Après validation et corrections, l'article passait ensuite en gabarisation pour mettre dans un format XML spécifique, utilisé pour générer les différentes versions (en ligne, hors ligne, PDF, ebook, etc). Pour terminer, l'article passait dans les mains des correcteurs, qui valident l'orthographe, la grammaire et parfois les tournures des phrases. Au final, 5 à 10 personnes contribuaient à chaque article, ce qui garantissait sa qualité. Depuis que je rédige mes articles sur mon propre blog, je n'ai plus cette relecture technique et orthographique avant publication. Il me faut attendre les commentaires de lecteurs pour corriger d'éventuelles erreurs ou préciser certains points. En revanche, il y a un défaut que je retrouve sur tous les sites : l'absence de mise à jour des tutoriels. Sur Developpez.com, quand je suis devenu responsable de la rubrique C++, il n'y avait plus de responsable C++ depuis plusieurs années. La majorité des tutoriels et la FAQ datent de plusieurs années (c'est encore le cas) et j'ai dû, à plusieurs reprises, déconseiller les cours de C++ de base aux débutants. La situation n'est pas mieux ailleurs, le tutoriel C++ débutant sur OpenClassRooms n'est pas à jour pour le C++ (C++11) et Qt (Qt 5). Et je dois reconnaître que le problème se pose aussi pour mes propres tutoriels. Le tutoriel sur Qt Android, le tutoriel le plus consulté sur mon blog, n'est pas à jour pour Qt 5.4. Mon tutoriel sur le C++11 n'a pas été finalisé. C'est la raison pour laquelle je crée ce wiki : permettre à tous de corriger ou mettre à jour mes tutoriels. Et pour rappel, mes tutoriels sont tous (même mes anciens articles sur Developpez.com) sous licence Creative Common BY-NC-SA. Je demande simplement de citer la source. Même si je choisis les articles que je rédige en fonction de mes propres centres d'intérêt, je suis ouvert aux suggestions. Si vous le souhaitez, vous pouvez proposer des thèmes sur la page [[Propositions de sujets d'article]]. Si vous souhaitez également que j'ajoute des fonctionnalités sur ce wiki (dokuwiki), vous pouvez également le faire sur cette page. ====== Raccourcis ====== ^ [[https://guillaumebelz.github.io/qt6/installation/|Installation de Qt 6.2]] ^ ====== Cours de C++ moderne ====== Depuis quelques semaines, je me suis lancé dans un projet que j'envisage depuis des années : la rédaction d'un cours en C++ "moderne". Ce cours est encore en cours de rédaction, mais il y a une vingtaine de chapitres déjà écrit et le PDF fait 200 pages. Il faudra encore quelques mois pour avoir la version finale, il manque en particulier les exercices d'application. Mon ancien cours C++ n'est plus à jour. Je vous conseille le cours C++ sur le site Zeste de savoir ou le livre "Tour of C++" si vous savez déjà programmer. * [[https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/|La programmation en C++ moderne (Zeste de savoir)]] * [[pédagogie du C++]] Si vous avez des questions ou des remarques, vous pouvez les poser directement sur le [[http://fr.openclassrooms.com/forum/sujet/nouveau-cours-c-moderne|forum du Site du Zéro]]. ====== Articles C++ ====== Documentation de référence : [[http://en.cppreference.com/w/|cppreference.com]] * [[https://openclassrooms.com/forum/sujet/pointeur-double-passe-a-une-fonction#message-92454978|Note sur les pointeurs et références]] * [[ECS]] * [[javaquarium]] * [[design pattern C++14]] * [[Pourquoi le RAII est fondamental en C++]] * [[Ça ne sert à rien de se prendre la tête avec les nouvelles normes du C++ !]] * [[Pourquoi le C++ est un langage plus adapté pour les débutants que le C]] * [[Nouvelles fonctionnalités du C++11]] * [[http://zestedesavoir.com/articles/71/le-c14-est-arrive/|Le C++14]] * [[http://guillaumebelz.github.io/cpp17/|Le C++17]] * [[http://guillaumebelz.github.io/cpp20/|Le C++20]] * [[Le design des bibliothèques en C++11]] ==== Les rvalue reference et la move semantic ==== - [[Rvalue reference et move semantic - Problématiques rencontrées dans le C++03|Problématiques rencontrées dans le C++03]] - [[Rvalue reference et move semantic - Quelques définitions|Quelques définitions]] - [[Rvalue reference et move semantic - Les nouveaux concepts du C++11|Les nouveaux concepts du C++11]] - [[Rvalue reference et move semantic - Les rvalue references|Les rvalue references]] - [[Rvalue reference et move semantic - Analyse de quelques implémentations|Analyse de quelques implémentations]] - [[Rvalue reference et move semantic - Ce que cela change pour la STL|Ce que cela change pour la STL]] ===== Le C++ 14 ===== * [[http://zestedesavoir.com/articles/71/le-c14-est-arrive/|Le C++14]] * [[Les derniers jours du C++11]] * [[Généricité, concepts et C++14]] ===== Le C++ 1z ===== - [[C++1y - Les tableaux]] - [[C++1y – File System]] - [[C++1y - Concepts Lite]] (en cours de rédaction) - [[C++1y - Parallelism & Concurrency]] - [[C++1y - Programming Langage C++]] - [[C++1y - Library Fundamentals]] ===== Généralités ===== * [[Les accesseurs et les détails d'implémentation]] * [[Commencer facilement avec Boost Graph]] * [[Pile, Tas, portée et durée de vie]] * [[communication inter-classes]] (en cours de rédaction) ====== Articles Qt ====== Documentation de référence : [[http://doc-snapshot.qt-project.org/|qt-project.org]] * [[Qt4 a Qt5]] * [[install Qt]] * [[https://zestedesavoir.com/contenus/56/les-signaux-et-slots-dans-qt-5-4/|Les signaux et slots dans Qt5]] (article transféré sur Zeste de Savoir) * [[Déployer une application Qt]] * [[Les modules de Qt 5]] * [[Introduction au module QtTest]] * [[QtScript - utilisation des prototypes]] ===== Exemple de code Qt : création d'un colorpicker ===== - [[Un ColorPicker avec Qt – Enoncé de l’exercice|Enoncé de l’exercice]] - [[Un ColorPicker avec Qt – Version Qt|Version Qt]] - [[Un ColorPicker avec Qt – Version QML|Version QML]] - [[Un ColorPicker avec Qt – Benchmark et optimisations|Benchmark et optimisations]] ===== Qt Android ===== * [[Développez en natif pour Android avec Qt]] * [[Qt Quick Controls sur Android]] * [[Qt sur OUYA]] ===== Utiliser une manette de jeux avec Qt ===== - [[Qt Gamepad – Implémentation Windows (première partie)|Implémentation Windows (première partie)]] - [[Qt Gamepad – Implémentation Windows (deuxième partie)|Implémentation Windows (deuxième partie)]] - [[Qt Gamepad – Implémentation Windows (troisième partie)|Implémentation Windows (troisième partie)]] - [[Qt Gamepad – Utilisation du gamepad en QML|Utilisation du gamepad en QML]] ===== Qt Quick et QML ===== * [[Qt Quick Controls dans Qt 5.1]] ====== Articles OpenGL ====== ===== Techniques divers ===== * [[Illumination globale et partitionnement de l’espace]] * [[Déboguer avec OpenGL 4]] * [[Introduction aux geometry shaders]] * [[La technique d'instanciation]] * [[Les queries objects]] ===== Utiliser OpenGL avec Qt 5.4 ===== - [[Qt OpenGL - Introduction]] - [[OpenGL dans Qt5]] - [[Qt OpenGL - Générer un terrain]] - [[Qt OpenGL - Envoyer des données au processeur graphique]] - [[Qt OpenGL - Utilisation du pipeline programmable]] - [[Qt OpenGL - Ajouter des lumières et des textures]] - [[Qt OpenGL - Réaliser un rendu offscreen]] - [[Qt OpenGL - Overpainting]] - [[Qt OpenGL - Gestion des extensions]] - [[Qt OpenGL - Annexes]] ====== Tutoriels vidéo ====== * [[https://www.youtube.com/watch?v=m6dyyBSanlA|Introduction à Qt]] * [[https://www.youtube.com/watch?v=7AlH4bPbBsE|Installation et premier pas avec Qt 5.2 sur Windows]] * [[https://www.youtube.com/watch?v=qKWtfDNfbzA|Savoir utiliser la documentation de Qt 5.2]] ===== Le C++ User Group France ===== * [[https://www.youtube.com/watch?v=e4Ajlq_hGA0|Rencontre C++ Francophone - Introduction]] * [[https://www.youtube.com/watch?v=2R6zsH-XPk0|Du Polymorphisme dynamique au polymorphisme statique : abstraction sans perte de performances]] * [[https://www.youtube.com/watch?v=r7P6O5TtTEQ|Ajouter une autre dimension à la qualité des logiciels]] ===== Les éditions D-BookeR ===== * [[https://www.youtube.com/watch?v=rYU4ONnyChc|Installation de Qt 5.0 sur Ubuntu via le dépôt Synaptic]] * [[https://www.youtube.com/watch?v=0a6DabaPtKk|Installation de Qt 5.0 sur Ubuntu]] * [[https://www.youtube.com/watch?v=6X3VtWNHADo|Installation de Qt 5.0 sur Windows avec Visual Studio]] * [[https://www.youtube.com/watch?v=SrUJHs4zuKM|Installation Qt 5.0 sur Windows avec MinGW]] ====== Notes ====== * [[notes_pythons]] * [[notes_django]] * [[notes_nodejs]] ====== Ressources ====== Les ressources ont été transférées : http://guillaumebelz.github.io/articles/ressources ====== C++ Users Groups ====== * Paris : http://www.meetup.com/fr-FR/User-Group-Cpp-Francophone/ * Montpellier : http://www.meetup.com/fr-FR/Montpellier-CPP/ * Nantes : http://www.meetup.com/fr-FR/Nantes-C-Meetup/ * Meeting C++ YT Kanalseite : https://www.youtube.com/channel/UCJpMLydEYA08vusDkq3FmjQ ====== Mes autres sites ====== * [[http://guillaumebelz.wordpress.com/|Blog]] * [[https://www.youtube.com/user/GuillaumeBelz|YouTube]] * [[https://plus.google.com/u/0/103405009836652683671/posts|Google+]] * [[https://github.com/GuillaumeBelz|GitHub]] * [[http://www.d-booker.fr/|Les éditions D-BookeR]] * [[http://stackoverflow.com/users/2801661/guillaume-belz|StackOverflow]]