Le langage de programation C++ : apprendre le C++ en ligne
C++ est-il très difficile à apprendre ou à utiliser, et qu’est-ce qui le rend exactement plus difficile que Python ou Java ?
Par le Blogueur Le coursGrauit
cours gratuit C++ /Tutoriel grauit C++ / cours et tutoriels gratuits C++./formation C++ en ligne
Avis d’un mordu de programmation sur le langage C++
Je ne donnerai pas un aperçu complet, mais à titre d’exemple simple, voici comment allouer un objet et appeler une fonction dans les trois langages.
Les deux méthodes C++ font des choses différentes. La première méthode crée un objet sur le tas. La deuxième façon le crée sur la pile. Vous pouvez le faire de différentes manières pour différentes raisons.
Se rappeler quand utiliser -> et quand utiliser . peut être pénible, du moins au début pour les novices. Et le compilateur détecte la plupart des erreurs et vous demande de les corriger avec une belle erreur de compilation. Mais basculer entre eux peut être pénible.
En Java et Python (et C#), vous utilisez toujours l’opérateur point. L’objet est toujours créé sur le tas, pour autant que vous (le programmeur) le sachiez.
Mais ça va mieux. En C++, si vous avez créé l’objet sur le tas, vous devez vous rappeler de le nettoyer. Contrairement à Python et Java (et C #), il n’y a pas de machine virtuelle pour “sortir la corbeille” (libérer de la mémoire inutilisée), donc si vous créez des objets et ne vous souvenez pas de les libérer lorsque vous en avez terminé, vous obtenez une belle fuite de mémoire.
——————— apprendre le C++ gratuitement en ligne——–
Et Dieu nous en préserve si vous essayez d’utiliser un objet après l’avoir libéré ! Cela s’appelle déréférencer un pointeur nul, et c’est une très mauvaise chose. C’est l’équivalent de l’exception de pointeur nul de Java et C#. Ou si le pointeur n’est pas nul, mais qu’il pointe vers l’endroit où se trouvait l’objet, eh bien, vous piétinez la mémoire. C’est généralement une mauvaise chose.
Cependant, dans les dernières versions de C++, presque tout le monde utilise des pointeurs intelligents. Les pointeurs intelligents “nettoyent” après eux-mêmes, libérant toute la mémoire qui leur est associée lorsqu’ils ne sont plus nécessaires ou sortent de la portée. Mais ils ne sont pas aussi faciles à utiliser (est-ce un shared_ptr ou un unique_ptr ?) que les références Java et C# (désolé, je ne suis pas un expert Python, mais il gère également votre mémoire pour vous).
Il y a d’autres choses qui font de C++ une bête coriace, comme le manque d’interfaces, la surcharge d’opérateurs (qui était censée être une bonne chose, mais qui ne l’est souvent pas) et juste une syntaxe insensée qui a surgi dans les dernières versions.
C++ n’est pas mauvais. Et c’est presque nécessaire pour la plupart des jeux vidéo. Mais ce n’est pas aussi élégant ou facile à utiliser que C #, Java ou Python (dans cet ordre).
Qu’adviendra-t-il du C/C++ dans les 10 prochaines années ?
Alors que le domaine de la robotique et sa base de fabrication explosent, C++ jouera un rôle central du côté de l’intelligence, tandis que C maintiendra sa suprématie en tant que langage de programmation matériel. Le Robot Brain sera un système complexe de
C++ et les langages de niveau supérieur appelant les pilotes C et C++, et le matériel répondra aux appels système compilés en C.
Alors que les pourcentages sont maintenant d’environ 90% C à 10% C++ pour les pilotes de périphériques, C++ y gagnera du terrain, mais pas plus de 25% ou 30% je ne pense pas. C est trop bien adapté à ce domaine, et l’expertise dans ce domaine est en C, parce que l’ABI/API POSIX dominante est tellement enracinée et a eu tellement de succès, affiné les moyens les meilleurs et les plus robustes pour manipuler le matériel sur de nombreux de nombreuses années.
Les problèmes de sécurité rendront C++ plus attrayant que C pour les systèmes complexes, peut-être, s’il n’est pas simplement un libre pour tous comme il l’a été historiquement en 10 ans.
Beaucoup de code vraiment mauvais est écrit à cause de la pression pour sortir les choses aussi vite que possible.
Les analyseurs de code et les bibliothèques robustes s’amélioreront probablement beaucoup.
C++17 et C++20 et C 2.0 seront adoptés pour la plupart des applications, avec quelques réticences dans l’industrie embarquée.
Les exceptions semblent déjà démodées dans les cercles C++, car elles façonnent le code de manière plus difficile à refactoriser et reposent sur une gestion externe des problèmes en dehors de la classe qui les cause, ou quelque chose du genre. Je les aime bien, mais je trouve qu’ils sont moins utiles en pratique qu’en théorie. Je m’attends à ce que cette tendance se poursuive.
———– cours gratuit et tutoriels C++ en ligne—————–
Le gros problème semble être le manque de programmes C et C++ dans les cours d’informatique. Le manque d’éducation formelle en classe dans le langage fondamental utilisé pour construire des trucs informatiques signifie que la plupart des programmeurs C le récupèrent d’eux-mêmes après avoir appris d’autres langages comme VB ou Java ou Javascript ou Python ou PHP.
Je vois cela comme une approche à rebours : presque aucune autre matière “technique”, comme les mathématiques, la chimie, l’architecture ou la médecine, n’est traitée de cette manière. Ils sont appris à la dure, de la vraie manière, ou l’élève n’est tout simplement pas doué pour eux. Tout le monde le sait ; pourtant, il est perdu dans de nombreux programmes universitaires d’informatique qui luttent sous le poids du sujet, alors ne voulez pas passer une année supplémentaire de temps d’étudiant à s’assurer que l’enfant peut coder n’importe quoi à tous les niveaux dans les langages les plus utilisées sur la planète pour les systèmes.
C et C ++ ont un problème de battage médiatique – en ce sens qu’ils ont très peu par rapport à tous les «nouveaux» trucs Webby. Mais quelque chose comme l’industrie automobile, les moteurs ne cessent de s’améliorer, mais d’une manière ou d’une autre, les annonceurs n’en parlent plus comme avant.
L’industrie du jeu vidéo est All In for C++. Cela ne changera pas, mais C reviendra en grand pour les pilotes accélérés de code basés sur CUDA. Est déjà.
Attendez-vous à plus de cela. Parler de passer à GO ou Haskell pour les jeux n’est que parler, pour la plupart. C++ est la voie et la vie des jeux.