Commentaires : Apprendre à coder avec des héros de Star Wars

starwars
programmation
lucasfilm
Tags: #<Tag:0x00007f92093c3e60> #<Tag:0x00007f92093c3d20> #<Tag:0x00007f92093c3be0>

#1

La programmation informatique ne s’enseignait pas uniquement il y a bien longtemps, dans une galaxie lointaine, très lointaine. Elle s’apprend aussi de nos jours, sur notre bonne vieille Terre. Et pour inciter les jeunes à se lancer dans l’aventure, quoi de mieux que les héros de Star Wars pour les accompagner ? C’est l’idée qui se cache derrière la dernière initiative lancée par Code.org, en partenariat avec Lucasfilm. Sur le site Code.org, il est en effet possible de découvrir la…. Publié sur http://www.numerama.com/tech/130283-apprendre-a-coder-avec-des-heros-de-star-wars.html par Julien Lausson


#2

Les blocs visent à faciliter la compréhension de la structure d’un code en JavaScript

=> Les blocs visent à faciliter la compréhension de la structure d’un programme en JavaScript

une organisation chargée de pousser les jeunes vers la programmation en démocratisant l’apprentissage du code

=> une organisation chargée de pousser les jeunes vers la programmation en en démocratisant l’apprentissage.


#3

Tiens, je l’avais raté celle là…

Dommage pour toi, c’est rentré dans le langage courant des professionnels du milieu depuis plus de 40 ans. Mais bon, libre à toi de continuer à branler des mouches, hein, après tout, elles aussi ont le droit de prendre du bon temps.


#4

Ça fait longtemps que l’on a pas vu @Heret1 dans le coin.

À l’époque, il faisait la remarque à chaque article.
Mais c’est quand même vrai que les langages de haut niveau actuels n’ont pas grand chose à voir avec le codage des origines.


#5

Méé heu, laisse-moi troller tranquille toua ;)

Sérieusement, c'est juste de l'argo, rien de plus, pas de quoi casser 3 pattes à un canard. Vous pouvez dire coder les mecs, on comprendra.


#6

C'est Scratch qui est utilisé ?

Si ça peut attirer des gens vers Scratch c'est pas mal :slight_smile:
Je pense que c'est sympa pour découvrir l'algorithmie et les principes communs à énormément de langage de programmation (structure conditionnelle, boucle, fonction, variable, etc.).


#7
  • et puis aucun rapport avec javascript... mais java tout court.

#8

JavaScript ? Ce langage non typé, qu'on retrouve dans la plus part des Web app soufrant du syndrome de la programmation en spaghetti ? Un langage un peu plus sérieux et rigoureux et bien documenté comme Scala ou Java ça ne serait pas mieux plutôt que d'apprendre un langage qui n'incite pas à programmer correctement ?
Sans déconner avec cette mode de JavaScript et de NodeJS, les développeurs qui font de la maintenance vont le payer cash avec la dette technique qui s'annonce.


#9
  • je suis mitigé… un truc comme scratch, c’est un mode de dev qui incite/apprend à creer un casse-brique qui pèse 15 Mo et qui demande le dernier Android et un 2 Go de ram. -> la plaie de l’informatique.

  • est-ce qu’on a autant besoin de programmeurs ? est-ce que “l’épuration naturelle rebarbative” par la programmation de qualité avec un crayon et Gedit, n’est pas finalement gage de qualité, primant sur la rapidité ?


#10

On peut s'initier aux principes de la programmation par curiosité sans vouloir devenir programmeur pour autant.


#11

Je suis d’accord, mais tu sais, on faisait la même chose avec Logo dont le but était d’apprendre tout en s’amusant. Là, tout ce que je vois, c’est un cliquo-glisso-drome. C’est de l’assistanat et j’ai bien peur que ça ne crée que des mauvais programmeurs qui ne savent pas s’adapter et sont découragés dès qu’il s’agit de passer aux choses sérieuses.

Ca me fait un peu penser à ces types qui font des millions de vidéos sur Youtube pour expliquer des trucs qu’on peut décrire en un paragraphe. Je crois bien que c’est ce qui me fait le plus sortir de mes gonds depuis pas mal d’années : chercher des infos sur un procédé et ne trouver qu’une putain de vidéo pour neuneus. Et puis dans le genre gaspillage d’espace et de bande passante, c’est juste prodigieux.

Bref, pour un programmeur qui a de la bouteille, tout cela ne donne pas l’impression de relever le niveau pédagogique, au contraire.


#12

pour un programmeur qui a de la bouteille

Votre avis est biaisé car vous vous placez en programmeur expérimenté.

