Quelles langues et quels outils considérez-vous qu’un jeune débutant en programmation devrait utiliser à l’ère moderne?
Beaucoup d’entre nous ont commencé avec des bases propriétaires et ils ne nous ont pas tous fait du tort à long terme :), mais étant donné les expériences que vous avez eues depuis et votre connaissance du domaine, existe-t-il de meilleures options?
Il y a des questions liées à celle-ci, telles que “Les meilleures façons d’enseigner à un débutant à programmer? ” Et ” Un conseil ” sur les programmes de démarrage d’adultes auxquels j’ai répondu, mais les enfants pourraient avoir besoin d’un outil différent.
Divulgation: il est extrêmement difficile de choisir une réponse «correcte» à une question comme celle-ci, alors qui obtiendra le meilleur score en quelques jours grâce au choix des communautés.
Je suggérerais LEGO Mindstorm , il fournit une interface intuitive de glisser-déposer pour la programmation et comme il est livré avec du matériel, il fournit quelque chose de tangible pour un enfant. En outre, comme il s’agit de “LEGO”, ils pourraient penser qu’il s’agit plutôt d’un jeu que d’un exercice de programmation.
Mon travail de jour est dans une école et au cours des dernières années, j’ai vu ou enseigné (ou tenté d’enseigner) divers enfants, en nombre, en leçons de programmation.
Les enfants sont tous différents – certains apprennent vite, d’autres non. En particulier, certaines d’entre elles ont de meilleures compétences en littératie que d’autres, et cela fait certainement une différence quant à la vitesse à laquelle elles vont suivre la programmation. Je parie que la plupart d’entre nous ici, en tant que programmeurs professionnels et le genre de personnes qui lisent et publient sur des forums pour le plaisir, ont appris à lire à un jeune âge. Pour ces types d’enfants, et si c’est votre propre enfant que vous pouvez enseigner en tête-à-tête, vous pourriez faire pire que JavaScript – il a l’avantage de pouvoir faire des choses réelles tout de suite, et le cycle de vérification des modifications. est simplement en train de “rafraîchir” dans le navigateur. Lorsque vous commencez à comprendre comment JavaScript fonctionne en mode asynchrone, il devient difficile de déboguer, mais pour un enfant shiny qui suit de très près les cours, ces problèmes peuvent être résolus.
LEGO Mindstorms est certainement en haut de la liste. La plupart des écoles superposent maintenant les briques ensemble pour créer des modèles prédéfinis qui ne peuvent pas être coupés, mais cela ne devrait pas poser de problème à la maison. Sur le site du Times Educational Supplement (forum du site Web du journal hebdomadaire du Royaume-Uni), quel est le meilleur langage de programmation pour les enfants? le sujet revient assez régulièrement. Beaucoup de recommandations là-bas pour Scratch comme alternative à Mindstorms – un peu plus de liberté que Mindstorms, encore une fois probablement mieux pour l’élève shiny qui pourrait également recevoir un fer à souder.
J’ai trouvé que les élèves plus lents peuvent toujours avoir des problèmes avec Mindstorms, même si l’environnement de programmation est “graphique” – il y a encore beaucoup à faire à l’écran, et il y a pas mal de choses à retenir (c’était une version antérieure) Je n’ai pas encore essayé le nouveau snazzy. Selon mon expérience, la meilleure introduction à la programmation est probablement encore LOGO – en fait un langage beaucoup plus puissant que ce que la plupart des gens lui atsortingbuent. Le livre original Mindstorms de Seymour Papert (rien à voir avec LEGO – ils ont dénoncé le titre du livre pour leur produit), l’un des créateurs de LOGO, est la référence canonique pour l’enseignement de la programmation aux enfants comme le concept de constructionnisme dans l’apprentissage.
Nous avons eu des classes de 7 ou 8 ans programmant LOGO. Notez que nous ne visons pas à faire d’eux des “développeurs de logiciels”, c’est un cheminement de carrière qu’ils peuvent décider après 16 ans. À un jeune âge, nous essayons de les amener à penser à la «programmation informatique» comme à un autre outil: comment définir un problème à résoudre par un ordinateur, de la même manière qu’une carte mentale pour les aider à s’organiser. et rappelez-vous des choses pour un examen. Aucun enfant pauvre ne devrait être assis et percé dans la minutie et l’utilisation d’une langue particulière, ils devraient être laissés à explorer et à trouver des choses à leur guise.
Je vais seconder les suggestions de Geoff concernant le phrogramme (anciennement KPL) et Alice .
Ma seule autre suggestion est Lego Mindstorms NXT . Le langage de programmation du NXT est le glisser-déposer, est très facile à utiliser et peut effectuer des tâches très compliquées une fois que vous l’avez appris. Les jeunes garçons aiment aussi voir les choses bouger. 🙂
J’ai utilisé Alice et NXT avec de jeunes enfants et ils se sont très bien débrouillés.
Deux possibilités sont:
Scratch – développé au MIT – http://scratch.mit.edu/
et
EToys de la célébrité One Laptop per Child – http://wiki.laptop.org/go/Squeak
Divulgation complète: Je suis l’un des gars qui ont inventé le langage de programmation pour enfants, maintenant http://www.Phrogram.com , que d’autres ont recommandé ici. Permettez-moi d’append quelques informations sur le programmeur à ce sujet.
C’est un IDE de code, plutôt que glisser-déposer, ou basé sur un concepteur. C’était intentionnel de notre part – nous voulions rendre la programmation basée sur du texte simple et amusante, en particulier les jeux de programmation et les graphiques. C’est une différence fondamentale entre nous et Alice et Scratch. Ce que vous choisissez est une question de l’enfant, de son âge et de ses aptitudes, de vos objectives. Les utiliser en série avec le même débutant pourrait être un excellent moyen – si vous faites cela, je recommanderais Scratch, Alice, Phrogram comme ordre. Phrogram a bien fonctionné pendant 12 ans et plus, mais je connais des pères de 6 ans qui ont enseigné à leurs enfants, et je connais des enfants de 10 ans qui ont appris avec eux.
Le langage ressemble autant à l’anglais qu’on pourrait le faire et est aussi minimal que possible. La sauce secrète se situe dans la hiérarchie des objects basée sur les classes, qui est à nouveau aussi simple, intuitive et anglaise que nous pourrions le faire. L’object heirarchy est optimisé pour les jeux et les graphiques. Les modèles 3D sont disponibles et les sprites 2D. Le mouvement absolu à l’aide des coordonnées de l’écran est pris en charge ou le mouvement relatif ala les tortues LOGO – Forward (x), TurnLeft (y).
L’IDE est livré avec plus de 100 exemples, des exemples de langage (boucles), des exemples d’apprentissage (tableaux), des jeux entièrement fonctionnels et des sims (Pong, Missile Command, Game of Life).
Pour vous donner une idée de l’effet de levier que nous avons fait sur le langage et l’EDI: avec 27 instructions, vous pouvez piloter un modèle de vaisseau spatial 3D autour d’une skybox 3D, en utilisant votre clavier. La même chose avec un sprite 2D est de 12 à 15 instructions.
Nous travaillons sur une version de Phrogram compatible avec Blade qui permettra aux programmes de fonctionner sur la XBox 360. Ouais, la XBox, sur votre grand téléviseur. Belle motivation pour avoir un enfant commencé? 🙂
Phrogram prend en charge la programmation basée sur les classes, avec des méthodes et des propriétés – mais ce n’est que l’encapsulation, pas l’inheritance ou le polymorphism.
Un tutoriel et un guide de l’utilisateur sont disponibles,
Mon propre ebook est disponible en ligne sur Amazon, “Learn to Program with Phrogram !,” et permet à un débutant de programmer le Pong classique.
La programmation de Phrogram pour le débutant absolu, par Jerry Lee Ford, Jr., est également disponible, sous forme de livre de poche, sur Amazon et ailleurs.
Pour un enfant, j’irais avec Alice . Tout enfant va aimer l’interaction glisser-déposer qu’Alice utilise mieux que d’essayer de se rappeler comment épeler et ponctuer tout langage de programmation. Il / Elle apprendra les structures de programmation de base (conditionnels, boucles, etc.) et expérimentera le plaisir de créer un programme d’animation qu’il pourra montrer à d’autres membres de la famille ou à des amis.
Un cours de CS pour débutants au collège communautaire local utilise réellement Alice pour enseigner la programmation d’une manière indépendante du langage. Il fournit une bonne base pour passer à la programmation dans une langue particulière (ou quelques langues) plus tard.
J’ai récemment vu une présentation sur GreenFoot (un environnement d’apprentissage basé sur Java pour les enfants). C’était génial. Si j’avais des enfants, j’essaierais
Lien vers la présentation
C’est un environnement très ludique, où vous pouvez commencer avec des méthodes très simples. Les enfants apprennent à penser de manière orientée object (vous ne pouvez pas instancier un animal, mais vous pouvez instancier un chat). Et plus ils obtiennent de meilleurs résultats, plus vous pouvez découvrir Java avec / avec eux.
J’irais avec Scratch , quelques points à ce sujet.
Je voudrais noter que bien que beaucoup d’entre nous aient commencé à programmer à un jeune âge en tant que base ou logo et que le programmeur plus tard dans la vie ne signifie pas que ce sont de bonnes langues pour commencer. Je pense que les enfants d’aujourd’hui ont de meilleures options, comme scratch ou Alice. Les langages à base de texte (python, ruby, basic, c # ou même c) dépendent de bibliothèques et d’outils externes (éditeurs, compilateurs) alors qu’Alice ou scratch sont tout compris et enseigneront aux enfants (non destinés aux adolescents) des concepts de programmation. Plus tard, ils peuvent aller de l’avant et élargir leur apprentissage.
Découvrez Phrogram (anciennement KPL) et Alice
Je dirais: donnez un vrai C64 à l’enfant, car c’est comme ça que j’ai commencé. Mais aujourd’hui, je dirais Ruby, mais Ruby est un peu trop chaotique. BASIC serait mieux à long terme. Le traitement est facile à apprendre et il s’agit essentiellement de Java.
La raison pour laquelle je recommande un C64 est que c’est BASIC, mais vous devez apprendre certaines choses liées à l’ordinateur, comme le modèle de mémoire, les pixels, les caractères, les cartes de caractères, les nouvelles lignes, etc. De plus, si votre enfant trouve cela ennuyeux, vous savez que son cœur n’est pas vraiment dans le codage.
Je lancerais le LOGO. C’était quelque chose qui était enseigné dans mon école primaire. Il donne un retour presque immédiat et enseignera des concepts de programmation vraiment basiques. Déplacer cette petite tortue peut être très amusant.
Pour un enfant, j’irais avec Alice.
Voici un autre vote pour Alice. Mes 4 enfants se sont beaucoup amusés à travailler avec elle et à apprendre les concepts de base de la programmation. Bien sûr, pour eux, il s’agit de socialiser avec les fées et les ogres, mais je pense que l’ancien système sur lequel je travaille pourrait aussi utiliser des faries et des ogres.
Je recommande le python, car il est tellement laconique et expressif. Semble moins susceptible de se contrecarrer au démarrage, mais offre également beaucoup d’espace pour apprendre des concepts plus avancés.
Game Maker pourrait être une autre approche. Vous pouvez commencer par un simple développement de glisser-déposer, puis introduire une programmation plus avancée au fur et à mesure. Le livre The Game Maker’s Apprentice: Développement de jeux pour les débutants propose plusieurs exemples de jeux et vous guide à travers les étapes nécessaires à leur réalisation.
Je pense que Python est une bonne alternative. c’est un langage très puissant, vous pouvez facilement faire beaucoup de choses (pas ennuyeux du tout).
Checkout Squeak développé par Alan Kay qui pense que la programmation devrait être enseignée dès le plus jeune âge.
Quel âge? Beaucoup d’entre nous ont commencé à regarder BASIC à un moment donné, mais avant cela, j’ai appris les concepts de la combinaison de commandes, de variables et de boucles avec LOGO. Savoir comment dessiner un cercle avec un sortingangle qui ne peut que suivre une ligne droite et tourner est ma première réalisation en programmation.
Edit: Cette question et ses réponses me font me sentir vieux.
Bien que cela ne lui ait pas beaucoup plu au cours de la dernière année, j’ai été très enthousiasmé par Hackety Hack . Je pense que la clé pour la plupart des nouveaux programmeurs, en particulier les enfants qui sont plus enclins à perdre leur intérêt pour les choses, est la rétroaction instantanée. C’était vraiment une chose merveilleuse à propos de Hackety Hack: quelques lignes de code, et soudain, vous avez quelque chose devant vous qui fait quelque chose. Il y a quelques applications similaires destinées à dessiner des graphiques (dont une, j’ai brièvement aidé Nathan Weizenbaum, Scribble! ). Les enfants ont simplement besoin d’une rétroaction positive qu’ils font régulièrement quelque chose de correct, sinon il n’y a rien pour les garder intéressés par la tâche à accomplir. Ce que je pense de l’avenir pour enseigner aux enfants à programmer est une sorte de DSL construit sur un langage avec une syntaxe conviviale (qui inclurait sans doute Ruby, Python et Scheme) dont le but est de fournir un environnement intuitif pour construire jeux (disons, Tic-Tac Toe ou Hangman).
Je pense que vous devriez les démarrer en C. Le plus tôt ils pourront se faire une idée des meilleurs.
Voir Comprendre les pointeurs et devrais-je apprendre C.
Je pense que la première question est la suivante: quel type de programme serait-il intéressant de créer? L’une des choses qui m’a permis de commencer avec la programmation en tant qu’enfant (dans BBC basic puis QBasic) était la facilité de rédaction de programmes graphiques. Je pourrais écrire quelques lignes de code et voir mon programme dessiner une ligne sur l’écran tout de suite.
Récemment, la bibliothèque pygame pour python et Processing , un ensemble de bibliothèques Java avec un IDE, est la plus proche de ce type de simplicité.
J’imagine que le piratage sur les pages Web serait un autre bon moyen de démarrer: cela impliquerait HTML, Javascript (en utilisant une bibliothèque comme jQuery), peut-être PHP ou quelque chose du genre.
Quels que soient les outils que vous fournissez, le plus important est de commencer tout de suite. Si vous devez écrire vingt lignes de code correct et comprendre comment appeler le compilateur avant de voir des résultats tangibles, la progression sera lente.
Il y a déjà beaucoup de bonnes suggestions. Je suis vraiment d’accord avec Kronikarz. Obtenez un ordinateur rétro (ou émulateur) qui vous intéresse et enseignez-le. Pourquoi un ordinateur rétro? Basic est intégré. Faire des sons et des graphiques primitifs est une tâche banale. La vraie affaire pourrait être meilleure qu’un émulateur, car ce serait un peu plus fascinant pour un enfant habitué à ne voir que des appareils modernes.
Comme je l’ai dit ici , j’irais pour Squeakland et le célèbre exemple Drive a Car (propulsé par Squeak ).
La syntaxe Smalltalk est simple, ce qui est idéal pour les enfants.
Et plus tard, au fur et à mesure que l’enfant évolue, il peut apprendre des concepts plus complexes et même très avancés qui sont également disponibles dans Squeak (par exemple, programmer des applications Web avec refactoring automatisé et tests unitaires automatisés!).
Et comme @cpuguru et @Rotem ont dit, Scratch (également basé sur Squeak) est également génial.
Je pense que Java peut être un bon choix simplement parce que vous pouvez créer facilement des interfaces graphiques et voir des “choses cool”. Pour la même raison, peut-être l’un des langages .NET. J’ai aussi entendu de bonnes choses sur les langages de script (Ruby et Python, en particulier) pour que les enfants apprennent à programmer.
Eh bien, s’ils sont jeunes et n’ont pas appris leur ABC, vous pouvez les essayer sur BF – non pas sur ces lettres et ces chiffres embêtants.
Je vais me chercher un manteau.
Skizz
J’irais avec ce que j’aurais aimé savoir en premier: une simple boîte MS-DOS et l’assembleur intégré (debug). Il est bon d’apprendre et de comprendre les bases de la communication avec un ordinateur.
Si cela ne fait pas peur à un enfant, alors j’irais au «prochain niveau» et introduirais C. Cela ne devrait pas être difficile étant donné que le concept de base de pointeurs, de registres et d’instructions en général est bien compris à ce moment-là.
Cependant, je ne suis pas tout à fait sûr, où aller ensuite. Faites le grand saut à Lisp, à Haskell ou à des langages abstraits de la même manière ou devrait-il y avoir des langages simples orientés object (peut-être même C ++) ou serait-ce plus pénible que de l’aide?
En regardant Alice, je vois que c’est “conçu pour les lycéens et les étudiants”. Il semble y avoir une autre langue / version appelée Story Telling Alice qui est “conçue pour les collégiens”
Alice Download Page
Je pense que Context Free Art pourrait être un bon choix, avec la sortie de graphiques, cela rend très amusant l’apprentissage de la grammaire sans contexte .
Essayez [Guido van Robot] [1]. C’est une excellente introduction à la robotique et c’est un excellent moyen de faire découvrir aux enfants l’aspect de la programmation (par rapport à l’aspect «construire des robots»).
Smalltalk n’a-t-il pas été conçu à cette fin? Je pense que Ruby serait un bon choix, en tant que descendant de Smalltalk.
Je sais qu’au cours des premières années du lycée, nous avons «enseigné» le logo, et étrangement, le langage HTML. Après cela, la progression est allée aux macros de MS Office, suivies de VBA de base, suivies de Visual Basic.