Où, comment et sur quel OS apprendre le C++ ?

Où, comment et sur quel OS apprendre le C++ ? - C++ - Programmation

Marsh Posté le 22-03-2016 à 17:48:41    

Bonjour, bonjour =)
 
Voilà, ça fais un petit temps que je voudrais apprendre le C++, et j'ai quelques petites questions.
 
     • J'ai fais des recherche sur Internet/YouTube/Hardware.fr et les seules tutoriels que j'ai trouvé pour débuter le C++ sont soit vieux ( avant 2006,2005.. ) soit de mauvaise qualités ( pour les vidéos ) où alors il n'y a que 2,3 épisodes puis plus rien... A vrai dire le seul tutoriel complet que j'ai trouvé est celui de OpenClassRooms, mais il est à l'écrit :/ . J'aimerais donc savoir par où commencer, si oui ou non je dois utiliser un IDE, si oui lequel ? CodeBlocks, Microsoft Visual Studio/basic ?  
 
     • Ensuite, quel OS utiliser ? Je vois pas mal de gens qui ne jure que par Linux, du coup je me pose là question, peut-on codé correctement sous W10 ? Quels sont les avantages à codé sous Linux ? Qu'est ce que ça change ?
 
Voilà.. Merci d'avance.
Désoler pour les fautes d’orthographe  :p


Message édité par MRP41FF3R le 22-03-2016 à 17:54:13

---------------
J'aime pas quand ça fonctionne pas.
Reply

Marsh Posté le 22-03-2016 à 17:48:41   

Reply

Marsh Posté le 22-03-2016 à 19:14:11    

Pourquoi tout le monde pense qu'on peut apprendre un language avec un tutoriel sur internet?? D'autant plus que le C++ est vraiment un language riche et complexe. Il faut un livre pour apprendre, ce sujet est un bon début je pense: http://forum.hardware.fr/hfr/Progr [...] 3836_1.htm  
 
Pour l'OS je dirais que tant que tu te limites au C++ pur sans accéder aux fonctions de l'OS cela ne devrait pas faire beaucoup de différence, surtout avec un IDE qui gère la compilation pour toi. Quant à quel IDE je pense que c'est une question de goût, pour un débutant il est par contre certainement judicieux de choisir l'IDE qui est abordé dans son livre (si tel est le cas). Attention, pour ce qui est du C le GCC possède certaines extensions qui ne sont pas dans la norme, je ne sais pas pour le C++ mais je suppose que c'est un peu la même chose. Cela devient embêtant quand il faut utiliser un autre compilateur (p.ex. de Microsoft).

Reply

Marsh Posté le 22-03-2016 à 20:08:42    

C'est peut-être mettre la charrue avant les boeufs, mais pour avoir bosser sur les deux plateformes (windows et linux), c'est bien de connaître quelles sont les contraintes techniques en matière de distribution d'un programme C/C++. C'est ce qui m'a ultimement fait choisir ma plateforme de développement. Maintenant si tu ne cherches pas à distribuer tes oeuvres, la plateforme devient bien moins importante.
 
● Windows + visual studio (enfin surtout la partie C/C++, la partie .NET est moins prise de tête)
 
Ma principale raison de ne pas aimer cette combinaison, c'est le délire que s'est fourré microsoft avec les runtime C/C++. Bordel de merde, si j'avais voulu faire chier le monde, j'aurais eu du mal à trouver une solution plus merdique que ce qu'ils font actuellement.
 
Problème: si tu compiles en C ou C++, va falloir inclure les runtimes C/C++ de visual studio (normal tu me diras). Sauf que ce ne sont pas de simple DLL, que tu peux copier dans un dossier. Elles doivent être installées dans WinSxS (Windows side by side). Dans la mesure où tu débutes, je te laisserai découvrir par toi même l'immondité qu'est cette usine à gaz.
 