Je programme aussi et je ne pense pas que pour initier un enfant à la programmation il soit bon de lui apprendre l’assembleur ou bien les pointeurs du langage C.

Après pour des personnes plus âgés je ne pense pas que Scratch soit une bonne manière de commencer.


#13

Là, tu touches précisément du doigt deux points cruciaux en ce qui me concerne. Aussi je vais te faire part de mon expérience : j’avais moins de 10 ans quand j’ai commencé… en assembleur (8048 sur Videopac, je l’ai déjà évoqué plusieurs fois). S’en est suivi environ 10 années de pratique de divers assembleurs, Z80, 68000 (bénit soit-il celui-là), x86, 65816… je séchais même les cours pour ça (je dis pas que c’est bien, c’est juste pour donner une idée du niveau de motivation que j’avais) parce-que j’étais aussi passionné de jeux vidéo et par la scène démo et que pour faire quelque-chose de suffisament optimisé à l’époque (80’s), on avait guère le choix pour pondre des trucs qui dépotent.

Pourquoi je raconte ça ? Parce-que j’étais peut-être précoce, mais pas plus malin que les autres. Mais attend, c’est la suite le meilleur. J’ai grandi avec les micros, puis fin des années 80, un ami qui était à l’université (j’ai même pas le BAC soit dit en passant) m’a dit en substance : met-toi au C, sérieux, tu me remercieras plus tard. Pour moi, c’était hors de question, car les compilos n’étaient toujours pas assez optimisés pour rivaliser avec quelqu’un qui maitrisait l’assembleur. Mon ami était d’accord avec cette argumentation, mais je ne sais comment, il est parvenu à me convaincre de bouffer son K&R pour m’initier au C, moi, le résistant de base à la vindicte universitaire ;)

Le C est un macro-assembleur. Les pointeurs ? Je te garantis que c’est comme une lettre à la poste quand tu connais l’assembleur. Peenuts. Pourtant, j’ai appris bien plus tard qu’il est universellement reconnu que les pointeurs de C sont une des principales difficultés rencontrées par ceux qui commencent directement par C. Et là, je me suis posé la question : pourquoi c’était aussi facile pour moi ?

Il y a une légende urbaine au sujet de l’assembleur : ce serait un langage difficile. C’est strictement faux. C’est l’un des plus simples qui soient (mais comme tout le reste, il faut bien-sûr de la motivation). La vérité, c’est que c’est fastidieux pour faire le moindre truc, mais tout est là. En fait, ça t’apprend comment fonctionne réellement la machine, tu lui causes directement dans son langage et ça n’a pas tellement changé dans le principe. L’assembleur aujourd’hui et devenu à peine plus complexe. Certes, et notament pour l’optimisation, même un gars qui maîtrise ce langage aura bien du mal à faire aussi optimisé qu’un compilo de nos jours car les caches, pipelines et tout le tintouin prédictif qu’on y a mit dedans font qu’il y a tellement de paramètres à prendre en compte qu’il est devenu quasi-impossible de rivaliser avec les compilos, toujours plus performants dès qu’il s’agit de prendre en compte les moindres paramètres techniques d’une babasse pour optimiser. Mais l’assembleur reste grosso-merdo le même, et sans parler d’optimisation, c’est simple.

Je ne m’étalerai pas sur les détails d’une opportunité que j’ai su saisir pour faire carrière sans diplôme. Mais je peux t’assurer un truc : je suis rentré dans une industrie où les mecs étaient BAC + je sais pas combien, mais ils n’avaient jamais fait d’assembleur (je sais qu’à un moment, il a été décidé qu’on apprendrait plus l’assembleur dans le cadre universitaire et qu’on apprendrait directement le C, voire Java plus tard, etc…). J’étais parti pour bosser avec des gars diplomés qui m’apprendraient des trucs que je savais pas et c’est tout le contraire qui s’est passé : dans cette industrie (le jeu vidéo), on avait pas le choix : c’était en assembleur car il fallait que ça dépote. Au bout d’un moment, je me suis retrouvé à retrousser mes manches pour maintenir et améliorer un moteur que presque personne n’osait toucher. Dans cette boîte, j’ai dû bosser avec peut-être une trentaine d’autres programmeurs au fil des années, et j’en ai rencontré qu’un ou deux qui savaient ce qu’il faut savoir pour assurer.

