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 aurel (site web personnel, Mastodon) . Évalué à 2.
Peut-être quelque chose comme ca : http://info.scratch.mit.edu/About_Scratch ?
# peut être Python ?
Posté par GChristophe . É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
[^] # Re: peut être Python ?
Posté par Mali (site web personnel) . Évalué à 2.
Il existe aussi Ce Livre apprendre a programmer avec python. Je l'avais survolé, de mémoire il est plutôt bien fait pour débuter, mais peut-être un peu lourd pour un enfant de 11ans. En revanche il peut servir de support d'enseignement aux parents ;-)
Sous license Libre, à jour, la dernière révision de Janvier 2012 couvre python3.
[^] # Re: peut être Python ?
Posté par lolop (site web personnel) . Évalué à 2.
Quelques liens…
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Pas un problème de langage !
Posté par Thom (site web personnel) . É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 NeoX . É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.
chacune de ses etapes devant etre analyser/programmer
[^] # Re: Pas un problème de langage !
Posté par lolop (site web personnel) . É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é.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
# Mes 2cts
Posté par reno . É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 lay . É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 Graveen . É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 lenod . É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 Obsidian . Évalué à 8.
Il ne reste que l'assembleur ! :-)
[^] # Re: Geek toutes !
Posté par Kerro . É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 Obsidian . É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
Ensuite, dans « Choose Configuration », tu choisis « Boot : CPC 6128 », et tu essaies les commandes suivantes :
… et :
… 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. :-)
[^] # Re: Geek toutes !
Posté par Kerro . Évalué à 4.
Le gros coup de vieux… /o\
[^] # Re: Geek toutes !
Posté par Obsidian . Évalué à 3.
Meuh non voyons. Cette machine n'a que 25 ans ! :-)
[^] # Re: Geek toutes !
Posté par Mali (site web personnel) . Évalué à 2.
Terrible, j'ai mis le mien au recyclage il y a quelques mois…
[^] # Re: Geek toutes !
Posté par Obsidian . Évalué à 3.
(Le vieux ? /o\ )
[^] # Re: Geek toutes !
Posté par Juke (site web personnel) . Évalué à 3.
Genial !
[^] # Re: Geek toutes !
Posté par Kerro . Évalué à 2.
Ah Boulder Dash !
Ah Bomb Jack !
etc etc
Par contre je n'arrive pas à trouver trace d'un jeu que j'ai vu sur CPC : musique "égyptienne". Vue fixe sur un plan divisé en 16 rectangles dont il faut faire le tour sans que les momies nous attrapent. Principe similaire à Pac-Man en fait, mais pas de labyrinthe, juste des pavés rectangulaires.
Si quelqu'un retrouve le nom (ou plus).
C'était probablement un jeu livré d'origine avec les premiers modèles.
[^] # Re: Geek toutes !
Posté par Obsidian . Évalué à 2.
Tu devrais trouver ton bonheur ici (et même peut-être y jouer en ligne) :
http://www.cpc-power.com/index.php?page=jeux
Pour ma part, j'ai choisi mon pseudo en 1987 à la va-vite après m'être connecté sur un RTC minitel consacré aux Thomson (et pas au CPC), alors que j'allais régulièrement chez un copain pour jouer à ça :
http://www.cpc-power.com/index.php?page=detail&onglet=jeuenligne&num=1543
Requiem pour ta productivité…
[^] # Re: Geek toutes !
Posté par Kerro . Évalué à 2.
J'ai trouvé :
http://www.cpc-power.com/index.php?page=detail&num=1549
http://www.youtube.com/watch?v=kTRfIUMbTas
Incroyable comme le souvenir est bien plus beau que la réalité :-)
"It was often included in the free bundles of software that came with the computer."
# Mais pourquoi ?
Posté par fearan . Évalué à -1.
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 태 (site web personnel) . Évalué à 2.
Ça m'étonnerait ! En 1966, le C n'existait pas.
[^] # Re: Mais pourquoi ?
Posté par fearan . É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 Michaël (site web personnel) . Évalué à 3.
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 fearan . Évalué à 0.
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
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 Michaël (site web personnel) . Évalué à 2.
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.
C'est quoi un pointeur?
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.
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 fearan . Évalué à 2.
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 Michaël (site web personnel) . Évalué à 0.
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 fearan . É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
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 Michaël (site web personnel) . Évalué à 1.
Je te remercie mais ça va plutôt pas mal.
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 Kerro . Évalué à 3.
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 Anonyme . Évalué à 4.
ma fille 6 ans je lui lis tous les soirs les ligne de serial_core.c, elle adore.
# AWK
Posté par anaseto . É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 Michaël (site web personnel) . É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 Michaël (site web personnel) . É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 Flo . É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 Michaël (site web personnel) . Évalué à 2.
Effectivement c'est plutôt bon signe.
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 Michaël Malter (site web personnel) . É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 cpc6128 (site web personnel) . É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 Flo . Évalué à 4. Dernière modification le 18 octobre 2012 à 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 cpc6128 (site web personnel) . Évalué à -1. Dernière modification le 18 octobre 2012 à 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 :
[^] # Re: Linotte...
Posté par Flo . É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 cpc6128 (site web personnel) . É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 Flo . É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 Sytoka Modon (site web personnel) . É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 cpc6128 (site web personnel) . É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 Flo . É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 iOops (site web personnel) . É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 Zylabon . Évalué à 1.
Parce que c'est pas possible d'expliquer ce genre de choses :
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
[^] # Re: du fonctionnel immuable
Posté par Sytoka Modon (site web personnel) . Évalué à 4.
Alors Erlang ;-)
# ben Ada..
Posté par chamandier . É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 Tonton Benoit . É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 :
# algobox
Posté par trsreloaded . É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 Flo . É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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.