Autre solution: tu utilises les vcredist.exe. 12Mo pour visual studio 2013 (compressé), alors que le runtime C et C++ doivent faire 1Mo (non compressé) à tout casser. D'où vient le reste ? MFC, version debug, version 32bit, version 64bit, ...  
 
Autre solution: passer par des manifests privés, ce qui revient à peu de chose près à compiler le runtime en statique. Plusieurs logiciels grand pulic utilisent cette technique: firefox (et tous les dérivés...), Libre/OpenOffice, ...
 
Bordel de merde, il aurait pu l'inclure directement dans windows, ou rajouter des moyens (simple) pour n'importe quelle application de les installer d'office.
 
Avantage (ouais, il y en a quand même) : le SDK de windows est complet, le compilateur est performant (dans le sens où les exétables produits sont très optimisés), l'IDE est bien foutu.
 
● Windows + Code::Blocks + MinGW
 
Ma combinaison favorite. La raison étant que le merdier du runtime C/C++ n'existe pas avec MinGW. Mieux: si tu te contente du C, il n'y a strictement aucune dépendance à déployer (la partie C réutilisera le runtime C de windows, chose extrêment difficile à faire avec Visual studio, ironiquement). Si tu utilises le C++, faudra déployer le runtime C++ de gcc. MinGW ne pourra pas réutiliser le runtime C++ de visual studio, parce l'ABI du C++ étant ce qu'elle est (inexistante).
 
Cela dit, le SDK de MinGW est relativement incomplet. Quand on s'y connait, il est facile de combler les lacunes, mais faut pas avoir froid aux yeux. Ça reste pas mal complet tout de même, et au pire tu pourras toujours trouver des DLL précompilées avec une ABI C, qui t'éviteront de farcir les APIs les plus moisies de microsoft.
 
En terme de fonctionnalité, C::B tient la route, mais ce n'est pas comparable à du visual studio. Personnellement, j'arrive à me démerder avec des makefiles et un éditeur de texte tout bête, donc ça ne me manque pas spécialement...
 
Aussi la compatibilité ascendante est excellente: j'ai encore des programmes compilés sous Windows XP, qui fonctionne parfaitement sous Windows 10.
 
● Linux
 
J'en ai pas gardé un bon souvenir du temps où je developpais là dessus (il y a plus de 10 ans, il faut dire). Distribuer un programme sur un maximum de distributions n'est pas trivial. Faut dire que les APIs changeaient toutes les 15 nanosecondes à l'époque, je ne sais pas si ça c'est amélioré depuis, mais personnellement, j'en ai eu ras le cul.
 
● Portable
 
Si tu cherches un truc réellement portable (utilisable sur des systèmes complètement différents), je te conseillerais plutôt de regarder Java. Malgré tous ses défauts, la portabilité de Java est souvent bien meilleure que le C/C++ (enfin surtout pour des applications qui utilisent autre chose que la console pour les entrées/sorties). C'est tout à fait possible d'avoir des applications extrêmement portables en C/C++, mais tu vas en chier, parce que tu vas devoir faire des abstractions de tous les cotés, donc des APIs à se farcir, des dépendances à déployer, etc ...

Reply

Marsh Posté le 22-03-2016 à 20:27:35    

D'accord merci d'avoir écrit des récits xD ^^


---------------
J'aime pas quand ça fonctionne pas.
Reply

Marsh Posté le 23-03-2016 à 00:56:48    

Merci à tpierron pour ces informations fort intéressantes, comme quoi j'ai "légèrement" sous-estimé la complexité de la chose... :o


Message édité par rat de combat le 23-03-2016 à 01:21:49
Reply

Marsh Posté le 23-03-2016 à 09:20:29    

tpierron ton analyse est tout à fait judicieuse dans l'absolu, mais à mon avis elle est un peu hors de propos : pour un débutant qui part de 0 plutôt que s'inquiéter de la portabilité et de la facilité de distribution des runtimes (bien d'accord à propos du C++ à la sauve Microsoft au passage, même si leurs choix s'expliquent très bien) il faut s'attacher à trouver un IDE qui soit ergonomique et efficace.
 