Bref, loin de moi l’idée de prétendre être un exemple. J’admet volontier ne pas avoir eu un parcours “normal”, mais j’ai beaucoup à témoigner et j’en ai tiré des leçons au point que je pense parfois écrire un livre sur le sujet ! Maintenant, pour en revenir à l’article et mon argumentation initiale : c’est de l’assistanat néfaste et je n’en démord pas. Bien-sûr, sans obliger les gamins pas forcément aussi motivés que moi à dompter la machine, on peut tout de même fortement regretter qu’on ne leur enseigne pas les bases de fonctionnement des machines, le binaire et l’hexadécimal, les opérations logiques (y’en a pas 36 : OR, AND, XOR, NOT et vogue la galère), etc… pour moi, on élève du mauvais codeur à tour de bras et cela ne m’étonne guère que l’industrie dans son ensemble parle de pénurie depuis de nombreuses années… il me suffit de lire du code industriel :(

Pour ma part, moins j’ai à utiliser une souris quand je programme et plus je suis efficace (sans doute la raison pour laquelle je m’accroche toujours autant à Emacs d’ailleurs).


#14

Vous ne m’apprenez pas grand chose puisque nous avons la même base de connaissance (je finis mes études en “”“sytème embarqué”"" en septembre si tout va bien). Je reviendrai toutefois sur quelques points.

met-toi au C, sérieux, tu me remercieras plus tard

Le C étant mon langage favori je ne peux qu’acquiescer.

Je te garantis que c’est comme une lettre à la poste quand tu connais l’assembleur

J’approuve, en général savoir ce qui se passe “en profondeur” permet de mieux comprendre.

Il y a une légende urbaine au sujet de l’assembleur : ce serait un langage difficile. C’est strictement faux.

Tout dépend de l’assembleur. Autant les RISC (comme ARM et MIPS) sont assez faciles à comprendre et utiliser. Par contre les héritiers CISC (comme x86) je ne suis pas fan du tout.

je sais qu’à un moment, il a été décidé qu’on apprendrait plus l’assembleur dans le cadre universitaire et qu’on apprendrait directement le C, voire Java plus tard, etc…

De ce que j’en ai vu c’est faux. Souvent les étudiants commencent par un langage un peu “haut niveau” comme Python ou OCaml, enchaînent sur le C passent sur l’assembleur et font ensuite du Java.

on ne leur enseigne pas les bases de fonctionnement des machines, le binaire et l’hexadécimal, les opérations logiques (y’en a pas 36 : OR, AND, XOR, NOT et vogue la galère)

Ce que vous dites est faux puisque ces bases sont encore enseignées en fac.

Bien-sûr, sans obliger les gamins pas forcément aussi motivés que moi à dompter la machine

Ce n’est pas une question de motivation c’est juste que ça n’attire pas. Je pensais que faire du noyau était sexy, nuance c’est sexy dans ma tête. Un autre exemple, je tenais un stand pour présenter mon diplôme et un étudiant en passant m’a dit “Oh c’est de l’électronique” j’ai eu l’impression que j’avais violé des enfants à l’entendre.

Les stands qui attiraient étaient ceux des diplômes orientés IA, Big Data et sécurité.


#15

D'expérience, c'est plutôt le contraire. Les RISC ont tendance à être plus velus dès qu'il s'agit d'optimiser, on peut faire plus de choses en une seule instruction, mais dans le principe, c'est kif-kif.

Et puis franchement, si ton expérience CISC est le x86, t'es loin d'avoir connu le meilleur, c'est juste dégueulasse. Le 68k était bien mieux fichu à tous les niveaux (seulement voilà, Intel a fini par gagner la guerre et ce n'est pas parce-que les codeurs les ont ensensé !).

Je trouve que ce n'est pas du tout dans l'ordre des choses. Et puis ce n'est pas ce qu'on m'en a dit au fil des années. Mais comme je l'ai signalé, je n'ai pas fait l'université et je ne peux qu'en conclure que ça dépend des cursus ou des lieux, car ceux que je daigne écouter ne sont pas du genre à raconter n'importe quoi.

(pitié, tutoies-moi, je suis peut-être un poil vieux, mais j'ai su rester jeune dans la tête :) ) Bref, tu m'en vois rassuré, seulement voilà : le code industriel que je lis tend souvent à me démontrer le contraire. Non pas que les gars ne l'utilisent pas, mais ils n'en ont manifestement pas tiré tous les enseignements, ou pas assez de pratique.

Cela dit, je ne citais que des exemples, on peut aussi parler des modes adressages, de la pile, des registres, des flags... tout cela semble bien éloigné des langages dits évolués, mais en avoir conscience permet généralement de pondre du code C ou C++ efficace (ou tout du moins, avec les compilos qui optimisent à mort aujourd'hui, digeste pour celui qui y entrave quelque-chose).

Maintenant, j'en conviens volontiers, je suis de la vieille école (et celle des autodidactes qui plus est). Commencer par l'assembleur m'a grosso-merdo tout appris et j'imagine mal programmer comme je le fait aujourd'hui sans avoir maitrisé ces bases.