Est-il encore trop tôt pour apprendre une nouvelle langue? [fermé]


11

Contexte personnel: j'apprends formellement le C ++ depuis 6 mois à l'université. Avant cela, j'ai essayé JavaScript pendant un an. Maintenant, j'envisage d'apprendre Python pendant un mois de congé.

En divisant mon attention au début du processus d'apprentissage, est-ce que je dégrade l'efficacité de mon apprentissage? Dois-je passer le mois de congé à continuer en C ++? Ou n'est-il jamais trop tôt pour apprendre une nouvelle langue?


6
Si vous comprenez la programmation en général, l'apprentissage de nouveaux langages devrait vous aider à devenir un meilleur programmeur. Si vous êtes nouveau dans la programmation et n'avez pas compris des choses comme le contrôle de flux, les types de données, les fonctions / méthodes, etc., j'attendrais d'apprendre d'autres langues.
The Muffin Man

Je suis assez à l'aise en C ++ avec tout ce que vous avez mentionné.
Anticipation

1
Je mettrai votre question en perspective. Au cours des 6 premiers mois de mon séjour à l'université, j'avais déjà été initié à 5 langages de programmation différents. Assemblage (j'oublie la plate-forme Moto exacte), C, C ++, Visual Basic 6 et Java. Plus tard, j'ai continué à apprendre Basic, C #, Visual Basic .NET, x86 Assembly. Après l'université, j'ai appris au moins 5 langages de programmation supplémentaires au cours des 2 premières années.
Ramhound

2
Si vous pouvez effectuer plusieurs tâches et établir des priorités et avoir une approche disciplinée de l'apprentissage, alors allez-y par tous les moyens et apprenez une deuxième langue. Il est généralement préférable de se concentrer sur la première langue et de la maîtriser. Cependant, il est également important d'apprendre différents paradigmes de programmation. Lisez la section de programmation des liens suivants pour voir ce que je veux dire: ce que chaque major en informatique devrait savoir et la matrice de compétences du programmeur
Anthony

Réponses:


8

Mon expérience avec Python se limite à du code de lecture légèrement plus complexe que bonjour, donc ce ne sera pas une réponse très approfondie pour python en particulier, mais je peux vous dire ceci:

Les différences entre les langages sont dans des détails comme la syntaxe et certaines spécificités de langage seront différentes (comme les différentes façons dont les erreurs sont gérées, les capacités d'E / S et la façon dont les compilateurs convertissent vos entrées en quelque chose d'exécutable), mais C ++ et Python offrent tous les deux la même chose paradigmes, donc la résolution de problèmes peut se faire de la même manière avec les deux langues. C ++ et Python sont tous deux impératifs et orientés objet, donc vous allez probablement prendre python assez rapidement si vous êtes à l'aise avec C ++ une fois que vous maîtrisez la nouvelle syntaxe en utilisant des techniques de résolution de problèmes que vous avez choisies avec C ++. Si vous le souhaitez, vous pouvez également utiliser Python pour la programmation fonctionnelle, mais je n'ai jamais touché à cette partie, donc je ne peux pas vous en dire beaucoup à ce sujet.

Est-ce trop tôt? Je ne peux pas vraiment dire de votre histoire dans un oui ou un non définitif. Êtes-vous déjà suffisamment confiant pour écrire des applications complètes (GUI) avec C ++? (c'est-à-dire utiliser des bibliothèques, des fonctionnalités de langage plus complexes comme les génériques et / ou les modèles, etc.) Je pense qu'apprendre un nouveau paradigme de langage est beaucoup plus difficile que d'apprendre une nouvelle langue dans la même famille de paradigmes. Lorsque vous entrez dans un nouveau territoire de paradigme, vous devrez passer beaucoup plus de temps pour avoir une bonne idée de la façon de résoudre les problèmes avec ce paradigme. Entre les langages OO, il existe des différences quant à la façon dont l'héritage est traité et comment les données sont transmises dans la mémoire lorsque vous transmettez un paramètre / argument à une fonction affectant les performances. Mais pour commencer, ceux-ci sont généralement peu préoccupants au début.

Je suppose que si vous êtes suffisamment confiant avec C ++ pour faire quelque chose de plus que bonjour, de manière fantaisiste, vous êtes prêt pour le lancement. L'apprentissage superficiel de plusieurs langues vous aidera à comprendre les exemples de code quelle que soit la langue utilisée, mais la création de votre propre code nécessite un peu plus de compréhension du fonctionnement des langues et de leur différence.

PS Quand je veux apprendre à utiliser une nouvelle langue superficiellement, je vais généralement essayer les choses suivantes pour avoir une idée de la syntaxe de la langue et des fonctionnements superficiels:

  • Bonjour tout le monde (texte à l'écran)
  • Bonjour tout le monde écrit dans un fichier (vous apprend les bases des E / S de fichiers pour cette langue, et très souvent d'autres types d'E / S également)
  • Faire des calculs standard avec différentes bases (10, hex, octal), à la fois entier et virgule flottante. (vous apprend la troncature et la notation numérique)
  • Essayez d'utiliser une bibliothèque graphique pour montrer le monde bonjour dans une boîte de dialogue sophistiquée. (vous apprend à utiliser les bibliothèques et le code externe)

Les remarques finales du dernier paragraphe sont excellentes. Bien que je ne sois pas tout à fait aux applications complètes en C ++, j'apprécie votre argument sur l'élargissement de la portée de ce que je connais, même si c'est juste superficiel.
Anticipation

6

Bien sûr que oui.

Pas de doute, il est parfois trop tôt pour apprendre un nouveau langage de programmation.

Le cas le plus simple est de savoir si une langue el-stinko sort et avant que quiconque ne souligne son inadéquation, en l'apprenant, vous endommagez votre cerveau. Un couple qui me vient à l'esprit est BASIC, FORTH et APL.

Pour un cas plus compliqué, l'un des grands informaticiens a décrit ce problème qui a très brièvement déclaré que la pratique rend permanent, et il y a de nombreuses disciplines à apprendre avant d'apprendre les langages informatiques afin que le langage ne fausse pas la compréhension la plus fondamentale . Dans ses mots:

Les outils que nous utilisons ont une influence profonde et détournée sur nos habitudes de pensée, et donc sur nos capacités de réflexion.

L'adversaire de plonger dans la programmation s'appelle Edsger Dijkstra et il a eu une carrière très distinguée. Il a reçu le prix ACM Turing avec la citation suivante:

Pour les contributions fondamentales à la programmation en tant que défi intellectuel élevé; pour une insistance éloquente et une démonstration pratique que les programmes doivent être composés correctement, pas seulement débogués dans l'exactitude; pour éclairer la perception des problèmes aux fondements de la conception des programmes.

Le papier où il explose l'apprentissage prématuré des langages de programmation est:

"Sur la cruauté de l'enseignement réel de l'informatique" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

De plus, ne me flambez pas, je ne suis que le messager.


"J'ai commencé avec BASIC et j'ai été marqué à vie" - cela ne réfute-t-il pas votre argument? Si vous aviez été initié à d'autres langages de programmation dès le début, BASIC n'aurait pas eu un impact aussi fort?
tdammers

Je suppose que j'avais besoin d'une émoticône. Si cela aide, j'ai supprimé cette phrase.
DeveloperDon

3

Est-il encore trop tôt pour apprendre une nouvelle langue?

Je dirais oui. Si vous vous concentrez toujours sur le concept même que l'ordinateur peut réellement faire ce que vous lui dites, alors apprendre une deuxième langue ne fera que vous embrouiller.

Mais si vous avez dépassé le point où vous vous rendez compte que l'ordinateur fait exactement ce que vous lui dites, peu importe à quel point il est stupide, alors il y a de fortes chances que vous ayez une compréhension assez raisonnable de votre première langue qu'en regardant une seconde (et une troisième !) la langue ne rompt pas votre attention.


2

Tu ne peux pas faire les deux ?? Je ferais un projet en C ++ et j'apprendrais des morceaux de Python (juste parce que c'est tellement génial), vous pourriez résoudre des problèmes sur ProjectEuler.net en utilisant Python

En général, je pense que c'est une mauvaise idée d'apprendre une langue, de la quitter et de commencer à en apprendre une nouvelle. Il faut être flexible en travaillant avec différents paradigmes aux premiers stades. Mais c'est exactement ce que je pense.


ProjectEuler.net a l'air génial! Merci pour la recommandation.
Anticipation du

2

Pour un programmeur pratiquant, je dirais sans réserve que l'apprentissage d'une nouvelle langue n'est presque jamais une mauvaise idée. Pour un étudiant universitaire, je recommanderais un peu de prudence, en fonction des cours à venir. La raison en est que, lors d'un examen scolaire, vous devez souvent réciter les détails de la langue sans bénéficier d'un environnement de compilation / exécution qui signalera facilement vos erreurs.

Surtout lorsque vous n'avez que quelques mois d'expérience, il est très facile de mélanger les détails dans votre esprit. Si vous vous souciez de vos notes et que vous suivez un cours avec des examens comme ça, je serais prudent. Dans le monde réel, ce n'est pas un problème.

edit : J'ai dit à l'origine la syntaxe, mais les détails non syntaxiques sont tout aussi importants pour les professeurs, et il y en a beaucoup plus.


Si, en tant qu'étudiant, vous ne vous souvenez pas des différences de syntaxe entre les langues, vous avez un problème. Vous n'aurez pas toujours de compilateur pour vérifier votre syntaxe, il y a des situations très réelles dans ce domaine, où vous devez pouvoir rappeler la syntaxe sur place.
Ramhound

Je ne dis pas qu'il est impossible de se souvenir, juste que cela rend les choses beaucoup plus difficiles pour un débutant. Les grandes différences syntaxiques sont assez faciles, mais les professeurs peuvent être très pointilleux sur des détails comme append()vs push_back()pour une liste, ce que même les programmeurs expérimentés doivent rechercher s'ils n'ont pas utilisé une certaine fonctionnalité dans une certaine langue depuis un certain temps. Le fait de pouvoir rappeler la syntaxe sur place est sans aucun doute utile, mais pour la grande majorité des travaux, il n'est jamais nécessaire .
Karl Bielefeldt
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.