Mais je commencerai également par demander à MrP41ff3r dans quel but il veut apprendre le C++, pour réaliser quel type d'applis, et quel niveau initial il a...
C'est clair que si on part de 0 un bouquin sera mieux qu'un tuto web pour un tel langage...


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 23-03-2016 à 11:46:44    

Niveau IDE, Je n'ai rien trouvé de mieux que Visual Studio 2015 avec un plugin comme Visual Assist X ou Resharper C++. Par contre ils sont payants et pas spécialement donnés.

 

Sinon je sais qu'il est possible de développer en C++ avec Eclipse mais je n'aime vraiment pas cet IDE, cela dit c'est peut être plus complet que Code::Blocks. Mais vu que tu es débutant tu n'as peut être pas besoin d'une usine à gaz non plus :D


Message édité par WiiDS le 23-03-2016 à 11:48:57

---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 23-03-2016 à 11:50:28    

D'accord pour VS.
Il y a la version Community, et pour Visual Assist X et R# (qui n'ont rien d'indispensable même si pour un pro c'est extrêmement utile) il y a les versions d'essai. Donc les coûts ne sont pas un souci.


Message édité par TotalRecall le 23-03-2016 à 11:50:39

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 23-03-2016 à 13:33:14    

Merci de vos réponse qui me sont très utile :)
 


---------------
J'aime pas quand ça fonctionne pas.
Reply

Marsh Posté le 23-03-2016 à 16:17:31    

Remarque le compilateur Embarcadero® C++Builder est très intéressant surtout avec sa librairie du vcl. Cela te permets de ne pas utiliser le .net ce qui est un avantage dans pas mal de cas.
 
Malheureusement, on ne trouve pas de version gratuite, même la version de base est payante.
 
 

Reply

Marsh Posté le 23-03-2016 à 16:17:31   

Reply

Marsh Posté le 23-03-2016 à 17:45:13    

aussi pour Visual Studio 2015, Microsoft a un petit groupe d'outils pratiques appelés Productivity Power Tools, à télécharger directement depuis le manager d'extensions de Visual Studio, je recommande : avoir la scrollbar qui te montre une vue superficielle de ton code avec tes recherches, tes breakpoints ... c'est très pratique.


---------------
last.fm
Reply

Marsh Posté le 23-03-2016 à 17:47:07    

tpierron a écrit :

Problème: si tu compiles en C ou C++, va falloir inclure les runtimes C/C++ de visual studio (normal tu me diras). Sauf que ce ne sont pas de simple DLL, que tu peux copier dans un dossier. Elles doivent être installées dans WinSxS (Windows side by side). Dans la mesure où tu débutes, je te laisserai découvrir par toi même l'immondité qu'est cette usine à gaz.


 
J'ai pas vérifié, mais ca m'étonnerait qu'ils ne fournissent plus de version liée statiquement des runtimes. Tu es sur que c'est nécessaire d'avoir recours aux DLL ?


---------------
last.fm
Reply

Marsh Posté le 24-03-2016 à 15:48:43    

theshockwave a écrit :


 
J'ai pas vérifié, mais ca m'étonnerait qu'ils ne fournissent plus de version liée statiquement des runtimes. Tu es sur que c'est nécessaire d'avoir recours aux DLL ?


Si effectivement, c'est toujours possible de compiler en statique. Passer par des manifests privés est un peu mieux cela dit: tu peux dire dans le manifest d'utiliser la version locale s'il n'y a rien d'installé, ou d'utiliser une version plus récente dans WinSxS si c'est dispo (ie: security fixes).

Reply

Marsh Posté le 30-03-2016 à 11:40:17    

Achète "Le langage C++ de Bjarne Stroustrup", installe Debian et prends ton courage à trois mains.  
Y'a pas de secret, un IDE n'écrira jamais le programme à ta place, et tu n'apprendras bien que par la pratique.  
 
Perso j'ai bossé pendant plus de dix ans avec les daubes Borland et MS sans vraiment progresser jusqu'à ce que mon job m'oblige à utiliser Linux.  
Passé la galère initiale, j'ai rapidement atteint un niveau de maîtrise que je pensais hors de ma portée ... [:greg2]

Reply

Marsh Posté le 30-03-2016 à 15:42:47    

404 Not Found a écrit :

Achète "Le langage C++ de Bjarne Stroustrup", installe Debian et prends ton courage à trois mains.  
Y'a pas de secret, un IDE n'écrira jamais le programme à ta place, et tu n'apprendras bien que par la pratique.  
 
Perso j'ai bossé pendant plus de dix ans avec les daubes Borland et MS sans vraiment progresser jusqu'à ce que mon job m'oblige à utiliser Linux.  
Passé la galère initiale, j'ai rapidement atteint un niveau de maîtrise que je pensais hors de ma portée ... [:greg2]


 
Toi, t'as vraiment envie qu'il se décourage.  [:petrus75]


---------------
last.fm
Reply

Marsh Posté le 30-03-2016 à 16:29:28    

Si je devais apprendre la programmation à quelqu'un, c'est ce que je ferais.
Après les bases du C, direct un petit projet genre un démineur avec la lib SDL.
 
Puis le Stroustrup pour passer au C++.  
J'ai perdu pas mal de temps sans piger le concept/intérêt de la POO avant de le lire.
Je trouve les traductions françaises de ce livre beaucoup moins claires que la version anglaise.

Reply

Marsh Posté le 30-03-2016 à 21:47:15    

theshockwave a écrit :


 
Toi, t'as vraiment envie qu'il se décourage.  [:petrus75]


 
Au contraire =)


---------------
J'aime pas quand ça fonctionne pas.
Reply

Marsh Posté le 30-03-2016 à 22:00:11    

Le livre que vous m'avez conseillez est-il vraiment adapté au débutant ( j'ai aucune notion en C/C++ ). Car dans les avis, une personne dit le contraire :/. Sa serais bête que je paye le livre 40€ et qu'il ne me convient pas ^^
 
http://livre.fnac.com/a891108/Bjar [...] -langage-C


---------------
J'aime pas quand ça fonctionne pas.
Reply

Marsh Posté le 31-03-2016 à 07:28:58    

MRP41FF3R a écrit :

Le livre que vous m'avez conseillez est-il vraiment adapté au débutant ( j'ai aucune notion en C/C++ ). Car dans les avis, une personne dit le contraire :/. Sa serais bête que je paye le livre 40€ et qu'il ne me convient pas ^^
 
http://livre.fnac.com/a891108/Bjar [...] -langage-C


 
Pas certain que ce soit réellement adapté à un débutant n'ayant aucune notion de programmation.

Reply

Marsh Posté le 31-03-2016 à 14:29:07    

MRP41FF3R a écrit :

Le livre que vous m'avez conseillez est-il vraiment adapté au débutant ( j'ai aucune notion en C/C++ ). Car dans les avis, une personne dit le contraire :/. Sa serais bête que je paye le livre 40€ et qu'il ne me convient pas ^^
 
http://livre.fnac.com/a891108/Bjar [...] -langage-C


 
C'est précisément pour ca que je parle du risque que tu te décourages. Ce n'est pas un livre pour débutant.


---------------
last.fm
Reply

Marsh Posté le 01-04-2016 à 17:39:01    

Merci pour ces précieuse information, je vais chercher un livre de programmation en C++ en français et pour les tout débutant, et aussi regarder les différents lien que vous m'avez donné ^^
 
Merci encore :)


---------------
J'aime pas quand ça fonctionne pas.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed