Existe-t-il une possibilité que quelqu'un qui a appris tous les aspects clés du C ++ et qui connaît très bien les principes fondamentaux du langage, apprenne d'autres langages (tels que Python, Perl, Java) plus rapidement et plus facilement?
9
Réponses:
De façon générale
Une connaissance approfondie de tout langage de programmation est susceptible de vous aider à choisir plus rapidement d'autres langages. C'est en partie parce que la programmation est une façon de penser plus que d'apprendre la syntaxe. La plupart des pratiques de programmation s'appliqueraient à la plupart des autres langages de programmation. C'est pourquoi les gens disent que vous apprenez toujours le deuxième langage de programmation plus rapidement que le premier.
En termes spécifiques
C ++ est un langage qui permet un «contrôle» beaucoup plus important que les autres langages. Cela peut être bon et mauvais à la fois. Par exemple, un vrai pistolet est meilleur qu'un pistolet à air comprimé lorsque vous allez dans la forêt (car vous pouvez réellement abattre quelque chose avec), mais il est également plus dangereux pour vous et ceux qui vous entourent. C ++ a des concepts tels que la gestion de la mémoire, dont vous n'avez pas à vous soucier dans la plupart des autres langages. Cependant, avoir une bonne compréhension de ces concepts est loin d'être inutile même lorsque vous travaillez avec des langages de gestion de mémoire automatique. Vous pouvez également effectuer des opérations au niveau du bit et descendre beaucoup plus bas dans le «métal» avec un langage comme C ++. Même une compréhension de base dans ces domaines peut vous aider beaucoup en tant que programmeur dans n'importe quelle langue.
Opinion personnelle
J'ai personnellement appris Java d'abord pendant près de 3 ans avant d'apprendre le C ++, et je dois dire que je le regrette en quelque sorte (cours uni ...). Cela a rendu l'apprentissage du C ++ (j'apprends toujours - loin de la connaissance «profonde»: D) pas aussi simple que je le souhaiterais. Si je l'avais fait dans l'autre sens, je dirais que cela aurait été beaucoup plus facile pour moi. Surtout quand vous savez POURQUOI quelque chose est fait d'une manière spécifique, et pas seulement soyez assuré de l'auto-magie de la langue. Si je suis autorisé à donner un avis, je suggère: C (pour les paradigmes de programmation de base et universelle) -> C ++ (pour une compréhension de base de la POO avec la gestion de la mémoire) -> Ensuite, vous pouvez entrer dans n'importe quel langage de POO 'réel' avec un bonne base ou vous pouvez continuer avec des sujets plus avancés en C ++, tout dépend de ce que vous '
la source
OR
etAND
Malheureusement non. C'est en fait un gros problème lors de l'enseignement du C ++ dans les classes de programmation, en particulier les classes de niveau débutant: vous pouvez apprendre les principes de programmation, ou vous pouvez apprendre le langage C ++, mais le langage C ++ a trop d'embûches et de petits trucs stupides pour apprendre les deux efficacement dans la portée d'une classe d'un semestre!
Il y a beaucoup de choses qui ont été essayées en C ++ et qui sont finalement devenues idiomatiques dans le langage par pure inertie, que pratiquement tous les autres langages depuis ont examinés et rejetés parce que cela s'est avéré être une énorme erreur. Les principaux sont les modèles de C ++ et le modèle d'objet de C ++ (les objets en tant que types de valeur ne sont jamais une bonne chose, car ils cassent la substitution Liskov et mille OOP lui-même.)
Donc, si vous avez d'abord une connaissance approfondie du C ++, puis que vous voulez apprendre d'autres langages de programmation, il va y avoir beaucoup de conneries nuisibles et contre-productives que vous devrez désapprendre pour être efficace dans d'autres langages de programmation.
la source
Non. Une bonne connaissance du C ++ facilitera l'apprentissage d'autres langages comme le C ++. Mais ce serait ennuyeux. Pourquoi voudriez-vous connaître deux langues qui sont identiques? Cela ne vous rapporte rien. (Notez que ce n'est pas spécifique au C ++. Il s'applique à n'importe quelle langue. Comparez avec les langues naturelles: l'apprentissage de l'italien ne facilitera pas l'apprentissage d'autres langues. Cela facilitera l'apprentissage de l'espagnol, du français ou du portugais, et l'apprentissage de trois de ceux-ci, il sera plus facile d'apprendre la quatrième, mais même apprendre toutes les langues romanes ne vous aidera pas du tout à apprendre le finnois, le chinois, l'hindi, l'hébreu, l'arabe, le pachtou, le grec, etc.)
Les langages de programmation implémentent des paradigmes. Peter van Roy a collecté une affiche des 34 principaux paradigmes de programmation .
Les paradigmes, à leur tour, sont composés de concepts. Cette affiche répertorie environ 18 concepts.
Tous les paradigmes (ou du moins ceux de l'affiche) sont composés de ces concepts. Toutes les langues implémentent un ou plusieurs paradigmes composés de ces concepts. Donc, si vous apprenez ces concepts, vous apprendrez (dans un certain sens) tous les langages de programmation à la fois.
Il y a bien sûr encore beaucoup de bizarreries spécifiques à la langue (la syntaxe entre elles). De plus, cette affiche ignore complètement la saisie, et il y a bien sûr une différence significative entre un système de type System F <: ω , un système de type Scala ou un système de type dynamique de type canard, sans parler d'un système de type dépendant à la Idris, Agda, Coq, Guru ou ATS.
la source
Je dirais que connaître profondément n'importe quel langage de programmation aidera à apprendre les autres, au moins d'autres langages de la même famille. Par exemple, la connaissance C ++ n'aidera pas beaucoup avec LISP ou Haskell, mais pour les langages procéduraux orientés objet, cela le sera. Mon approche a été d'essayer d'apprendre une langue de chacune des différentes familles (procédurales, fonctionnelles, orientées objet, etc.) de langues, puis cette connaissance peut être transférée dans d'autres langues de cette famille. D'un autre côté, une connaissance approfondie de l'APL n'aidera à rien d'autre ...
la source
Je vais prendre une interprétation différente ici.
Le C ++ est un bon langage pour apprendre la mémoire et les structures de données, car il vous oblige à réfléchir soigneusement à des concepts tels que la propriété et la durée de vie des objets. Et l'apprentissage de la mémoire et des structures de données est l'une des parties essentielles de tout programme de génie logiciel.
Mais vous devez vous renseigner sur les structures de données. Si vous "apprenez simplement le C ++", vous ne gagnerez pas vraiment grand-chose, et cela pourrait ralentir le processus d'apprentissage d'autres langues à court terme.
Quand j'étais à l'université, Data Structures était un cours de première année obligatoire, suivi après CS1 (dont au moins la moitié de la classe avait abandonné). C'était difficile. Le format du cours était essentiellement "Voici une structure de données que vous n'avez jamais vue auparavant [par exemple un tas de gauche ]. Implémentez-la en C ++ en une semaine et faites en sorte que votre sortie corresponde exactement à notre sortie attendue, octet par octet, donc nous peut le noter automatiquement. " Ensuite, la semaine prochaine, vous obtiendrez une nouvelle structure de données et une nouvelle affectation. J'ai probablement appris plus dans ce cours que dans tous mes autres cours combinés.
C'est le genre d'apprentissage que vous devez faire pour que le C ++ soit utile.
la source
Chaque langue que vous apprenez facilite l'apprentissage de la suivante, en particulier dans le même paradigme. Ils empruntent beaucoup les uns aux autres, et après un certain temps, vous arrivez au point où un nouveau langage ressemble simplement à une collection de fonctionnalités d'autres langues, avec quelques rebondissements uniques.
Je ne pense pas que le C ++ soit meilleur ou pire que tout autre langage à cet égard. C'est l'une des langues les plus verbeuses que je connaisse, et rend certaines choses difficiles qui sont faciles dans la plupart des autres langues, mais cela ne se traduit pas nécessairement en rendant la langue suivante plus facile à apprendre . Cependant, cela rend généralement la langue suivante plus facile à utiliser . Il y a une différence.
la source
Non. Une connaissance approfondie de C , ou du sous-ensemble de C ++ qui est "fondamentalement C", sera utile lors de l'apprentissage d'autres langages, au moins pour imaginer ce que leurs implémentations doivent faire. Une connaissance approfondie du C ++ , d'autre part, sera principalement constituée d'informations qui prêtent à confusion ou ne sont pas pertinentes lors de l'apprentissage d'autres langues; si vous apprenez l'orientation des objets de C ++ à plus d'un niveau de surface, par exemple, lorsque vous passez à Perl / Python / Ruby, vous passerez plus de temps à apprendre ce que vous savez qu'à l'utiliser, car les objets de ces langages sont implémentés dans d'une manière complètement différentequ'en C ++. La même chose est vraie dans une plus ou moins large mesure pour la plupart des autres langages et pour d'autres fonctionnalités de langage (par exemple, les modèles C ++ et le polymorphisme Haskell sont fondamentalement la même fonctionnalité, avec, encore une fois, des implémentations complètement différentes). Une connaissance approfondie du C ++ sera donc principalement spécifique au C ++.
la source