Ressources pour apprendre le C++

Bonjour.
Qu’est-ce qui existe comme bonnes¹ ressources pour apprendre les bases du C++ ?
Dans l’objectif de pouvoir faire du QT ensuite (d’ailleurs si y’a de bonnes ressources pour le QT je prends aussi).

Sachant que j’ai fait un peu de python (y’a même eu quelques-uns de mes scripts qui marchent !) et pas grand-chose d’autre.

En python y’avait un excellent MOOC de Berkeley (« think like a scientist » ou un nom de ce genre) mais malheureusement il n’est plus disponible - c’est ce genre de qualité (ou celle que l’on trouve dans CS50 d’Harvard) que je cherche.

¹ Pas le site du zéro donc

Bonjour @LibreFaso ,
Il est préférable de commencer avec du C avec par exemple l’excellent ouvrage de Kernighan et Ritchie puis de se tourner vers l’ouvrage de Bjarne Stroustrup pour le C++. La notion de pointeur est un élément essentiel que l’on retrouve en C++ et d’une certaine manière en Python avec la notion de référence.

Si vous avez fait fait un peu de Python, je vous invite à étudier les notions relatives à la programmation Objet ( construction de classes, création d’objets, héritage) sachant toutefois que C++ va plus loin et que la syntaxe diffère.

Merci.
Mais bon, « il est préférable de commencer avec du C » est la raison pour laquelle je ne me suis pas mis au C++ depuis plusieurs années…

J’ai réussi à comprendre ce que c’est qu’un pointeur avec le (vraiment excellent, je le répète) MOOC CS50 et j’avoue que j’espérais ne pas avoir à approfondir plus.

Je veux bien étudier les notions relatives à la programmation Objet, je fais ça comment ? C’est un peu la question que je posais…

Je peux comprendre que pour des professionnels de l’informatique qui ont consacré énormément d’énergie et de peine à maîtriser toutes les notions, ce soit un peu frustrant de voir arriver des amateurs qui cherchent à minimiser leurs efforts, mais d’un autre côté quand je vois à quel point des ressources pédagogiques de haute qualité (comme celles mentionnées plus haut) arrivent à rendre simple des sujets que la plupart des manuels montrent comme très compliquées, je me dis que je n’ai pas particulièrement envie de me taper les multiples volumes de Richie et Kernighan vu que je cherche juste à pouvoir faire un programme simple en QT.

Salut @LibreFaso
En terme de qualité, je ne peux que te conseiller EDX mais si tu as suivi le CS50 tu y es peut-être déjà passé :man_shrugging:

Tu peux aussi pratiquer sans mentor en suivant des sites comme codeabbey (site russe plutôt simple), exercicsm (un peu plus difficile, possibilité de se faire tutorer) ou codingame (ça peut voler très haut, possibilité de compétition).

De mon expérience (mais c’était peut-être avec Udacity, qui contenait l’excellent cours de Python que je mentionnais, plutôt qu’edX, je suis pas sûr) la plateforme en elle-même n’est pas une garantie : elle peut contenir d’excellents MOOCs mais ça ne signifie pas du tout que tous les MOOCs qui y sont hébergés sont bons (et encore moins qu’ils sont excellents).

Merci, je vais regarder.
Mais le but c’est de pratiquer le moins possible, juste ce qui est nécessaire pour apprendre vite et bien le langage…

Malheureusement avec la programmation objet, une pratique intensive ou régulière est nécessaire. Il n’y a pas de secret. L’excellent livre « Apprendre la programmation en Python » de Swirnen vous permettra d’apprendre facilement des notions relatives à la POO. Quand aux excellents ouvrages de Richie et Kernighan pour le C, n’importe quelle édition fera l’affaire. Ils ne faut pas les confondre avec ceux de Bjarne Stroustrup sur le C++ qui au moins dans sa première édition a été rédigée sur un style universitaire de l’époque, c’est à dire assez élitiste.

Mon but est d’en savoir assez pour faire du QML pour faire des programmes simples, donc franchement je n’ai pas l’intention de lire deux livres même de grande qualité…

Je comprends bien que ça soit utile de maîtriser les fondamentaux, juste ce n’est pas la démarche qui me semble adaptée à mon cas.

Par ailleurs je me débrouille pour l’instant avec un tutoriel pas terrible (mais comme disait Audiard, un con qui marche va plus loin que deux intellectuels assis) : https://www.learn-cpp.org

Par contre quand j’ai cherché la même chose pour au moins commencer avec le QML je trouve ça qui n’explique même pas quel éditeur je dois utiliser…
(un truc qui soit dans les paquets debian)

