L'autre jour, mon père m'a posé une question à laquelle je ne m'attendais pas de lui.
"Comment puis-je apprendre le C ++?"
Mon père a 56 ans cette année et les ordinateurs sont un concept éloigné pour lui. Il ne sait pas très bien utiliser un téléphone en plus d'appeler des numéros (pas de numérotation rapide ou de contacts); bien qu'il ait commencé à apprendre un peu mieux les ordinateurs - au point qu'il sait comment ouvrir Internet (sous Windows) et naviguer (et a réussi à remplir plusieurs candidatures entièrement sur son propre compte en ligne, dont on lui a également offert des postes ). Mais encore, ce sont des expériences trop étroites pour signifier beaucoup, vraiment.
Bien qu'il n'ait peut-être pas les antécédents, mon père sait lire. Et je veux dire la lecture comme une compétence, pas seulement une capacité. Il a peu ou pas d'études collégiales (problèmes financiers, famille, etc.) et a eu la chance de terminer ses études secondaires, mais a tout de même appris à devenir maître électricien et en est un depuis près de 30 ans maintenant. Il a fait de même avec la guitare, apprenant à jouer à un niveau très professionnel et a été félicité pour son talent. Au lycée, il a ramassé un livre d'haltérophilie - et était la seule personne de son lycée à l'époque à se qualifier officiellement comme "athlète" selon les normes nationales.
Dans tous les cas, il avait juste besoin de quelque chose à lire. Quelque chose à lui apprendre. Il absorbe les informations comme une éponge.
Je n'ai aucun doute sur la motivation ou la capacité de mon père à le faire, mon objectif général est donc simplement:
Faites entrer mon père dans le monde des ordinateurs et mettez-le sur la voie de la programmation.
Je crois fermement qu'une fois que je lui aurai fait passer les principes fondamentaux, son dynamisme et ses compétences en lecture le maintiendront.
Je vous demande donc à tous: où dois-je commencer par tout cela? Et quelles sont les meilleures ressources disponibles? Dois-je lui faire démarrer Linux au lieu de Windows? Le C ++ est-il une mauvaise idée?
Rappelez-vous, il doit (IMO) d'abord apprendre les ordinateurs, puis obtenir cette première compréhension (l'expérience "Hello world") de la programmation.
Par souci d'argent et de préférence, j'aimerais avoir des ressources en ligne gratuites qu'il peut lire, mais par tous les moyens, toutes les bonnes suggestions imprimées ou payantes en ligne sont les bienvenues (que je pourrais éventuellement examiner plus tard pour acheter).
Et aussi, j'ai l'intention de le démarrer avec C ++ (pas Python, Java, etc.), parce que je le connais le mieux et je pourrai l'aider tout au long du chemin avec le code. (J'ai une connaissance minimale en ce moment dans d'autres langues).
Edit: je reçois beaucoup de suggestions persistantes pour utiliser Python. La seule raison pour laquelle je voulais faire du C ++ est que je le SAIS et que je peux être LÀ quand mon père a besoin d'aide. Ma TRÈS PREMIÈRE exposition à la programmation a été Java. J'ai appris Java et je suis devenu bon. Je suis ouvert à d'autres suggestions, mais veuillez fournir une application efficace de vos suggestions.
EDIT # 2: Je comprends que mon approche / ma pensée / mes connaissances pourraient faire défaut ici. Je suis un étudiant en deuxième année de premier cycle CS. Si vous n'êtes pas d'accord avec quoi que ce soit dans mon message, dites-moi pourquoi - donnez-moi des idées, des informations - c'est pourquoi je demande en premier lieu. Affiner mon objectif général à des objectifs spécifiques accessibles.
Réponses:
Tout d'abord, même si vous connaissez personnellement le C ++, c'est une première langue horrible et horrible pour les débutants, et je ne peux pas recommander assez fortement de l'éloigner le plus possible de lui s'il veut apprendre à écrire du code. Apprendre la programmation n'est pas un langage, c'est apprendre à exprimer des exigences abstraites dans une logique formelle. C ++ rend cela difficile à concentrer car vous trébuchez constamment sur des problèmes spécifiques au langage.
S'il veut apprendre à exprimer des idées dans une logique formelle, optez pour quelque chose qui rend cela simple. Mes choix seraient Pascal (pour le développement au niveau de l'application) ou Python (pour le travail au niveau du script) car ils sont tous deux conçus pour être intuitifs et faciles à apprendre comme priorités principales. Une fois qu'il connaît réellement les principes de l'écriture de code, alors s'il se soucie vraiment du C ++ en particulier, il peut le reprendre.
Pour la même raison, ne le démarrez pas sur Linux au lieu de Windows, car alors il a deux problèmes sur lesquels se concentrer: apprendre Linux et apprendre le codage, en même temps! Gardez les distractions au minimum.
En ce qui concerne les ressources de programmation réelles, il est assez facile de trouver des tutoriels en ligne, mais j'ai trouvé que la meilleure façon d'apprendre à programmer est de programmer. Trouvez quelque chose que vous aimeriez faire, puis commencez à trouver comment le faire.
Il y a plusieurs années, j'ai vu un match et j'ai pensé: "Je pourrais faire ça, et je pourrais le faire mieux." J'ai donc lancé Delphi et commencé à comprendre les principes impliqués. J'apprends toujours de nouvelles choses de ce projet personnel, et en cours de route, je suis devenu un très bon codeur! Alors essayez ça; demandez à votre père ce qu'il aimerait faire s'il pouvait programmer - et assurez-vous que c'est possible, et de portée raisonnablement petite puisqu'il n'a pas encore d'expérience - puis asseyez-vous avec lui et commencez à trouver avec lui comment faire il.
Et s'il a des questions, obtenez-lui un compte StackOverflow. :)
la source
Je pense que l'intérêt de votre père pour le C ++ est vraiment net, mais ce ne serait pas mon choix pour un premier langage de programmation - à moins qu'il ait une exigence très spécifique qu'il souhaite rencontrer. (Même dans ce cas, l'apprentissage du C ++ après avoir appris un autre langage plus simple pourrait encore être beaucoup plus facile.)
Il y a une poignée de choses importantes pour la programmation:
À bien des égards, la syntaxe et la sémantique de langages spécifiques sont proches de la fin des compétences nécessaires à la programmation. Après tout, si vous êtes proche de la droite, la plupart des compilateurs vous diront quelle erreur vous avez commise - bien qu'il faille de l'expérience pour décoder ce que disent spécifiquement les compilateurs.
Donc, je suggère que votre père aborde un langage de programmation beaucoup plus simple du premier coup: Ruby, Python, C, C #, Haskell, etc. (Haskell est définitivement difficile pour les gens qui n'ont programmé que des langages impératifs, mais je d soyez curieux de savoir si les novices complets ressentent le même sentiment de «poisson hors de l'eau».)
S'en tenir à un langage plus simple à l'avance signifie que votre père aura plus de succès plus tôt et aura plus de facilité à "jouer". La boucle REPL interactive de nombreuses langues est un excellent endroit pour apprendre.
Une fois que votre père est familiarisé avec les fonctions, les classes, les objets, les méthodes, les minuties et les nuances de C ++ ne seront pas si écrasantes. Heck, même commencer par C serait plus facile: ce n'est pas pardonnant , mais il y a moins de fonctionnalités déroutantes à craindre.
Vous êtes curieux de savoir Linux contre Windows; Je ne suis pas sûr que la distinction soit importante. S'il est déjà familier avec l'un ou l'autre environnement, le changement n'est qu'un autre obstacle. S'il ne sait ni l'un ni l'autre, je suggérerais Linux, mais principalement parce que l'installation de bons outils est ridiculement facile:
apt-get install <foo>
fonctionne sur la plupart des distributions, et les distributions qui ne prennent pas en chargeapt
fournissent souvent quelque chose de similaire. Une minute plus tard, votre nouveau package est installé, souvent plus rapidement qu'il ne me faudrait pour trouver une source de téléchargement fiable pour les binaires Windows précompilés qui ne puent pas les chevaux de Troie.la source