Page 1 sur 5

Module turtle pour NumWorks

Message non luPosté: 27 Oct 2018, 13:56
de jean-baptiste boric
Je suis en train d'écrire un module MicroPython pour implémenter la tortue (https://github.com/numworks/epsilon/pull/748) :

Code: Tout sélectionner
from turtle import *
for i in range(255):
  gray=255-i
  color(gray,int(gray*0.75),int(gray*0.25))
  forward(i*0.1)
  left(10)

Image

C'est perfectible et à améliorer (cf. pull request), mais ça fonctionne et c'est rapide. J'ai laissé un firmware précompilé en pièce-jointe pour ceux qui veulent tester.

Re: Module turtle pour NumWorks

Message non luPosté: 27 Oct 2018, 14:47
de compsystems
Hi, how similar is to LOGO or turtle of xcas? or have something new.

see quick reference on page 15
https://www-fourier.ujf-grenoble.fr/~pa ... vie_en.pdf

paper on logo/ turtle
http://blog.core-ed.org/blog/2014/08/th ... rs-on.html

Re: Module turtle pour NumWorks

Message non luPosté: 27 Oct 2018, 16:24
de jean-baptiste boric
I'm writing an implementation of https://docs.python.org/3/library/turtle.html. The goal is compatibility with CPython's turtle module for common usecases (I won't implement support for filling, polygons, custom turtle shapes, custom pens, events and so on) so that it'll be good enough for my nephew.

I am aware of the origins of the programming turtle, but I've never actually programmed in Logo. I believe Python's turtle module was designed to be a faithful re-implementation of the original.

Re: Module turtle pour NumWorks

Message non luPosté: 27 Oct 2018, 16:59
de ptijoz
Bonjour
super boulot ! ça peut être un plus pour les collégiens (et les autres)
J'ai téléchargé la ROM
comment le tester ? j'ai bien une Numworks mais je pense que tu as un émulateur ?
Bien à toi

Re: Module turtle pour NumWorks

Message non luPosté: 27 Oct 2018, 17:10
de jean-baptiste boric
Il faut flasher la calculatrice avec un utilitaire DFU. Je n'ai jamais testé la manipulation avec autre chose que dfu-utils et OpenOCD, mais WebDFU devrait en théorie fonctionner sur Chrome. Sinon, il faut compiler ma branche Git avec le SDK pour obtenir les autres targets (j’essaierai de le faire ce soir).

Re: Module turtle pour NumWorks

Message non luPosté: 27 Oct 2018, 20:45
de parisse
Pour info, la tortue de Xcas a des instructions en plus par rapport au logo standard: (en francais) rond, disque pour tracer des arcs de cercle ou des portions de disques remplies, ainsi que des triangles/rectangles remplis et une instruction de saut lateral (sans marquage). Ceci simplifie certains dessins qui necessitent des boucles un peu penibles (et parfois un peu imprecises) en logo standard (cf. le concours), cela m'avait ete demande par Renee De Graeve qui a teste a l'epoque l'enseignement du logo a l'ecole primaire.
Sinon, aussi bien le module turtle de Python que la tortue de Xcas permettent d'ecrire des boucles for/while alors qu'en logo il n'y a pas de telles boucles...
Enfin, la tortue de Xcas est programmable en francais (optionnellement en anglais si on tape from turtle import *). Pour des eleves un peu en difficultes, c'est un plus de ne pas melanger le probleme de la langue (meme s'il nous parait trivial). Ca pourrait etre une bonne idee d'assigner les noms de commande aussi en francais sur un module tortue pour la Numworks : avance/recule/tourne_droite/tourne_gauche/pas_de_cote/saute/crayon/efface. Ceci afin de favoriser la compatibilite...

Re: Module turtle pour NumWorks

Message non luPosté: 27 Oct 2018, 23:52
de jean-baptiste boric
Le module turtle de CPython possède des primitives supplémentaires de dessin (circle(), begin_fill()/end_fill(), dot()...). Je vais faire l'impasse sur la plupart d'entre elles à part circle(), qui peut tracer des arcs de cercle en passant, car la bibliothèque graphique d'epsilon est très spartiate et je ne veux pas concurrencer (et encore moins surclasser) un environnement Python complet sur ordinateur. Les "extras" peuvent très bien être rangés dans un module externe utilisable par tout le monde sans nuire à la portabilité des scripts.

Quitte à passer pour un puriste, je n'ajouterai pas des alias français dans le module turtle non plus ; on peut très bien écrire un module externe tortue.py qui fait le passe-plat pour tout le monde si besoin est.

Re: Module turtle pour NumWorks

Message non luPosté: 28 Oct 2018, 06:44
de parisse
Sauf que ca complique les choses pour l'utilisateur final, ce n'est deja pas evident pour certains eleves de taper sans erreur from turtle import * ou from math import *. Les puristes Python sont en position de force aujourd'hui (un peu comme les maths modernes a leur epoque), ce ne sera peut-etre pas toujours vrai...

Re: Module turtle pour NumWorks

Message non luPosté: 28 Oct 2018, 09:40
de jean-baptiste boric
Je dirais plutôt que c'est un problème d'IHM dans ce cas. La touche toolbox de NumWorks dans Python permet d'insérer différents bouts de scripts (conditions, boucles, imports/fonctions de modules) qu'il suffit de compléter si nécessaire, on ne tape au final que peu de code à la main. Pour les fonctions de module et le catalogue, une courte description accompagne chaque entrée du menu. Ce sont des petits détails qui au final rendent la chose bien plus abordable pour les néophytes, même si l'éditeur de scripts NumWorks reste encore à améliorer (notamment sur la surbrillance des parenthèses, de l'indentation et des erreurs de syntaxe).

On pourrait pousser le vice jusqu'à traduire tous les mots clés du langage Python en français pour tout aseptiser, mais je pose une autre question à la place : comment concevoir un ensemble environnement+IHM+supports de programmation qui aide les débutants à faire leurs premiers pas sans nécessiter un professeur pour leur tenir la main en permanence? Ce ne sont pas les pistes de réflexion qui manquent (la fameuse tortue, Scratch, CodeCombat, Microsoft SmallBasic...), mais dans la plupart des cas ça demande de faire des efforts sur l'ergonomie.

Re: Module turtle pour NumWorks

Message non luPosté: 28 Oct 2018, 11:13
de parisse
Traduire les mots-clefs du langage ce n'est pas la meme chose que d'avoir un module avec des commandes en francais, il y a essentiellement 7 mots-clefs en anglais a retenir : if/else, for/range, while, def, return (au debut, beaucoup de profs vont utiliser input et print et le transtypage int/float mais leur utilisation devrait etre decouragee avec l'accent mis sur l'utilisation de fonctions).
Un module comme turtle n'a pas le meme statut que le module maths par exemple, sa vocation est essentiellement pedagogique et il sera uniquement utilise en classe de seconde en transition, je pense donc qu'avoir des commandes en francais est tres utile, quitte a renommer le module tortue sinon il faut doubler le nombre de mots a retenir en anglais. Apres bien entendu l'interface peut faciliter la saisie de commandes en anglais, mais si le code source est affiche en anglais, on ne gagne qu'au moment de la saisie et la programmation sera pour certains eleves (et peut-etre certains profs) un peu comme la messe en latin de nos ancetres.