Forum Programmation.autre Quel langage pour initier un enfant de 10 ans à la programmation

Posté par .
Tags : aucun
12
17
oct.
2012

Bonjour,

Ma fille (suite à un cours de techno sur les ordinateurs) souhaiterait apprendre quelques rudiments de programmation. Et aussi comprendre un peu mieux comment fonctionne un ordinateur.
Elle nous a demandé de lui apprendre à programmer. (nous = ses parents)
Problème : quel langage?
Nous avons exclu tout de suite le C, le Perl, le Java ;)
Plus généralement, son père penche pour un langage procédural (type Pascal ou Basic), mais lequel?
Moi plutôt pour un langage fonctionnel (Logo?), qui sont pour moi faciles à comprendre, et permettent ensuite de passer à l'objet si on le souhaite.
Nous nous posons aussi la question des langages objets (mais cela ne me semble pas aller dans le but recherché).

Qu'en pensez-vous? Avez-vous une expérience à ce sujet? Des arguments?
Des sites ou des bouquins avec des exemples?
Et aussi des livres à conseiller (sur le fonctionnement interne des ordinateurs…)?

PS : à propos de notre fille : elle est en 6ème, elle a bientôt 11 ans, elle aime bien les maths, le français, l'anglais (donc ce n'est pas un problème si ce n'est pas un langage "francisé" je pense), la musique. Elle joue encore beaucoup (jeux vidéos, stratégie, jeux de construction…)

  • # Le début du début...

    Posté par . Évalué à 2.

    Peut-être quelque chose comme ca : http://info.scratch.mit.edu/About_Scratch ?

  • # peut être Python ?

    Posté par . Évalué à 8.

    J'aurais tendance à proposer Python. Il n'impose pas de paradigme donc tu peux faire du procedural, fonctionnel ou objet. La syntaxe est relativement clair. Ça oblige a prendre de bonnes habitudes au niveau indentation. Tu n'as, comme tous langage de haut niveau, pas les soucis de mémoires. Et enfin entre la lib standard & les lib tierces, tu peux facilement en trouver une simple pour commencer permetant d'obtenir des résultats graphiques. Je pense par exemple à Turtle inclu dans la lib standard http://docs.python.org/library/turtle.html

  • # Pas un problème de langage !

    Posté par (page perso) . Évalué à 3.

    Je ne pense pas qu'il faille penser programmation == langage.
    Je pense que le plus important est de faire comprendre non pas la partie programmation, mais de faire comprendre que la partie programmation est seulement une partie dans la résolution de notre problème au sens large.

    Un problème de maths, physique, … peut être divisé en plusieurs parties qui appelle plusieurs questions :

    Le contexte :
    - Quelle est le problème ? Qu'est-ce que je cherche ? Que me demande-t-on ?

    La formulation du problème :
    - Quels sont les outils dont je dispose ? Quelles sont les moyens dont je dispose ? Quelles sont les données que j'ai déjà ? Quelles sont mes entrées ? Quelles seront mes sorties

    La résolution :
    - Programmation, calcul…

    La réponse :
    Est-ce que je réponds comme il faut ? et aussi à quoi ça sert ?

    Le langage n'intervient que dans la partie programmation. Je pense qu'un langage pas trop verbeux et sans trop d'interface comme python3 peut être très sympa.

    Un ted-talks très sympa pour ça :
    http://www.ted.com/talks/lang/fr/conrad_wolfram_teaching_kids_real_math_with_computers.html

    La réalité, c'est ce qui continue d'exister quand on cesse d'y croire - Philip K. Dick

    • [^] # Re: Pas un problème de langage !

      Posté par . Évalué à 2.

      j'ajouterais apprendre à decouper son probleme en sous probleme plus simple.

      je me souviens d'un prof d'algo qui nous expliquer comment decomposer le probleme "ouvrir la porte" pour un robot.

      • s'approcher de la porte
      • saisir la poignée :
        • approcher la main de la poignée
        • fermer la main sur la poignée
      • tourner la poignée
      • tirer/pousser la porte

      chacune de ses etapes devant etre analyser/programmer

    • [^] # Re: Pas un problème de langage !

      Posté par (page perso) . Évalué à 5.

      Sauf… qu'il est généralement plus sympa d'apprendre en pouvant mettre en œuvre que de faire de la théorie pure. Si on trouve un langage qui se rapproche de l'algorithmique, on a tout gagné.

      Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

  • # Mes 2cts

    Posté par . Évalué à 2.

    Puisque Scratch et Python ont déjà été évoqué, il y a aussi Grace qui est fait pour des étudiants (mais pas pour des enfants de 11 ans): http://gracelang.org/

    Ayant commencé de bonne heure, je pense que l'important est le coté ludique de l'apprentissage: dans mes premiers cours ce qui nous a le plus plut c'était de dessiner une maison avec un programme.

  • # Un langage scripté + gui

    Posté par . Évalué à 4.

    Bonjour,

    Je ne vais pas te faire une réponse toute faite mais plutôt parler de ma propre expérience car je me suis intéressé à la programmation sensiblement vers le même âge et malheureusement dans mon entourage personne était la pour m'aider.

    -MyLife-
    Je me souvient qu'à époque je ne comprenais strictement rien aux livres ou magazines parlant de programmation, certainement avec du recul car ils demandaient de connaitre déjà au moins les bases de l'algorithmique, soit demandaient d'avoir des compilateurs, environnements de dev et que c'était pour moi des choses assez abstraites et pas facile à comprendre et à prendre en main.

    Finalement ce fut quelque chose de très accessible qui m'a permit de commencer facilement: Le HTML + javascript.
    En effet il suffisait d'ouvrir une page sur le navigateur et afficher la source pour voir comment ça fonctionnait, et à l'époque le javascript se résumait souvent seulement à quelques lignes perdues au milieu de code HTML. Et surtout il suffisait d'enregistrer un fichier en .html pour pouvoir tester et avoir le résultat instantanément! En lisant pas mal de code source de pages et m'aidant des sites sur le javascript j'ai pu commencer et les première lignes de code furent presque magiques ;)

    Ensuite vers 13 ans j'ai eu ma période VB (désolé) qui me permettait de faire très facilement des GUI, l’événementiel est très facile à appréhender.
    Puis à partir de 14 15 ans j'ai fais beaucoup de C, et appris les rudiments de l'assembleur, et c'est vraiment avec ces deux langages que j'ai compris le fonctionnement de la mémoire, du processeur, des threads et du système. Puis est venu Linux, et ce fut l'éclate totale.
    -/MyLife-

    Avec le recul aujourd'hui je pourrais te donner quelques conseils:
    - Le langage n'est pas ce qui est le plus important, bien qu'il faille éviter les concepts trop abstrait.
    - Avoir quelque chose qui ne demande pas 500 lignes avant d'avoir un résultat concret et donc plutôt vers un langage scripté.
    - Très facile et rapide à tester pour que ce soit ludique, ne pas se contenter d'afficher des lignes dans un terminal car ça peut être démotivant.

    Je penses toujours que le javascript aujourd'hui, en utilisant une syntaxe simple permet toujours cela, mais il y a aussi le python qui permet de faire beaucoup des choses facilement et rapidement.

    • [^] # Re: Un langage scripté + gui

      Posté par . Évalué à 2.

      Je suis assez d'accord. J'aimerais conseiller Python parce que c'est vraiment bien, mais finalement, je pense que le html + js permet de voir ludiquement 2 aspects intéressant.

  • # CamlLight

    Posté par . Évalué à 1.

    Si elle aime les maths, CamlLight c'est écrire des maths en anglais. C'est fonctionnel, il y a un interpréteur (compiler puis exécuter un programme peut être frustrant au départ, alors que l'interpréteur permet d'essayer plein de choses rapidement). Mais de là à dire que c'est adapté à un enfant de 10 ans …

  • # Geek toutes !

    Posté par . Évalué à 8.

    Ma fille (suite à un cours de techno sur les ordinateurs) souhaiterait apprendre quelques rudiments de programmation. Et aussi comprendre un peu mieux comment fonctionne un ordinateur.
    Elle nous a demandé de lui apprendre à programmer. (nous = ses parents)
    Problème : quel langage?
    Nous avons exclu tout de suite le C, le Perl, le Java ;)

    Il ne reste que l'assembleur ! :-)

    • [^] # Re: Geek toutes !

      Posté par (page perso) . Évalué à 3.

      Sérieusement, j'ai commencé à 11 ans avec de l'assembleur et un bouquin en anglais.
      Pour apprendre "comment fonctionne un ordinateur" y'a pas mieux.
      Par contre pour créer un programme "utile", c'est autre chose.

      • [^] # Re: Geek toutes !

        Posté par . Évalué à 5.

        Je suis assez d'accord. J'ai moi-même fait la même chose, mais après m'être beaucoup amusé avec le Basic de mon 8 bits !

        Non pas que ce soit un passage obligé pour apprendre la programmation mais se lancer directement dans l'assembleur ou le C, ça demande beaucoup d'investissement, de rigueur tout en masquant d'emblée le côté ludique de la chose. Commencer par un « PRINT "Bonjour" » et un « PLAY "DOREMI" », c'est très stimulant tout en restant très simple et ça donne envie d'aller plus loin.

        Par contre, dès que la personne maîtrise un tant soi peu ses programmes et qu'elle peut écrire une trentaine de lignes sans difficulté, il ne faut pas hésiter à se lancer directement dans l'assembleur. Tout le reste est beaucoup plus facile après.

        @FLO :
        Je te conseille aussi d'utiliser des émulateurs en ligne comme CPC Box

                              http://www.cpcbox.com/
        
        

        Ensuite, dans « Choose Configuration », tu choisis « Boot : CPC 6128 », et tu essaies les commandes suivantes :

        PRINT "BONJOUR"
        
        SOUND 1,400,100,13
        SOUND 1,267,100,13
        SOUND 1,200,100,13
        
        

        … et :

        FOR I=&HF000 TO &HFF00:POKE I,85:NEXT
        
        

        … histoire de trafiquer directement la mémoire vidéo, chose que l'on ne peut plus faire facilement aujourd'hui. Ensuite, tu lui dis que c'était l'un des ordinateurs de la génération de ses parents. :-)

  • # Mais pourquoi ?

    Posté par . Évalué à -1.

    Nous avons exclu tout de suite le C, le Perl, le Java ;)

    autant le Java je peux comprendre, le perl ça passe encore, mais le C?

    Personnellement j'ai commencé sur le langage des TI-82, puis 92 (auto-didacte) et un poil pascal (scolaire) plus des truc avec des API (graphset)

    mais le C tant qu'on reste dans le simple pour la base sans interface graphique c'est super simple. Les struc, et autre c'est pas mal, et on peut très bien faire sans pointeur (c'est avec ce langage que l'IUT a commencé la programmation).
    Si tu as peur des char* tu peux jouer avec les string et utiliser le c++ sans les classes, avec en plus le coté I/O avec std::cout et std::cin assez zimple.

    Surtout avec la dernière mouture du langage avec le foreach ;)

    Pas d'objet ça exclu c++ + Qt.

    Ensuite comme beaucoup de fois, je dirai que ça dépend de ce qu'elle souhaite faire. J'ai des bons souvenir de Caml, mais ça demande une façon de raisonner que tout le monde n'a pas.

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: Mais pourquoi ?

      Posté par (page perso) . Évalué à 2.

      c'est avec ce langage que l'IUT a commencé la programmation

      Ça m'étonnerait ! En 1966, le C n'existait pas.

      • [^] # Re: Mais pourquoi ?

        Posté par . Évalué à 2.

        Oui bon c'est avec ce langage que l'IUT que je faisais initiait les étudiants à la programmation (avec des cours d'algo à coté faut pas déconner)

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: Mais pourquoi ?

      Posté par (page perso) . Évalué à 3.

      mais le C tant qu'on reste dans le simple pour la base sans interface graphique c'est super simple.

      Mais bien sûr… faire du C c'est écrire du langage machine en à peine plus abstrait. Par exemple il n'y a pas de type chaîne en C (il y a une convention pour les représenter, mais ce n'est pas un type). Autant faire directement du langage machine, c'est moins compliqué: au moins on peut tout expliquer à partir de la structure de la machine (des cases mémoire numérotées).

      • [^] # Re: Mais pourquoi ?

        Posté par . Évalué à 0.

        Mais bien sûr… faire du C c'est écrire du langage machine en à peine plus abstrait.

        Par ce que ça c'est pas plus abstrait?
        points = [line.split()[2] for line in lines]

        C'est du python pour les non connaisseur.

        Comme je l'ai dit c'est aussi possible d'utiliser std::string tout en gardant les principes du C

        c'est moins compliqué: au moins on peut tout expliquer à partir de la structure de la machine

        Qu'est ce que tu ne peux pas expliquer en C? Et puis va faire de la lecture d'entrée en C ou même de l'affichage de 'bonjour' en assembleur.

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

        • [^] # Re: Mais pourquoi ?

          Posté par (page perso) . Évalué à 2.

          Par ce que ça c'est pas plus abstrait?
          points = [line.split()[2] for line in lines]

          Je me suis très mal exprimé: le langage C est une abstraction de langage machine, donc si on ne connaît pas de langage machine on travaille sur un objet dont tous les comportements sont complètement arbitraires! Pour les expliquer il faudra toujours s'en remettre à une machine particulière, autant se passer du C et s'occuper directement de cette machine.

          Ce que tu donnes en exemple est effectivement abstrait, mais c'est d'une abstraction qui est commune à tous les langages de programmations.

          Un langage a des concepts (types) et des verbes (procédures), le problème du C est qu'il fait référence à la mémoire de la machine (pointeurs) en faisant toutes les circonlocutions possibles pour éviter de prononcer le mot adresse: c'est à mon avis tout le contraire de ce qu'il faut étudier pour se faire une idée claire de la programmation.

          Qu'est ce que tu ne peux pas expliquer en C?

          C'est quoi un pointeur?

          Et puis va faire de la lecture d'entrée en C

          Quelque soit le langage faire de la lecture d'entrée est très difficile. (Disons qu'il faut être extrèmement soigneux.) Et puis c'est pas pour troller mais en C il y a scanf, qui manque un peu en Python.

          ou même de l'affichage de 'bonjour' en assembleur.

          C'est un appel de procédure classique: tu pousses tes arguments sur la pile et tu appelles la procédure adéquate.

          • [^] # Re: Mais pourquoi ?

            Posté par . Évalué à 2.

            C'est quoi un pointeur?

            L'adresse d'une case mémoire. Tu peux même faire des dessins si ça peut aider. Où des analogie (c'est ce qui est écrit sur l'enveloppe, pour lire le contenu il faut l'ouvrir * ). Là où tu peux avoir plus de difficulté, c'est avec les pointeur de fonctions qui sont un poil plus technique.

            Il ne faut pas décorner les boeufs avant d'avoir semé le vent

            • [^] # Re: Mais pourquoi ?

              Posté par (page perso) . Évalué à 0.

              L'adresse d'une case mémoire.

              Et c'est quoi l'adresse d'une case mémoire? Pour l'instant tu as remplacé un mot par un autre! Ce qui rend les pointeurs difficiles c'est que ce sont des abstractions d'adresses mémoire (comprendre type abstrait de données) qu'il n'est facile d'expliquer qu'en prenant un modèle de mémoire particulier.

              • [^] # Re: Mais pourquoi ?

                Posté par . Évalué à 1.

                Toi t'as du être traumatisé par les pointeurs; je n'ai jamais eu de problème pour les comprendre. Le pointeur c'est une adresse, ce qu'il y a derrière int, float, struc, le pointeur lui même s'en fout (tu peux même le caster en void). Cela n'a d'importance que si tu veux faire des opérations sur le pointeur (comme un ++), qui te donne la case suivante en fonction de la taille du type de pointeur.

                J'aurais même tendance à trouver que c'est très sain d'apprendre avec (sans aller jusqu'au pointeur de fonction), parce que ça pousse à se poser des question comme

                • est ce utile
                • Est ce que je peux pas passer plutôt par une variable locale (passage de struc en paramètre)?
                • visibilité, quand est ce que je le libère? Où je le crée?

                Trop souvent je tombe sur du code où la personne n'a visiblement pas réfléchi avant de placer ses variables.

                Il ne faut pas décorner les boeufs avant d'avoir semé le vent

                • [^] # Re: Mais pourquoi ?

                  Posté par (page perso) . Évalué à 1.

                  Toi t'as du être traumatisé par les pointeurs;

                  Je te remercie mais ça va plutôt pas mal.

                  je n'ai jamais eu de problème pour les comprendre.

                  Ce que tu sembles avoir un problème à comprendre c'est que la notion pointeur sert justement à ne pas parler d'adresse.

                  • [^] # Re: Mais pourquoi ?

                    Posté par (page perso) . Évalué à 3.

                    la notion pointeur sert justement à ne pas parler d'adresse.

                    Un pointeur est un contenant. Il contient une adresse. Difficile de ne pas parler d'adresse en parlant de pointeur.
                    Et réciproquement, difficile d'utiliser un pointeur si on ne sait pas ce qu'est une adresse.

      • [^] # Re: Mais pourquoi ?

        Posté par . Évalué à 4.

        ma fille 6 ans je lui lis tous les soirs les ligne de serial_core.c, elle adore.

  • # AWK

    Posté par (page perso) . Évalué à 2.

    Peut-être que pour les débuts AWK n'est pas mal: pas d'OO, pas de types, et sympa parce qu'on peut faire des trucs utiles avec pas grand chose: l'article Wikipédia en anglais a déjà pas mal d'exemples utiles.

  • # Propositions

    Posté par (page perso) . Évalué à 3.

    Mon premier langage est l'AMOS Basic (pour Amiga) que j'ai commencé à l'âge qu'a ta fille aujourd'hui… Ensuite j'ai enchaîné sur l'assembleur.

    Je pense que le choix du langage n'est finalement pas si important que ça, ce qui compte plutôt c'est le projet de ta fille et la façon dont tu vas la guider. (La programmation c'est dûr, la motivation est donc très importante!)

    Par exemple en Caml il y a une bibliothèque graphique très rudimentaire mais aussi très simple à utiliser (j'ouvre ma fenêtre je fais des lignes et des points…). Explorer la génération de dessins par des programmes informatiques peut être très ludique! (Un peu comme le logo!)

    Dans la même direction, il y a le langage METAPOST qui permet de faire des dessins, qui fera un excellent pendant aux cours de géométrie qui vont avoir lieu en sixième (on me souffle que le programme à changé et que le niveau des élèves à baissé :) )

    Pour choisir un langage, j'irais soit
    - vers l'assembleur (par exemple pour la MIX-machine de Donald Knuth, plus simple que l'assembleur des CPU intels et pour laquelle il existe — de mémoire — des émulateurs) si ta fille s'interesse à la structure des machines.
    - vers le scheme si elle aime bien les algorithmes et a de bonnes capacités symboliques (côté maturité, c'est probablement le bon âge puisque c'est en sixième qu'on commence avec les X et les Y il me semble).

    Bon courage!

    • [^] # Re: Propositions

      Posté par (page perso) . Évalué à 2.

      Je complète en ajoutant mes premiers programmes:

      • Un petit éditeur de texte en AMOS Basic, qui permettait de déplacer le curseur, taper du texte, sauver et charger.

      • Un éditeur de sauvegarde pour Civilization I écrit en assembleur (compilateur as86 de Isaacson).

      • Un éditeur de sauvegarde pout Heroes of Might and Magic II, aussi écrit en assembleur.

      • Un programme qui dessine des bolygones (tu choisis deux entiers p et q et une racine p-ième de l'unité ζ puis tu relies ζa à ζ{a*q} pour a entre 1 et p — cela fait des jolis dessins et on peut bien sûr expliquer cette construction géométrique sans utiliser les nombres complexes (mais c'est plus long)! C'est un de mes premiers programmes C!

      Et tout un tas de petites choses

    • [^] # Re: Propositions

      Posté par . Évalué à 1.

      Ah non les X et les Y c'est seulement en 4ème ou 3ème il me semble… Mais je ne pense pas que ça lui pose problème (elle a déjà tendance à résoudre ses problèmes en faisant des sortes d'équations avec des points d'interrogation sur ses cahiers).
      Je vais en reparler avec elle, pour savoir quelles sont ses motivations.
      Et puis il faut aussi qu'un de ses parents s'y mette. J'avais toujours l'idée que le scheme était assez difficile à aborder?

      • [^] # Re: Propositions

        Posté par (page perso) . Évalué à 2.

        (elle a déjà tendance à résoudre ses problèmes en faisant des sortes d'équations avec des points d'interrogation sur ses cahiers).

        Effectivement c'est plutôt bon signe.

        Et puis il faut aussi qu'un de ses parents s'y mette. J'avais toujours l'idée que le scheme était assez difficile à aborder?

        Le Scheme est très symbolique (donc un peu difficile pour un bout de chou?) mais aussi beaucoup moins Byzantin que le C ou pire, le C++. Conceptuellement plus difficile peut-être mais d'un accès plus simple car il met en jeu trois concepts et demi et s'explique très rapidement.

        Un autre attrait est la boucle d'intéraction qui permet d'intéragir directement avec le langage sur de petits exemples.

        Le livre de base est le Wizard Book (consultable en ligne http://mitpress.mit.edu/sicp) si tu veux t'y mettre (de toutes façons un classique, qu'on s'intéresse ou non à Scheme).

        Je te souhaite bon courage pour la mise au point d'un projet pédagogique — et beaucoup de plaisir dans cette aventure!

    • [^] # Re: Propositions

      Posté par (page perso) . Évalué à 1.

      Ha oui c'est une excellente idée. L'Amiga avait plein de bonnes choses pour les enfants. Moi j'ai appris avec Arexx à neuf ans.

  • # Linotte...

    Posté par . Évalué à 1.

    Je propose Linotte, un langage de programmation entièrement en français, surtout qu'un nouveau tutoriel est en cours de rédaction.
    Il est rédigé par un utilisateur du langage :
    http://langagelinotte.free.fr/forum/showthread.php?tid=996&pid=6672#pid6672

    Le tuto correspond à la future version 2.0, une version beta est disponible ici : http://langagelinotte.free.fr/wordpress/?p=259

    • [^] # Re: Linotte...

      Posté par . Évalué à 4. Dernière modification le 18/10/12 à 11:04.

      J'ai jeté un œil.
      Seulement, ça, ça me bloque complètement :
       Tant que a < b, a vaut a + 1
      Comment a peut-il valoir a + 1 ? ;)
      Sans blague, c'est déjà assez difficile de faire comprendre à un enfant que le signe égal peut signifier l'égalité entre 2 parties d'équation (alors qu'en primaire ils apprennent que ça sert à noter le résultat d'un problème)… Valoir ce n'est pas affecter…
      [Ma vie] personnellement je n'aime pas l'utilisation du "=" pour l'affectation… cela m'a posé problème quand je l'ai rencontré au début. [/Ma vie]

      Dommage…

      • [^] # Re: Linotte...

        Posté par . Évalué à -1. Dernière modification le 18/10/12 à 15:06.

        ça ne me choque pas.
        Regardez la définition que l'on retrouve sur Wiktionary :

        Tenir lieu, avoir la valeur, la signification de.
        * En conséquence, on dit simplement une noire vaut deux croches ou quatre doubles-croches, ou huit triples-croches, ou seize quadruples-croches. — (Pierre Rigaud -Les secrets de la musique ou Théorie musicale, tome 1, page 209, Leduc à Paris, 1846)

        Si j'ai une variable qui s'appelle noir et une autre croche, on obtient :

        noire vaut 2 * croche
        
        
        • [^] # Re: Linotte...

          Posté par . Évalué à 2.

          Oui, mais a ne peut pas valoir a + 1, en français, ça n'a pas de sens. C'est vraiment difficile à expliquer.
          a peut seulement avoir la valeur de a, a + 0, a*1, mais pas a + 1…

          Alors que a:= a + 1, (ou toute autre manière de noter l'affectation) ça veut dire : je prends la valeur de a, j'ajoute 1, et je remets le résultat dans a. C'est simple même pour un enfant…

          • [^] # Re: Linotte...

            Posté par . Évalué à 0.

            ça me tracasse cette histoire !

            Même si elle ne porte pas la vérité absolue, je constate sur wikipedia cette traduction :

            http://fr.wikipedia.org/wiki/Affectation_%28informatique%29

            $variable = 4; // la variable vaut maintenant 4 (affectation d'un littéral)

            C'est wikipedia qui le dit… pas moi !

            • [^] # Re: Linotte...

              Posté par . Évalué à 2.

              Tout est dans le "maintenant".
              Quand tu écris : a = a + 1 en C par exemple, cela veut dire : a vaut maintenant l'ancienne valeur de a, plus un.
              Mais ce n'est pas évident.
              En mathématiques, on n'écrit jamais a = a + 1 : ce serait une aberration.
              C'est pour cela que je dis que c'est difficile à comprendre, car même si on utilise le terme "vaut", comment a pourrait valoir 1 de plus que a??? Il y a une dimension temporelle qui est implicite, et à mon avis très difficile à saisir pour un enfant avec ce vocabulaire.
              Peut-être que je me trompe, mais c'est une difficulté que j'ai eue lors de l'apprentissage des premiers langages avec le = comme opérateur d'affectation, et je ne vois pas comment je pourrai explique l'affectation avec un mot comme 'vaut'?

              • [^] # Re: Linotte...

                Posté par (page perso) . Évalué à 3.

                Je suis d'accord avec toi, le := du Pascal est beaucoup mieux.

                D'ailleurs, les langages en général utilise le == pour le = mathématique. Je pense que c'est à conserver et surtout ne pas mettre un = dans un langage.

                En Fortran, l'affectation des pointeurs se fait pas <=. C'est pas mal non plus. Cela signifie bien que l'on pousse la valeur de droite dans le membre de gauche. Cela a l'immense avance de permettre l'utilisation des pointeurs dans les formules avec un déférencement automatique. En bref, on n'a aucun moyen de travailler sur l'adresse du pointeur. C'est pas forcément bien pour tous les langages mais je pense que ce serait très bien pour beaucoup !

                • [^] # Re: Linotte...

                  Posté par . Évalué à 1.

                  Vos remarques sont très intéressantes.

                  L'utilisation du symbole <= pourrait être utilisée.
                  Mais l'esprit du langage est l'utilisation (au maximum) de verbes en français pour effectuer des actions.
                  D'où l'utilisation du verbe Valoir.
                  Oui, je pourrais proposer :

                  A prend la valeur de 5
                  A vaut maintenant 5

                  Mais, ces expressions sont bien trop verbeuses…

                  Vos idées sont les bienvenues !

                  • [^] # Re: Linotte...

                    Posté par . Évalué à 1.

                    Ah, en français, j'utiliserai "prend", ou même plutôt "contient". J'ai toujours l'image qu'une variable est une boîte. L'adresse de la variable l'endroit en mémoire où est la boîte (souvenir des schémas qu'on faisait pour la programmation en Pascal), donc "contient" me parle bien.
                    Je ne suis pas certaine que conceptuellement par contre, ce soit très juste…

                    Curieusement, il semblerait que le Logo utilise DONNE, ce qui pour moi est très curieux (en anglais c'est MAKE) :
                    http://www.algo.be/logo1/pdf/prog-logo.pdf

  • # Site d'apprentissage en ligne

    Posté par (page perso) . Évalué à 1.

    Bonjour,

    Je voudrais partager avec vous deux sites qui me semblent intéressant pour apprendre à programmer.

    Cet été j'ai découvert le site d'apprentissage de la programmation web « Webmaker » de la fondation Mozilla lors du Campus Party à Berlin.

    Je peux aussi vous recommander de faire un tour sur le site de la Codecademy. Sur ce site on peut également apprendre le langage HTML mais pas seulement. D'autres langages tels que le Python, le Ruby et le Javascript y sont également proposés.

    Je trouve que ces deux sites disposent d'une interface claire et simple nous permettant de nous familiariser avec les bases de la programmation en réalisant différents petits exercices.

  • # du fonctionnel immuable

    Posté par . Évalué à 1.

    Parce que c'est pas possible d'expliquer ce genre de choses :

    void f(int c){
     c = 0;
    } // ne fait rien
    void f(int c[]){
     c[0] = 0;
    } // fait quelque chose
    
    

    Sans entrer dans les détails de l’adressage "alors tu vois, ce "c" c'est un entier, et ce tableau "c" c'est en fait l'adresse d'une série d'entiers mis bout à bout en mémoire"…
    et les "alors, quand on appelle une fonction, les arguments sont copiés puis empilés, blablabla porté lexicale … copies locales modifiées sans effet de bord" avec la syntaxe let in c'est vachement plus simple.

    En fait, ça dépend s'il s'agit d'apprendre la programmation ou apprendre à programmer un ordinateur, C paraitrait très indiqué dans ce cas (syntaxe simple, relativement homogène, et langage proche de la machine).

    Please do not feed the trolls

  • # ben Ada..

    Posté par . Évalué à 1.

    C'est quand même frappé du coin du bon sens.

    Ada regroupe le meilleur des autres langages. (ok c'est du copié/collé)

    Par son typage (curieux…le correcteur propose "tapage") extrêmement stricte,
    il évite de s'affranchir d'un minimum de conception.

  • # Re:

    Posté par . Évalué à 2.

    Lisp si tu veux lui faire pousser la barbe ;)

    Plus sérieusement, moi j'ai commencer avec le Logo, mais c'était plutôt à 7~8 ans. Peu après j'ai avalé les deux bouquins de programmation BASIC du CPC-8256, mais je trouve maintenant que c'était un mauvais choix (mais avais-je seulement le choix ?), BASIC est très archaïque, même pour son époque.

    L'important de toute façon c’est la théorie, l’algorithmique. Pour le langage je suis d'accord pour Python qui est pas mal, Ruby aussi facilite bien la compréhension de ce qu'est un objet :

    "Bonjours".each_char {|c| print c}
    
    
  • # algobox

    Posté par . Évalué à 0.

    Et un logiciel d'exécution d'algorithme ?
    C'est indépendant du langage, ça apprend la théorie de la programmation et ça permet d'écrire des programmes en pseudo-code et de les tester en pratique.

    Je n'ai jamais utilisé personnellement mais celui-là à l'air pas mal:

    AlgoBox est un logiciel libre, multi-plateforme et gratuit d'aide à l'élaboration et à l'exécution d'algorithmes dans l'esprit des nouveaux programmes de mathématiques du lycée.

    http://www.xm1math.net/algobox

    Ça peut faire des vrais maths de lycée, mais qui peut le plus peut le moins alors n'est pas obligé d'utiliser des cosinus ou des modulos à chaque ligne.
    Ça mérite d'aller y jeter un oeil, non ?

    Bonne chance dans votre quête.

    Thierry

  • # Au final

    Posté par . Évalué à 5.

    Après discussion avec elle, et qu'on lui ait montré quelques trucs, nous avons opté pour Scratch.
    C'est sûr, c'est très abordable.
    Elle s'est bien amusée, et a commencé par créer de petites animations. Elle a fait connaissance des boucles… Puis des commandes : elle a créé une application pour gérer avec des commandes du clavier les mouvements d'un chien (entre autres)
    Ensuite, je lui ai montré toute la partie échanges (sur le site, il est possible de s'inscrire et de partager des projets), elle a récupéré un «pong» et l'a adapté.
    Du coup, elle a commencé à essayer de faire un jeu de casse-briques, mais là c'est plus compliqué (il faut maîtriser la communication entre les objets et la gestion des événements). Tout ça en un après-midi…
    Il a été difficile de lui faire faire autre chose. Donc… c'est adopté. Je pense qu'elle a de quoi s'occuper un moment. Après, on verra si elle se trouve limitée et a envie de passer à autre chose.
    Scratch n'a pas de fonctions ou méthodes (c'est ce qui manque à mon avis le plus par rapport à un langage "classique"). Mais c'est déjà bien pour pas mal d'autres raisons, ne serait-ce que de la voir analyser et résoudre des problèmes, c'est très encourageant.

    Merci en tout cas à tous de m'avoir donné vos avis.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.