Warning: Undefined property: stdClass::$subjects in /home/clients/35666af5317ba4b26577e5dc7df1a2a0/web/wp-content/plugins/openbook-book-data/openbook.php on line 222
Dans un récent article [1] Anna Lietti fait le point sur une question qui fait son chemin un peu partout:
Pour former des citoyens «informatiquement éclairés»*, l’école doit-elle enseigner à tous le b. a.-ba de la programmation?
Selon certains comme Bernard Stiegler, les enfants du numérique ont une « expérience rusée » du fonctionnement des machines, mais leur approche intuitive approche vite ses limites et ne leur permet pas de dominer la machine. Or cette domination est nécessaire pour contrôler notre monde, de plus en plus automatisé, numérique et interconnecté. On le voit avec l’affaire PRISM : contrôler La Machine, c’est avoir le pouvoir sur ses utilisateurs…
Des précurseurs comme Seymour Papert (élève de Jean Piaget) se sont intéressés dès les années 1960 à la pédagogie de l’informatique et inventé des outils comme le langage Logo pour initier à l’algorithmique et à la programmation procédurale dès l’enfance. Pourtant, 50 ans plus tard, aucun pays n’intègre la programmation au cursus scolaire primaire, peu le font au niveau secondaire, et la branche y est rarement obligatoire.
En Grande-Bretagne, suite à un rapport de la Royal Society intitulé « Shut down or restart » [3] qui jugeait l’enseignement de l’informatique tellement insatisfaisant qu’il vaudrait mieux ne rien faire, la décision a été prise d’initier les enfants dès 5 ans à la programmation dès la rentrée 2014 et que la programmation devienne une branche obligatoire du baccalauréat au même titre que la physique ou la chimie.
En France aussi, un récent rapport de l’Académie des Sciences [4] vient de recommander d’aller plus loin que la récente (ré)introduction de la spécialité « informatique et sciences du numérique » en terminale S [5], en incluant « une initiation aux concepts de l’informatique » dès l’école primaire , puis « un véritable enseignement d’informatique, qui ne soit pas noyé dans les autres enseignements scientifiques et techniques, mais développe des coopérations avec ceux-ci dans une volonté d’interdisciplinarité » au collège, puis « proposer un enseignement obligatoire d’informatique en seconde » au lycée.
Plusieurs initiatives se développement également en Suisse, notamment:
- le Prof. Juraj Hromkovic avec son module « programmer dans les écoles primaires« , adopté dans une trentaine d’établissements en Suisse alémanique
- Jürg Kohlas, qui promeut l’enseignement de l’informatique comme discipline fondamentale au gymnase (=lycée) dans un livre tout récent [2], en recommandant de commencer par former les professeurs, un problème qui semble général…
-
Manuela Barraud et Olivier Jorand proposent des ateliers de « philobotique » combinant programmation et robotique ludique dans la continuation de la « philosphie Logo », mais ils forment aussi des enseignants à leur approche. Outre Logo, ils utilisent le langage semi graphique Scratch développé au MIT pour les enfants dès 7 ans.
Pour ma part, voici les quelques leçons que je tire de ma maigre expérience de l’enseignement de la programmation des deux côtés de la barrière:
- Pas facile d’être prof. quand certains élèves maîtrisent mieux le sujet. Il faut une formation en béton, et si possible conserver le choix des armes…
- La robotique est très motivante pour les jeunes. Avec juste une boucle et quelques tests on peut faire bouger quelque chose de concret alors que sur un écran il faut beaucoup plus de code pour faire quelque chose d’un tant soit peu excitant.
- Mais les robots c’est cher et délicat, alors les environnements virtuels en 3D sont un bon compromis : ils conservent un rapport résultat visuel/code élevé tout en ouvrant des possibilités amusantes comme écraser des poulets sans que la SPA ne proteste (Alice), ou monter un canon sur un robot sans occasionner trop de dégâts (Ceebot, testé avec succès au Festival de Robotique de l’EPFL )
- L’âge minimum pour s’intéresser à la programmation est celui où l’enfant est capable de comprendre la notion de variable. Je dirais expérimentalement vers 10 ans.
Les boucles, les tests, même les sous-programmes et les fonctions peuvent encore passer plus tôt avec des choses comme « POUR CARRE : REPETE 4 [AV 100 TD 90] : FIN », mais c’est peut-être justement une raison de l’échec de la programmation au primaire : sans la capacité d’abstraction nécessaire pour associer une information (nombre, texte etc…) à un symbole, on est très vite limité.
Or cette même notion en mathématiques n’est introduite, sauf erreur, que vers 10-12 ans, et n’est pas assimilée facilement par tous. Imaginez alors la pagaille dans les esprits si le prof de maths dit que « x=2*x-1 a pour solution x=1 » et l’heure d’après celui d’informatique dit que « x=x+1 incrémente la valeur de x » … - Il est très difficile de découpler l’enseignement de la programmation de celui des maths. En particulier pour la robotique ludique (réelle ou virtuelle) on a très rapidement besoin des vecteurs, de la trigonométrie, voire de notions d’intégration et dérivation pour passer des vitesses aux positions ou vice-versa.
Donc je ne crois pas à l’introduction de la programmation au primaire. Et sans programmation, pour quoi « faire de l’informatique » ? Et plus tard, au collège et au lycée, à quoi bon enseigner la programmation si on ne veut pas former des armées de programmeurs ?
La programmation, latin du futur ?
C’est un paragraphe de l’article [1] qui a particulièrement retenu mon attention :
L’idée n’est donc pas de former de futurs programmeurs, mais d’initier les enfants à un langage programmatique** simple pour les familiariser avec la logique informatique. Les adeptes de cet enseignement ne tarissent pas d’éloges sur ses vertus pédagogiques. La programmation apprend à penser un problème jusqu’au bout, à construire des processus qui marchent en apprenant de ses erreurs. (…)
Et encore: le langage informatique enseigne à penser logiquement et systématiquement. «Peu de disciplines nécessitent une telle rigueur mentale», observe Jürg Kohlas. Bien sûr, les langues programmatiques** sont multiples et mouvantes. Mais quand on en a appris une, il est facile de se familiariser avec les suivantes.
Ça ne vous rappelle rien? Ne croirait-on pas entendre parler du latin? «La programmation est bel et bien un langage avec un vocabulaire, une grammaire, une syntaxe, acquiesce Juraj Hromkovic. Mais il y a une grosse différence avec les langues naturelles: la plupart des gens ne savent même pas qu’ils ont affaire à un langage.»
Dans mon esprit de lycéen des années 1980, la programmation n’avait rien, mais alors RIEN à voir avec la langue morte infligée aux fils d’avocats par des curés nostalgiques. Mais avec le recul, je partage le point de vue de gens qui connaissent le latin et la programmation comme Tyler Plack [7],
Ecrire en latin ou programmer un ordinateur requièrent tous deux une compréhension qui dépasse la pensée humaine complexe et la simplifie. De tels processus sont ce qui nous permet de penser clairement; ils font de nous qui nous sommes.
Donc oui, il faut enseigner la programmation aux lycéens, même si « ça ne sert à rien », comme le latin. Faut-il en faire une branche obligatoire du bac ? Certainement, au moins pour ceux qui ne font pas de latin.
Parce que combiner les deux peut donner des idées trop bizarres. Damian Conway par exemple en a été perturbé au point d’écrire un module Perl définissant des alias latins pour tous les éléments du langage [8], ce qui permet de rendre ce code :
use Lingua::Romana::Perligata; maximum inquementum tum biguttam egresso scribe. meo maximo vestibulo perlegamentum da. da duo tum maximum conscribementa meis listis. dum listis decapitamentum damentum nexto fac sic nextum tum novumversum scribe egresso. lista sic hoc recidementum nextum cis vannementa da listis. cis.
parfaitement valide et absolument équivalent à celui-ci:
print STDOUT 'maximum:'; my $maxim = ; my (@list) = (2..$maxim); while ($next = shift @list) { print STDOUT $next, "\n"; @list = grep {$_ % $next} @list; }
Et si après Astérix, la programmation permettait de moderniser l’enseignement du latin ?
Notes:
* l’expression est de Jean-Pierre Archambault, président de l’EPI (qui a un site très moche)
** voilà bien la marque des pédagogues : surtout ne pas utiliser l’expression « langage de programmation » adopté par l’ensemble de la profession… Ou alors la journaliste n’a pas vérifié… (edit : c’est bien ça, Confirmé par anna Lietti…)
Références
- Anna Lietti « Education: sus à l’analphabétisme informatique! » 2013, L’Hebdo No 34, p. 38-41
- Jürg Kohlas, Jürg Schmid, Carl August Zehnder "informatique@gymnase: Un projet pour la Suisse" (2013) NZZ Libro ISBN:9783038238232 WorldCat Google Books (page officielle du livre)
- Steve Furber « Shut down or restart? The way forward for computing in UK schools » January 2012, Royal Society
- Académie des Sciences « L’enseignement de l’informatique en France : Il est urgent de ne plus attendre« , Rapport de l’Académie des sciences , Mai 2013
- Jean-Pierre Archambault « C’est un changement de paradigme que l’informatique devienne une discipline scolaire« , 2012, l’Etudiant
- « Le code deviendra-t-il le latin du XXIe siècle ? » 2011, Framablog (trouvé grâce à l’image du T-shirt)
- Tyler Plack « Logic: Computer Programming & Latin » (sur internet archive)
- Damian Conway, « Lingua::Romana::Perligata — Perl for the XXI-imum Century« , 2000, School of Computer Science and Software Engineering, Monash University (internet archive)
18 commentaires sur “La programmation, latin du futur ?”
l’Hebdo publie un nouvel article sur le même sujet : http://www.hebdo.ch/hebdo/cadrages/detail/l%E2%80%99%C3%A9cole-romande-cette-fabrique-d%E2%80%99analphab%C3%A8tes-num%C3%A9riques . J’y ai posté le commentaire suivant:
Ingénieur en informatique toujours passionné après près de 40 ans de programmation, enseignant occasionnel et ayant un peu réfléchi à la question après notamment après l’article d’ Anna Lietti « Education: sus à l’analphabétisme informatique! » de 2013 dans L’Hebdo No 34, p. 38-41, je ne suis toujours pas convaincu qu’il faille enseigner l’informatique à tous et au primaire. Encore moins qu’il soit encore utile de descendre au niveau des bits et des octets.
La programmation demande bases solides en mathématiques (comme de savoir ce qu’est une puissance de 2 dans le problème des polygones constructibles), de maîtriser la notion de variable algébrique qui ne s’acquiert qu’en 9ème Harmos tout en ne confondant pas l’équation algébrique x=2*x dont la solution est x=0 avec le code informatique x=2*x qui multiplie x par 2 …
Puisque tout le monde utilise un ordinateur, il faut enseigner son utilisation au primaire, en sensibilisant les enfants aux problèmes liés à la vie privée et à la sécurité sur les réseaux notamment. La programmation est une compétence professionnelle qui n’a pas besoin d’être généralisée à moins qu’on veuille en faire le latin du futur.
https://drgoulu.com/2013/09/07/la-programmation-latin-du-futur/
Bonjour je ne savais pas trop où poser la question alors je profite de cet article! C’est celui que j’ai trouvé de + proche, mais ma question n’est pas sur de la programmation, mais du langage + simple (de « développement » on dit je crois).
Perso j’ai juste qqs petites bases de html et de css, et j’ai fait 1 ou 2 petits scripts minuscules. Je dois tout mon peu d’informatique à OpenClassRooms anciennement le SiteDuZéro car sinon je n’arrivais à rien piger.
Voilà j’aurais voulu connaître les balises html voire le css qui marchent dans les commentaires (autrement dit dans Disqus?).
Je pourrais faire des tests dans mes posts mais pas très pratique.
J’ai testé plusieurs codes html/css parmi les principaux mais hors ligne, en enregistrant la page puis en les ajoutant dans le code source d’un commentaire, plus précisément dans le fichier saved_resource(1).html qui se trouve dans le dossier de fichiers qui se crée à l’enregistrement. Presque tous ceux essayés marchent, mais je ne suis pas sûr qu’en conditions réelles en ligne ça continuera de marcher, alors dans de ce post je fais tous les tests d’un coup!
-Si il y a du texte entouré de code mais sans modification ou style c’est que le html ou css ne fonctionnent pas en ligne.
-J’ai mis les balises une seconde fois pour qu’elles soient visibles, mais pour qu’elles ne soient pas transformées par le navigateur et disparaissent j’ai remplacé par [ et ]. Peut-être les caractères spéciaux < et > fonctionne mais comme je n’en suis pas sûr pour l’instant.
-Mon écriture de code n’est pas très correcte (pas valide W3C!), je ne mets pas les » (si le texte entre 2 guillemets n’a pas d’espaces), les ;, les /, ou les espaces, quand ils semblent inutiles.
-But de mini-tuto (de modeste niveau) aussi pour ceux que ça intéresseraient. Le codage c’est facile c’est marrant (enfin peut-être).
********************
Html fonctionnant.
********************
-[b]Gras.[/b]
-[em]Important -> se met en italique.[/em]
-[strong]+ important -> gras.[/strong]
-[u]Souligne.[/u]
-[i]Italique.[/i]
-[s]
Barré.[/s]-[del]
Barré.[/del]-[ins]
Barré.[/ins](Remarque: les balises b/u/i/s sont des balises qu’on n’est plus trop censé utiliser je crois, dépréciées, mais je crois aussi que même si c’est le cas elles passeront sans problème pcq les balises « obsolètes » ne sont pas rendues invalides rapidement sous risque de défigurer pas mal de sites. Néanmoins si on veut que notre mise en forme dure longtemps il vaut mieux faire les choses correctement).
-[mark]Ressortir visuellement-> surligne en jaune.[/mark]
-[a href=https://drgoulu.com]Hyperlien.[/a] => Déjà testé en réel: fonctionne.
-Une ligne horizontale (sans balise de fermeture c’est normal pour certaines balises): [hr]
–
=> [blockquote style=display:inline] en fait. Ça rétrécit, mais permet le tiret devant.
-On peut même mettre une image?
[img src=https://drgoulu.com/wp-includes/images/rss.png alt= »test image rss »]
(Mais sans doute il vaut mieux « Transférer une image », comme indiqué en bas quand on poste un commentaire, ou bien être sûr que celui de chez qui on envoie une image ici est d’accord).
-Et même faire un tableau?
———————————————–
[table style=border-collapse:collapse]
[tr]
[td style= »border: 1px solid black »]Case1[/td]
[td style= »border: 1px solid black »]case2[/td]
[/tr]
[tr]
[td style= »border: 1px solid black »]Case3[/td]
[td style= »border: 1px solid black »]case4[/td]
[/tr]
[/table]
———————————————–
=> Donne:
Case1
case2
Case3
case4
-3 retours à la ligne: [br][br][br]
********************
Html ne fonctionnant pas.
********************
-[cite]Citation n°2.[/cite] (devrait être mise en italique il semble).
-Ceci devrait créer une liste avec une marge et un n° devant chaque élément:
——————-
[ol]
[li]Élément1.[/li]
[li]Élément2.[/li]
[/ol]
——————-
=> Mais non:
Élément1.
Élément2.
-Ceci devrait faire pareil avec une puce au lieu du n°:
——————-
[ul]
[li]Élément1.[/li]
[li]Élément2.[/li]
[/ul]
——————-
=> Mais non:
Élément1.
Élément2.
=> Les 2 créent juste un retour à la ligne dans mon test hors ligne (mais peut-être le code s’écrit entièrement, comme du texte normal, sans s’appliquer, si en fait en réel en ligne).
On peut voir que vous-même le Dr Goulu aviez voulu faire des listes ici avec [ol] et ici avec [ul] mais que ça n’était pas passé.
Mais on peut essayer de le recréer artificiellement, il y a plusieurs manières sans doute et peut-être + légères, mais ici je teste avec des tableaux sans bordures, même si je ne sais pas encore si ils fonctionnent (et j’en profite pour tester les caractères spéciaux avec la puce):
—————————————–
[table style=margin-left:20px]
[tr]
[td style=vertical-align:top]⚫[/td]
[td]Élément1.[/td]
[/tr]
[tr]
[td style=vertical-align:top]⚫[/td]
[td]Élément2.[/td]
[/tr]
[/table]
—————————————–
=> Donne:
⚫
Élément1.
(Ajout). Et on peut voir aussi que grâce au fait que ce soit un tableau, quand le texte passe à la ligne, il ne se met pas sous la puce mais reste aligné sous la ligne précédente.
⚫
Élément2.
********************
CSS fonctionnant.
********************
(Par contre, je l’ai mis à l’intérieur des balises html avec l’attribut style, ce qui est une très mauvaise pratique si on est un webmaster ou développeur qui doit gérer ses pages mais comme ici ce n’est pas le cas et qu’on n’a pas trop le choix…).
-[div style= »background-color:#ddd;border:1px solid blue;border-radius:6px »]Créer un style pour des éléments « block », comme ici je mets un fond gris au paragraphe entier, et une bordure bleue avec des coins arrondis.
-[span style=color:green]Colorer le texte.[/span]
-[span style=background-color:green]Ou le surlignage.[/span]
-[span style= »border: 1px solid #000″]Ou mettre une bordure.[/span]
-[b style=font-style:italic]Combinaison balise gras + valeur italic de la propriété font-style.[/b]
(Précision: span étant neutre on peut mettre em ou strong à la place si on veut dire à Googl€ que ce passage est + important).
[/div (ici fin de la personnalisation du paragraphe entier)]
/! Je rappelle que si qqn veut utiliser un code, il doit transformer les [ et les ] en . /!
********************
Fin.
********************
Peut-être aussi même si ces codes fonctionnent préférez-vous éviter que les utilisateurs en abusent car ça risque de transformer des pages simples et lisibles en films d’horreur.
Mais personnellement jspr qu’au contraire un peu de code pourrait rendre les réponses que je voudrais mettre un peu + lisibles!
Et un petit bug qui vient de je ne sais pas où: si j’écris d’abord mon commentaire dans Gedit (un éditeur de texte de Linux), quand je fais un copié/collé ensuite les sauts à la ligne deviennent 2 sauts à la ligne, je dois enlever ceux en double avant de valider
Sinon aussi Disqus est très peu compatible avec l’extension NoScript dans Firefox même en autorisant tout (à moins que ça vienne d’autre-chose), mais heureusement j’ai un autre navigateur.
Merci et bravo pour tous ces tests…
HTML n’est pas vraiment un langage de programmation (ni de développement). C’est un langage de représentation, ou de description. Je mettrais aussi pdf, latex, markdown et bien d’autres là dedans.
Pour moi (et pour d’autres…) un langage permettant la programmation doit incorporer deux notions : les variables et les structures de contrôle, au moins le test et la boucle. Dans ce contexte, je dirais que CSS est « presque » un langage de programmation. En cherchant là dessus je viens de découvrir à ma grande surprise que CSS3+HTML est « turing complet » http://stackoverflow.com/questions/2497146/is-css-turing-complete !
Disqus limite les tags HTML autorisés à ceux définis ici https://help.disqus.com/customer/portal/articles/466253-what-html-tags-are-allowed-within-comments- pour les raisons que tu évoques : si on permettait tout, ce serait le bordel.
Je leur ai écrit pour demander les listes [ul] et [ol] qui à mon avis sont relativement propres, mais sans réponse jusqu’ici.
je cherche toujours un meilleur système que Disqus. J’ai besoin d’un système de commentaires :
– permettant la hiérarchisation des discussions
– limitant la taille des pavés
– mais mettant tous les commentaires sur une seule page (sinon les liens vers les commentaires se cassent)
– permettant de mettre des images et des vidéos (YouTube) facilement
– me permettant de modérer les premier commentaires
– en option supportant l’identification facebook ou twitter car apparemment certains rechignent à s’identifier
J’ai installé et testé divers systèmes dont https://fr.wordpress.org/plugins/wpdiscuz/ est mon préféré jusqu’ici mais il n’est pas vraiment meilleur que Disqus sur les points mentionnés … Et maintenant que WordPress accepte le markdown, l’idéal serait que Disqus ou WPDiscuz le fassent aussi.
Bref je ne suis pas non plus satisfait, et je continue de regarder si un meilleur système apparaît…
Le contenu web devient de plus en plus dynamique. Les scripts prolifèrent de tous côtés, il va falloir s’y faire. Personnellement j’utilise plutôt un système de black list (Ghostery) plutôt que de white list …
«Pour moi (et pour d’autres…) un langage permettant la programmation doit incorporer deux notions : les variables et les structures de contrôle, au moins le test et la boucle.»
Attention, ce n’est vrai que pour les langages dits «impératifs». Les langages fonctionnels (https://fr.wikipedia.org/wiki/Programmation_fonctionnelle) peuvent travailler sans variables.
Et tous les langages fonctionnels ne sont pas exotiques, certains sont utilisés dans l’industrie.
Une vidéo marrante: https://www.youtube.com/watch?v=FITJMJjASUs
et si enseigner la programmation conduisait à trop d’autonomie ?
ce qui est
1/ dangereux pour ceux qui nous gouvernent (par la consommation et l’emploi)
2/ peu appétissant pour ceux qui sont tombé dans le « tout tout de suite » ci-dessus (cf nathalie « Le principal problème a été de créer une motivation sur la
durée »)
la domotique piétine dans les alarmes et l’ouverture de portails parce qu’il est plus facile de faire soi-même que de faire faire.
malgré la routine…
Bonjour,
Je suis entièrement d’accord avec Prof Gra sur le lien entre mathématique et programmation. La notion de variable n’est pas forcément très intuitive, elle est surtout dépendante du temps, la programmation fonctionnelle est dans ce sens très simple d’accès et proche des concepts mathématiques enseignés au lycée. Mais c’est vrai que cela demande des capacités d’abstraction importante, la programmation orientée objet (la vrai avec passage de message et vrai encapsulation ! pas la programmation orientée classe des langages comme Java et consorts) est plus accessible dans le sens où cette gestion de la valeur des variables est proche de la réalité.
Il y a eu un article récemment sur Medium avec pas mal de ressources sur l’apprentissage de la programmtion classées par âge : https://medium.com/p/a2dc04ea9529
Je trouve que la manipulation « physique » des concepts est importante, voir cet article, succès garantie avec des enfants 🙂 http://drtechniko.com/2012/04/09/how-to-train-your-robot/
Sur le latin de Damien Conway : J’ai eu la chance d’assister à la présentation de Damien Conway en mars dernier à QCon London et je vous invite fortement à la regarder, c’est un excellent orateur et je garde un souvenir très fort de sa présentation qui mêle technologie, culture et humour 🙂
http://www.infoq.com/presentations/fun-with-dead-languages-conway
Google a également une page dédiée au « Computational Thinking » : http://www.google.com/edu/computational-thinking/
Merci Dr Goulu pour cet article de qualité comme toujours 🙂
Jérémie.
Merci à toi pour ces remarques et liens très intéressants !
En particulier https://medium.com/p/a2dc04ea9529 me semble une véritable mine. Je m’y attaque !
Pour répondre à sebpourlespam dans ce commentaire:
https://drgoulu.com/2013/09/07/la-programmation-latin-du-futur/#comment-3702
La phrase «Les mathématiques ont peu à voir avec la programmation si ce n’est la gymnastique intellectuelle ou logique qui découle de ces deux exercices.» est un peu paradoxale. On peut comprendre que ces gymnastiques sont assez différentes, ou au contraire très semblables.
Pour donner une chance aux non matheux de se mettre à l’algo, faut en effet découpler. Mais je pense quand même qu’une bonne capacité d’abstraction permet de mieux s’en sortir en algo, donc en développement. Mais là, LatinDuFutur à raison, l’idée n’est pas d’en faire des développeurs.
J’ajoute aussi pour la culture (parce que je trouve qu’on n’en parle pas assez) qu’un type de programmation assez méconnu continue son chemin, rien ne l’arrêtera, et il est TRÈS proche des mathématiques. Quelques liens:
http://fr.wikipedia.org/wiki/Programmation_fonctionnelle
http://lyah.haskell.fr/
Je prédis que l’Éducation Nationale va encore rater un virage (prémisses: le programme d’ISN).
Je réponds aussi à Nathalie en lui conseillant vivement d’aller voir Blockly, qui a un potentiel énorme. C’est une sorte d’interface à la Scratch, mais qui malheureusement a besoin d’un développeur Javascript pour bricoler des activités du genre:
http://blockly-demo.appspot.com/static/apps/puzzle/index.html
http://blockly-demo.appspot.com/static/apps/maze/index.html
http://blockly-demo.appspot.com/static/apps/plane/index.html
Comme je le disais plus haut, j’ai un projet du genre http://runestoneinteractive.org/ mais sous forme de wiki. J’ai contacté des enseignants de la maternelle au lycée pour glaner des idées, ça pourrait être super, mais faudrait que je sois déchargé pour juste penser à commencer (on peut toujours rêver…).
Après, je ne suis pas 100% pour la programmation graphique. Il faut dès que possible passer au code, chacun à son rythme (en général en cours, je présente Algobox, puis qques semaines après Python, puis je leur dit qu’ils peuvent changer quand ils veulent, utiliser celui qui leur semble le plus adapté).
Au passage, quelques liens qui ont un rapport avec cette discussion, glanés sur Twitter:
http://blog.jenniferdewalt.com/post/60799862146/week-23-changes
http://business.time.com/2012/06/08/codecademy-founder-why-everyone-should-learn-programming/
http://jeremykun.com/2013/02/08/why-there-is-no-hitchhikers-guide-to-mathematics-for-programmers/
Bonjour,
J’ai fait du logo en primaire, à 8 ans en CE2, puis du QBasic au collège, puis du turbopascal au lycée … . Les souvenirs sont flous, mais disons qu’aujourd’hui je n’ai pas de souci avec les notions informatiques. Surement aussi parce mon cursus est scientifique et que je conçois des solutions SIG aujourd’hui … En tout cas j’approuverais que mes enfants suivent des cours de logo en primaire avec des profs compétents et pédagogue comme j’ai eu !
Etant persuadée de l’intérêt d’apprendre quelques bases de programmation à mes enfants, j’ai fait quelques tentatives dans ce sens à la maison. Le principal problème a été de créer une motivation sur la durée.
La robotique de salon est décevante (et coûteuse), et on se lasse en fait très vite de voir le robot faire des allers et retours sur le parquet.
Beaucoup de sites et de manuels proposent de créer des jeux; malheureusement, pour une génération qui a passé des heures sur Age of Mythology, le projet (déjà bien compliqué) consistant à recréer une version de Pong (même avec de la couleur et un joli ballon) tombe rapidement à plat. Je pense que c’est peut être une des explications à l’abandon des pratiques des années 80, où il n’y avait pas de jeu ni d’utilisation domestique de l’ordinateur très sophistiquées.
Autre écueil: taper des lignes de codes demande une rigueur qui n’a cours dans aucun autre domaine (la ponctuation de votre thème latin n’a pas vraiment d’ importance) et avant 12 ans environ, ça coince.
Je n’ai pas essayé Scratch (j’aurais sans doute du commencer par là), le côté « truc spécial pour enfants » avec son look jouet 1er âge ne me paraissait pas vraiment attractif, un peu comme « Le Petit Quotidien » dont ma progéniture s’est vite désintéressée. L’apprentissage de la lecture pose d’ailleurs un peu les mêmes problèmes : on commence à un âge où le décalage entre les textes qui les intéresseraient (Harry Potter) et ceux qu’ils sont d’abord capable de lire (un album pour 3 ans) est énorme, il y a un cap difficile à passer (faut il se résigner à être un peu coercitif ?). L’idée de commencer le plus tôt possible, à un âge où ils sont plus réceptifs, est sans doute à creuser.
«Il est très difficile de découpler l’enseignement de la programmation de celui des maths.»
Cela me semble faux et même une erreur fondamentale de vouloir faire cohabiter math et info dans l’enseignement de la programmation. Les mathématiques ont peu à voir avec la programmation si ce n’est la gymnastique intellectuelle ou logique qui découle de ces deux exercices.
En programmation, on réfléchi essentiellement en terme d’itérations (boucles simples sans grandes notions de logique) et de modélisation de processus sous forme d’objets. Apprendre correctement un langages de programmation est donc plus proche de la linguistique ou de la sémantique que véritablement de la logique pure.
De la même manière qu’un écrivain saura coucher sur le papier un retranscription fidèle de la réalité ou de ses émotions grâce à la grammaire et à la rhétorique, un bon développeur saura retranscrire fidèlement les besoins métiers.
Seule la grammaire différencie l’écrivain et le développeur (j’avoue avoir une vision un peu romanesque de mon métier Hu Hu, me considérant comme un « artisan » codeur, au sens noble)
En associant math et programmation dans l’étude d’un langage, on sous entend que la logique est l’aspect essentiel dans la programmation alors que ce n’est qu’un des aspect, pas le plus important de plus mais probablement le plus ennuyeux et rebutant pour un profane.
L’essentiel du travail d’un développeur se consacre de nos jours simplement à modéliser des objets, les assembler et les faire interagir entre eux. Un peu comme un jeu de légo, c’est passionnant dans un sens car cela nécessite de faire appel à son imagination pour trouver toutes sortes d’objets à assembler, comme un mécanicien qui fabriquerait un moteur à partir de rien. On s’évertue à appliquer des patrons de conception et la logique intervient finalement assez peu.
En plus de 15 ans de développement, je n’ai pratiquement jamais eu besoin d’utiliser véritablement les mathématiques (bien évidemment, quelques factorisations/modulos par ci par là mais ça ne va jamais bien loin).
Les mathématiques ne sont pas l’essence de la programmation, inutile donc de connaitre les mathématiques pour programmer. En, revanche, la programmation peut servir à mettre en oeuvre une fonction mathématique.
Ce que je remarque c’est que les jeunes développeurs fraîchement diplômés connaissent un peu l’algorithmie mais pratiquement jamais l’orienté objet et c’est une grosse lacune car on se retrouve avec des programmes fait de manière procédurale, à l’algorithmie complexe et impossible à maintenir. C’est logique à partir du moment ou on apprend la programmation de manière académique et factorisant les nombres premiers par exemple plutôt que de modéliser une voiture avec 4 roues, un moteur un accélérateur et un frein.
Bref, je considère que le système de formation des programmeurs n’est pas le bon. Il faut pratiquement une dizaine d’années à un programmeur pour modéliser correctement. Malheureusement après 15 ans d’expérience, un programmeur est considéré par les décideurs comme trop vieux/cher pour cette profession…. Ce n’est pas un métier que je conseil pour cette raison même si il est passionnant.
Enfin là ça n’est pas de ça dont il est question, puisque l’on ne parle pas de former des développeurs, mais plutôt d’utiliser la programmation comme une façon de faire pousser les jeunes esprits.
Le sujet est très intéréssant ! Une part de mon travail ce situe autours de l’enseignement de la programmation (et non pas de l’orthographe, donc je m’en excuse d’avance !)
en première ou deuxième année d’université
Le faible niveau d’interet des étudiants, y compris ceux dont c’est la spécialité est édifiant. Les équipes pédagogiques font au mieux, mais j’ai l’impression qu’il est déjà trop tard, ils n’ont plus la souplesse et la curiosité. Je pense que plus tôt la programmation est enseigné mieux c’est (comme une langue vivante). Alors certes des concepts abstraits manquent en début de primaire, mais je en suis pas sur que ce soit si génant. En fait, il peut même s’agir d’un support pour les introduire.
Quant à l’interet, je l’entrevois autours de moi en permanence ! La programmation permet l’indépendance et l’automatisation y compris dans des métiers ou ce n’est pas attendu. Les surcouches logicielles point&click sont pratiques pour les échanges de contenus, mais finissent toujours a terme par être un frein tellement la diversité des usages est grande. En particulier, savoir écrire un script rendrait tellement de services, que je suis surpris qu’il ne soit pas déjà un prérequis dans la majorité des emplois de bureautique ! L’abscence de connaissances en programmation devrait je pense plus être vu comme une forme d’analphabetisme moderne. Mes collègues n’approuvent pas mon point de vue. Au contraire, la plupart pensent qu’a terme tout pourra être fait avec de bons outils, sans pondre une ligne de codes.
Dans ma jeunesse des années 80, en France, j’ai bénéficié du plan informatique pour tous.
Me souviens de la directrice de l’école primaire qui devait avoir dans les 50 piges nous parler de bits (et qu’il ne fallait pas rire même si cela ressemblait à un autre mot français que nous connaissions 🙂 ), de print, de input, de ROM, de RAM.
Alors certes cela a permis de subventionner Thomson pour des ordis chers pour ce que c’était, mais nous avons pu apprendre les concepts de base de la programmation et de ce qu’est un ordinateur, et nous avions 7 ou 8 ans.
Et maintenant, plus rien n’est fait à l’école.
Ma fille est épatée que je « travaille dans l’informatique » car c’est compliqué les ordinateurs. En 5 minutes, je lui ai fait un script Python qui permettait de lui afficher son prénom et son âge en quelques lignes, et ce pour démystifier le côté magique.
C’est assez paradoxal : A mon époque nous n’avions pas d’ordi à la maison tellement c’était cher mais nous savions (un peu) programmer à 10 ans. Maintenant, nous avons des PC pour le prix de quelques pleins d’essence, des environnements de développements gratuits téléchargeables sur le Net, des dizaines de sites expliquant la programmation, mais les gamins n’ont pas une once de connaissance en programmation.
Bonjour,
Je suis aussi partisan de «l’algo comme latin», mais j’ai quelques remarques concernant cet article:
0) «Des précurseurs comme Seymour Papert (élève de Jean Piaget) se sont intéressés dès les années 1960 à la pédagogie de l’informatique et inventé des outils comme le langage Logo pour initier à l’algorithmique et à la programmation procédurale dès l’enfance.»
Pas vraiment. Plutôt que «pédagogie de l’informatique», je dirais «pédagogie PAR l’informatique». De même, le but du Logo est plus large que l’initiation à l’algo et à la prog: Papert vise, entre autres, à la découverte des maths et de la réflexion en général, mais «de l’intérieur». ( http://profgra.org/lycee/fiche_Jaillissement_de_l_esprit.html )
1) «Formation en béton»
Tout à fait. Je crois qu’on vit un tournant concernant les générations de profs: ceux qui on «du s’y mettre» partent à la retraite, et sont progressivement remplacés par ceux qui «sont nés dedans». Ça devrait aller de mieux en mieux du côté de la fréquence des allusions à l’algo dans les cours de maths.
D’un autre côté, la pratique de l’ordinateur n’est pas la connaissance de la science des algorithmes. Beaucoup de chemin reste à faire.
4) «L’âge minimum pour s’intéresser à la programmation…».
Pas du tout d’accord. J’ai eu la chance de commencer le Logo en CM1, et pense qu’avec des outils comme Blockly, on peut descendre encore. J’ai un projet (sur la comète) de site pédagogique communautaire allant de la maternelle à la fac utilisant Blockly et Brython (si au passage vous êtes intéressé, vous pouvez me contacter via mon site). Pour moi il n’est jamais trop tôt, ni trop tard. Ça dépend juste des disciples.
5) «Il est très difficile de découpler l’enseignement de la programmation de celui des maths.»
C’est très vrai (un prof de maths ne peut pas dire le contraire!), mais il ne faut surtout pas restreindre les objets d’étude aux maths ou aux robots. Il me semble très important de travailler sur le texte: compter les lettres, les mots, générer du texte aléatoirement, faire des jeux basés sur la langue…
Merci pour cet article intéressant!
chri
Suite à un billet http://freakonometrics.hypotheses.org/4733 publié il y a quelques mois, j’ai découvert Scratch avec mon fils (10 ans), et ce langage est fabuleux !
La meilleure réflexion que je connaisse sur ce sujet est celle de François Élie :
Quelle école pour la société de l’information ? (lien direct vidéo)