Il en suffit d’un et sans effort minimal point de salut, à moins de faire appel à l’IA ! Les tutos sont un point de départ pour découvrir mais on en reste vite sur sa faim ou au devant de gros blocages un jour ou l’autre. En tout cas pour le C et le C++ ! Ce qu’a oublié Audiard c’est qu’un imbécile qui marche va droit dans le mur :rofl:

De base n’importe quel éditeur de texte suffira. Sinon pour les highlights, il existe un module pour VIM sur Github: GitHub - peterhoeg/vim-qml: QML syntax highlighting for VIM

il y a aussi QT Quick Designer et il y a une version Linux, ou les sources sur Index of /official_releases/qtcreator/latest

il faut aussi prendre en compte Qt Designer pour les widgets par exemple, et Qt Creator.

Après pour les tutoriels, le problème est que le tutoriel est limité çà a la vision de celui qui l’a écrit y compris avec ses biais cognitifs. C’est bien pour découvrir vite fait, mais c’est vite bloquant quand on a que ça. Et à terme, ça ne donne pas de bons résultats en qualité de code.

Merci, mais j’avoue que j’ai pas compris…
Y’a pas d’IDE libre pour le QML ?

Pour le reste, il existe d’excellentes ressources en ligne plus interactives qu’un livre, c’est ça que je cherche.

C’est de plsu en plus finit pour les IDE spécifiques à un langage, sauf chez Microsoft peut etre.
Maintenant ce sont plutot des modules pour des éditeurs ou des outils comme Eclipse.

Ah OK.
Mais comment je vois le résultat alors ?

Parce qu’il me semble bien que j’ai vu des trucs où on peut lancer le code et voir le résultat…
Sur du QT je crois.

D’ailleurs j’ai pas bien compris la différence entre QT et QML ?

QT c’est le nom du projet, ou celui du framework.

  • QtWidgets - composants standard pour créer des fenêtres, des boîtes de dialogue etc. Utile surtout sur les bureaux, mais fonctionne aussi sur les plateformes mobiles
  • QtQuick (QML) - composants déclaratifs, utilisant un nouveau langage (QML et JavaScript). Idéal sur les plateformes mobiles, les appareils embarqués, etc. mais fonctionne aussi sur les ordinateurs de bureau
  • Qt3D - eh bien, comme son nom l’indique, une boîte à outils 3D dans Qt
    *QGraphicsView - fait partie des widgets Qt, permet de construire des scènes 2D, peindre des formes etc.
  • QPainter - le mécanisme de base de peinture de QtWidgets
  • QtSceneGraph - mécanisme de peinture de base de QtQuick
  • QtCharts - un module utile pour créer des graphiques
1 J'aime

Tu peux utiliser Qt avec python. Il existe plusieurs binding Qt pour python, notamment PySide ou PyQt. Les licences concernées sont différentes, à voir selon ton projet.
Pour ma part, j’ai opté pour le framework Kivy qui est libre et fonctionne sur toutes les plateformes. Sa courbe d’apprentissage est moins raide que Qt . De plus, l’écriture est très « pythonesque ». Il dispose aussi d’un langage déclaratif équivalent à QML …

J’avais commencé à faire un peu de PyQT il y a vraiment longtemps, mais là j’ai besoin de QML avec Javascript (choix imposé).

Bonjour,
Je ne connais pas QML mais il m’a été aisé de vous trouver un plan formation digne de ce nom et de vous le commenter rapidement.

https://www.phytec.fr/services/formations-qt/qt-5-c-/qml/

A vous de vous faire votre propre opinion mais sachez que les formations en entreprise sur cinq jours sont dédiées aux sujets les plus complexes. Le sujet est particulièrement difficile du fait que le C++ et sa programmation orientée objet sont des prérequis indispensables. Dans le cas d’un besoin professionnel, vous pouvez les contacter pour une formation sur mesure à définir avec eux .

En ce qui concerne C++ et si l’anglais ne vous effraie pas, je vous invite à consulter la trame de cours précisant les durées nécessaires à son apprentissage:

Dans tous les cas, cela implique une forte motivation et beaucoup de temps, notamment en pratique. Si la lecture d’un ouvrage vous rebute alors la formation (en présentiel ou à distance) semble inévitable. Les formations par MOOC en Informatique (Coursera, EDX, Fun…) sont pertinentes mais s’adressent davantage à des autodidactes ou à des personnes disposant de bonnes bases. Une autre manière consisterait à rejoindre une association de développeurs ou éventuellement un fablab dans votre région pour échanger sur le sujet et faire avancer votre projet comme il se doit.

1 J'aime

QML est disponible aussi avec python…

Dans ce cas C++, serait à remplacer par de la POO Python. A confirmer suivant l’environnement de développement du projet.