envie d'apprendre le c++

debutant

a marqué ce sujet comme résolu.

Probablement pour la même raison que beaucoup de monde qui veulent commencer le C++ : pouvoir utiliser Qt, le meilleur framework du monde, tous langages confondus.

En toute objectivité.

<Ce message a été posté par le comité "a la vie, a la mort, pour la gloire de Qt !">

j’en fait trop peut etre avec Qt, non ?

+4 -1

Je dirais que le meilleur conseil, comme tu as fait du C, c’est de comprendre que le C++ n’est pas du C. Malgré sa compatibilité (pas parfaite mais presque) avec le C, malgré leurs ressemblances intrinsèques aussi. Le C++ ce n’est pas juste C + classe.

Typiquement en C++ tu vas bien entendu manipuler de la POO (ce qui est possible en C mais pas trivial), mais tu vas aussi minimiser l’usage des pointeurs, tu vas exploiter des classes de base pour certaines tâches au lieu des type de base (par exemple les vecteurs au lieu des tableaux, des string au lieu des chaînes de caractères du C).

Globalement les aspect très bas niveau du C ne sont à réserver que quand tu n’as pas le choix, par exemple si tu dois dialoguer avec l’API POSIX ou une autre bibliothèque C.

Une des particularités du CPP, c’est que tu as trois écoles :

  • La bibliothèque standard, disponible partout et nativement, mais pas très riche ;
  • La bibliothèque Qt, orientée applications graphiques (mais pas que), un peu moins moderne mais très puissant et multiplateforme ;
  • La bibliothèque Boost, sert de tests à l’amélioration du CPP pour certains cas, ajoute pas mal de fonctions utiles à la bibliothèque standard.

Suivant ton besoin, tu vas plutôt privilégier une ou autre de ces bibliothèques. Les applications évitent de les mélanger car elles sont assez redondantes, donc ce serait assez lourd, et ce serait assez moche avec des conversions de type ou de conventions de style à tous les étages.

Si tu es purement débutant, choisi la bibliothèque standard pour débuter. Tu verras les autres par toi même ensuite. Mais n’oublie pas leur existence.

+3 -0

Salut,

Juste pour détailler un peu plus ce que je pensais. En gros, je vois plusieurs raisons qui poussent à apprendre :

  1. Tu veux apprendre pour apprendre. Je pense qu’on est plein à avoir fait ca, et je suis carrément pour. Et pour faire cours, ne te plonge pas dans un tuto de C++ pour ca. Fais toujours plus de projets rapides et différents, du web, réimpémenter une stack TCP, de l’électronique, un bootloader, lis des livres, fais des vieux langages, des récents, du bas niveau comme du haut niveau, fais de l’admin sys, des CTF, découvre plusieurs paradigmes (fonctionnel, POO, ..), etc. Bref amuse toi et découvre.
  2. Tu as un cours de C++ dans une univ. AHAHA, tu es puni et on te dicte ce que tu dois faire. Baisse les yeux, lis les articles de Herb Sutter, le tuto de gbdivers (et fais lui des bisous) et fais tes TPs.
  3. Tu as un projet en tête, DO IT, mais avant pose toi 50 fois la question d’avec quels outils tu veux le faire et si c’est adapté. Les outils autour de cpp c’est de la bonne grosse crap (Make, Cmake, Autotools, QMake)
  4. Tu veux participer à un projet en Cpp pour l’améliorer. Fais le tuto de gbdivers et DO IT. Bois le code des autres participants, demande de l’aide, lis la doc, améliore le projet, comprends leurs outils autour, utilise git et autres.

Puis, pour revenir sur le commentaire de Renault, j’avoue que je suis pas d’accord avec les trois écoles. Dans le sens où je pense que cette affirmation était vraie il y a quelques années, mais ce n,est plus le cas aujourd’hui. Si veux apprendre à faire du Cpp, apprend la std avec. Ca va de pair et tu n’as pas vraiment le choix. Si tu fais du cpp, utilises les outils standards au maximum. La bib a bien été développée depuis des années et y a plein de structures de données cools, la partie de gestion de mémoire avec les smarts pointers, les outils relatifs aux temps avec <chrono>, des headers comme <algorithm>, <functionnal>, des outils relatifs a la concurrence et encore d’autres trucs qui s’en viennent. Bref, Cpp sans std, c’est rater une grosse partie. Aujourd’hui, le tooling fais la force d’un langage (cf js, Python, ou les outils autour de Rust et go).

Aujourd’hui pour moi, on peu se passer de Boost, sauf si on veut écrire des papiers sur le cpp et tester des choses sur le langage, mais pour un projet… Par contre, Qt peut vraiment simplifier la vie (ou le contraire parfois), mais tu auras sans doute à le croiser.

Bref, y a des choses plus drole dans pas mal de cas et avec un meilleur tooling que le cpp (quoique gdbest uber cool). Mon conseil, c’est donne toi un objectif et choisis en fonction de cet objectif plutot que de choisir une technologie pour ne pas en profiter.

+0 -0

Ca va de pair et tu n’as pas vraiment le choix.

Honnêtement en professionnel, j’ai eu du STL, du Qt et du Boost. Sans mélange. Donc dire que le STL est incontournable, non. Cela dépend des projets.

Aujourd’hui pour moi, on peu se passer de Boost, sauf si on veut écrire des papiers sur le cpp et tester des choses sur le langage, mais pour un projet…

Tu n’as pas du utiliser Boost en profondeur. Il y a beaucoup de choses en plus que la STL ne propose pas.

Typiquement, je suis actuellement sur un projet embarqué en C++ STL. Si je veux supprimer un répertoire en récursif, je dois me débrouiller avec des appels C POSIX et le faire assez manuellement. Boost propose des fonctions déjà opérationnelles pour cela.

Boost a quand même une vraie plu valu, en plus de servir de laboratoire pour les normes CPP en devenir. La STL a beaucoup évolué depuis 10 ans, mais cela reste des trois options de base en C++ la moins complète.

Mais la STL est utile, nul doute là dessus et je pense que de débuter par la STL est une bonne chose. Mais il ne faut pas oublier l’existence des autres, suivant le projet en question ce sera important.

+1 -0

Ca va de pair et tu n’as pas vraiment le choix.

Honnêtement en professionnel, j’ai eu du STL, du Qt et du Boost. Sans mélange. Donc dire que le STL est incontournable, non. Cela dépend des projets.

J’ai aussi à utiliser les trois pour mon taf. Mais depuis quelques temps on a la possibilité de supprimer une grosse partie du code dépendant de boost pour le remplacer par du standard. Mais oui ca dépendra bien sûr toujours du projet. Je tenais juste à dire que je pense que je ne suis plus d’accord avec cette phrase aujourd’hui (même si je conviens des plus-values de boost, je la considere plus comme une bibliothèque qu’un incontournable).

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte