Apprendre le C++ comme programmeur Perl [fermé]
je suis programmeur Perl5 depuis 7 ans et j'essaie d'apprendre le c++ maintenant. Certains de la syntaxe C++ est dur pour moi de comprendre et de penser en C++.
Par exemple: En Perl, vous pouvez mélanger les données dans les tableaux
@array = (1,"string",5.355);
vous pouvez assigner n'importe quelle valeur à une variable scalaire:
$var = 1;
$var = "string";
$var = $reference_to_scalar;
Il existe de nombreux exemples.
un ami à moi me recommande le livre "Thinking of C++" de Bruce Eckel, mais je n'ai pas de C background et c'est dur pour moi pour comprendre certaines choses.
Donc ma question est - pourriez-vous me recommander un livre de cette situation. Je ne veux pas apprendre C. je comprends OOP (je me familiarise avec C++ OOP aswell), je comprends le point des pointeurs (et quelques arithmétiques) et des références (largement utilisé en Perl).
Je n'ai pas besoin de manuels pour les nuls (qu'est-ce que int
, bool
,double
,if
,while
), j'ai juste besoin d'une direction comment apprendre le C++ à partir du point de vue d'un programmeur Perl, parce que je suis sûr qu'il y en a beaucoup comme moi.
je vous Remercie à l'avance.
EDIT: Merci pour tous les livres recommandés et les réponses, je vais essayer avec "Accelerated C++". Je vais commencer par le début et essayer de changer mon mindflow de C++. J'ai ajouté l'étiquette "débutant".
10 réponses
"C++ Pour les Programmeurs Perl" est une jolie demande spécifique. Étant donné que Perl résumés de plus de la machine que C++, je pense qu'une bonne façon de commencer serait oublier ce que vous savez sur Perl et obtenir une C++ livre.
par exemple, il vous semble raisonnable que vous soyez autorisé à avoir plusieurs types de données dans un tableau, parce qu'un tableau Perl est une construction de plus haut niveau qu'une simple série de mots contigus en mémoire. Si je devais aller à partir d'un tableau en C++ contre un en Perl, je dirais qu'un tableau Perl est comme un tableau c++ qui contient des pointeurs vers des données au lieu de données (si c'est vrai - Je ne suis pas un programmeur Perl, donc ça ne l'est peut-être pas. Peut-être Qu'un tableau Perl est plus comme une structure de données de liste liée. Dans tous les cas, vous obtenez l'idée.) Aller en arrière, IMO, ce n'est pas tout à fait la même chose.
en ce qui concerne le livre que je recommande - il y en a beaucoup de bons, donc cela dépend du style et de la profondeur que vous recherchez. Je pense Accélération C++ est idéal pour la rampe de - son complet et couvre beaucoup de terrain sans vous inonde avec les détails fastidieux.
ne vous donnez pas la peine d'apprendre le C, sauf si vous voulez connaître le C. programmer en C++ n'est pas du tout comme programmer en C. Je sais que la plupart des livres et des enseignants prétendent le contraire, mais ils ont tort. Vous devriez être à la recherche des exceptions, comme celle mentionnée précédemment, "Accelerated c++."
vous ne trouverez aucun livre qui vous aidera à écrire du code comme celui que vous venez de montrer. Perl est un langage très faiblement typé et C++ est exactement le contraire: un langage fortement typé. Il ya, cependant, des façons d'obtenir sorte de ce que vous montrez dans votre post dans diverses constructions boost tels que la variante et tuple.
je suggérerais bien d'apprendre le C++ comme un langage totalement indépendant avant d'entrer dans ce genre de chose. Ne pas apprendre le C++ en tant que programmeur Perl, apprendre en tant que newb complet. Vous pouvez vous ennuyer avec les premiers chapitres, mais à la fin vous aurez une meilleure compréhension du style et des pouvoirs uniques à C++ par rapport à ceux uniques à Perl. Je n'ai pas vu de "Xlanguage for Ylanguage" livre qui vous y mènera.
j'ai essayé d'apprendre le C++ à partir du livre "Thinking in C++". J'ai trouvé ça très, très difficile à apprendre.
un bien meilleur livre pour quelqu'un qui commence en c++ est "Accelerated C++: Practical Programming by Example" par Andrew Koenig et Barbara E. Moo
je suis passé par le processus inverse. Une des premières choses que j'ai apprise est que même si vous pouvez écrire du code Perl qui ressemble à C ou C++, vous ne devriez pas. Pareil pour toi. Vous pouvez probablement trouver un moyen d'écrire du code C++ Perl-ish, mais ne vous en souciez pas. Les langues sont trop différents. Vous devez apprendre à écrire du code C++ en tant que programmeur C++. Plusieurs livres de marchandises ont déjà été suggérés. Je pense que vous devriez augmenter que par trouver un mentor. Vous obtiendrez rétroaction immédiate si vous faites les choses de la bonne ou de la mauvaise façon. Vous pouvez aussi consulter les C++ FAQ Lite, en particulier les chapitres 28 et 29 sur les problèmes pour les nouveaux programmeurs C++.
la plus grande différence est que C++ est fortement tapé. Chaque variable a un type, et il ne change pas. Votre exemple de code Perl est techniquement possible en C++, mais il nécessite une bibliothèque supplémentaire pour laquelle je ne suis pas sûr que vous soyez prêt. La solution c++ est de penser à une collection de mélangées mais les éléments liés comme leur propre nouveau type struct
ou class
.
une autre excellente option est de poster des questions c++ spécifiques ici sur SO. Nous encourageons les questions de niveau débutant à condition qu'elles soient clairement formulées et qu'elles démontrent un certain effort préalable.
j'deuxième Penser En C++. Je l'ai lu après avoir connu perl, et je l'ai trouvé très bon. La deuxième édition ne suppose pas de connaissances C; voici ce qu'elle dit sous conditions préalables dans la préface:
dans la première édition de ce livre, je décidé à supposer que quelqu'un d'autre Je t'avais appris C et que tu avais à moins un niveau de confort de lecture avec il. Mon objectif principal a été de simplifier ce que j'ai trouvé difficile: le langage C++. Dans cette édition, j' ont ajouté un le chapitre qui est un rapide introduction à C, avec le Penser en C séminaire sur CD, mais je suis toujours en supposant que vous avez déjà une sorte d'expérience de la programmation. En outre, tout comme vous apprenez beaucoup nouveaux mots intuitivement en les voyant dans le contexte d'un roman, c'est possible apprendre beaucoup de choses sur C de la le contexte dans lequel il est utilisé dans le reste du livre.
comme danben l'a dit, vous avez juste besoin de "Oublier ce que vous savez sur perl". Il est utile de connaître perl juste parce que c'est un autre langage de programmation (C-like, even), mais il est loin d'être assez similaire pour juste "apprendre les différences".
Aussi: Penser En C++ est gratuit pour la version électronique.
je travaille avec Perl exclusivement pour mon emploi de jour et programme C++ pour le plaisir le soir et les week-ends. Ils exigent des mentalités totalement différentes. Il est préférable d'aborder C++ en tant que programmeur noob et de l'apprendre à partir de "Hello World". Bien sûr, vous pouvez accélérer sur des concepts généraux tels que les types de données, mais encore payer assez d'attention pour connaître votre court de votre long et votre référence à partir de votre pointeur.
je voudrais éviter d'apprentissage C, sauf si vous avez vraiment besoin de savoir C. Caractère la manipulation en C est une douleur et ne convient pas pour ce que je soupçonne que vous voulez faire. La classe String en C++ est votre ami: apprendre, vivre l'amour!
Mon université nous a recommandé ce livre : http://www.lrde.epita.fr/~akim/ccmp/affectations.html#C_002b_002b-Primer
de toute façon, Penser en C++ est disponible sur le web gratuitement. Vous pouvez trouver le lien sur le lien précédent, je vous ai donné.
Bonne chance :)
en fait, puisque vous connaissez déjà une langue impérative, l'apprentissage du C ne vous prendra pas beaucoup de temps. Les bases sont toutes les mêmes -- si les instructions, tandis que les boucles, pour les boucles, etc. Même la façon dont les espaces de noms sont organisés est similaire (bien que les tripes sont bien sûr différents.) Vous pourriez vouloir passer en revue quelques-unes des manipulations de pointeur, car C++ fait des références un peu différemment, mais vous ne feriez pas de mal en ramassant et en lisant une copie de K &R (La référence officielle c)--2--> au moins une fois. (Chaque programmeur décent devrait avoir un exemplaire sur sa bibliothèque comme référence, de toute façon.)
après cela, récupérez une édition récente de Stroustrup et vous, assurer que vous travaillez à travers les exercices. Certains des concepts peuvent être un peu étrangers à un esprit Perl-oriented, mais il ne sera pas trop étrange. Si vous rencontrez un concept particulier que vous trouvez difficile, postez à nouveau sur SO et il y aura beaucoup de gens heureux de parcourir avec vous!
K&R http://upload.wikimedia.org/wikipedia/en/e/e1/Kr_c_prog_lang.jpg Stroustrup http://www.research.att.com/~bs/3rd_front.jpg
le livre de Stroustrup est un peu difficile quand on apprend la langue, il vaut mieux essayer un autre livre et utiliser le livre de Stroustrup comme référence.