Super mise à jour NumWorks v. 14.4.0 : Calculs et Python
Posted: 15 Jul 2020, 14:03
NumWorks nous sort la nouvelle version 14 pour sa calculatrice. Plus précisément il s'agit de la version 14.4.0 et nous allons découvrir ensemble les nouveautés apportées :
Et ici de même, ce que nous avons évoqué semble avoir été traité. ! Plus d'erreur de syntaxe donc quand tu réutilises des scripts conçus pour d'autres plateformes !
Les paramètres de couleurs sont donc désormais acceptés et fonctionnels, conformément au standard :
1) Calculs
Go to topCommençons par l'application Calculs qui bénéficie d'améliorations notables.
En cours de saisie, tu avais la possibilité avec la touche
Depuis la dernière version ta NumWorks disposait d'une formidable nouveauté, la gestion des calculs utilisant des unités.
L'affichage de l'historique de calcul avait le défaut de perdre beaucoup de place en affichant systématiquement le résultat en-dessous de l'expression saisie. Dans certains cas c'était à peine si tu pouvais visualiser plus d'un calcul à l'écran sans avoir à faire défiler.
Désormais lorsque possible, le résultat sera affiché sur la même ligne que l'expression saisie, pour une bien meilleure vue d'ensemble de ton travail !
Une fonctionnalité demandée depuis longtemps par la communauté et justement implémentée dans plusieurs firmwares tiers, dorénavant plus besoin de s'embêter à installer un firmware tiers pour ça !
Une fonctionnalité demandée depuis longtemps par la communauté et justement implémentée dans plusieurs firmwares tiers, dorénavant plus besoin de s'embêter à installer un firmware tiers pour ça !
En cours de saisie, tu avais la possibilité avec la touche
↑d'aller chercher des éléments dans ton historique de calcul, afin de les intégrer à ton expression.
Toutefois, la touche
Or, l'élément récupéré était systématiquement inséré à la dernière position du curseur. Pour les expressions s'affichant en empilant plusieurs niveaux (quotients, puissances, ...), seul le niveau supérieur pouvait donc recevoir l'élément récupéré, puisque c'était le dernier par lequel était passé ton curseur. Impossible notamment de récupérer quelque chose au dénominateur d'un quotient.
↑sert également pour la navigation au sein de l'expression naturelle en cours de saisie.
Or, l'élément récupéré était systématiquement inséré à la dernière position du curseur. Pour les expressions s'affichant en empilant plusieurs niveaux (quotients, puissances, ...), seul le niveau supérieur pouvait donc recevoir l'élément récupéré, puisque c'était le dernier par lequel était passé ton curseur. Impossible notamment de récupérer quelque chose au dénominateur d'un quotient.
La dernière version permet maintenant enfin de récupérer des éléments de l'historique de calcul à n'importe quel endroit d'une expression en cours de saisie !
Lorsque donc tu tapes
Lorsque donc tu tapes
↑pour aller chercher un élément dans l'historique de calcul, les éventuelles zones de l'expression en cours de saisie par lesquels ton curseur ne fait que traverser en un temps très court ne sont maintenant plus retenues comme position d'insertion.
Depuis la dernière version ta NumWorks disposait d'une formidable nouveauté, la gestion des calculs utilisant des unités.
L'unité du résultat était choisi automatiquement par la calculatrice, selon ce qu'elle jugeait être le plus pertinent.
Mais voilà, contrairement à toi ta calculatrice ne disposait pas du contexte du problème, et ne faisait donc pas toujours le meilleur choix.
Tu te devais donc à chaque fois de demander manuellement une conversion vers l'unité souhaitée, avec pas mal de touches à presser.
Mais voilà, contrairement à toi ta calculatrice ne disposait pas du contexte du problème, et ne faisait donc pas toujours le meilleur choix.
Tu te devais donc à chaque fois de demander manuellement une conversion vers l'unité souhaitée, avec pas mal de touches à presser.
Dans la nouvelle version, il y a mieux.
Lorsque tu remontes dans l'historique de calcul, sur les résultats utilisant des unités tu as maintenant la possibilité de demander d'une simple touche des résultats complémentaires. Et ces résultats complémentaires utilisent justement d'autres unités jugées pertinentes par la calculatrice.
Lorsque tu remontes dans l'historique de calcul, sur les résultats utilisant des unités tu as maintenant la possibilité de demander d'une simple touche des résultats complémentaires. Et ces résultats complémentaires utilisent justement d'autres unités jugées pertinentes par la calculatrice.
2) Paramètres et nouvelles langues
Go to topLa NumWorks parlait jusqu'à présent 5 langues différentes, langues que tu pouvais choisir dans l'application Paramètres :
Quand au mode examen, il continue à offrir 2 choix lorsque la calculatrice est en anglais ou maintenant également néerlandais :
- Anglais
- Français
- Espagnol
- Allemand
- Portugais
Avec cette nouvelle version, pas moins de 2 langues supplémentaires sont au menu :
- Néerlandais
- Italien
Quand au mode examen, il continue à offrir 2 choix lorsque la calculatrice est en anglais ou maintenant également néerlandais :
- mode examen dit international (celui proposé par défaut dans toutes les autres langues dont le français : ne fait qu'effacer la mémoire)
- mode examen néerlandais (interdit en prime l'utilisation de l'application Python, la réglementation des Pays-Bas interdisant l'accès pendant l'épreuve à tout éditeur de texte)
3) Probabilités et loi géométrique
Go to topPassons maintenant à l'application Probabilités.
Jusqu'à présent lorsque l'on effectuait des calculs de lois de probabilités selon une distribution géométrique, l'on n'obtenait bizarrement pas les mêmes résultats que sur les autres calculatrices graphiques. Tous les autres modèles suffisamment capables désapprouvaient même à l'unison :
Ce n'était pas que la calculatrice avait faux, c'était qu'elle n'utilisait pas la même définition que les autres modèles.
Ce n'était pas que la calculatrice avait faux, c'était qu'elle n'utilisait pas la même définition que les autres modèles.
4) Régressions et proportionnalité
Go to topDans l'application Régressions, tu pouvais tester l'adéquation de tes données avec pas moins de 9 modèles différents :
- linéaire : $mathjax$y = a x + b$mathjax$
- quadratique : $mathjax$y = a x ^ 2 + b x + c$mathjax$
- cubique : $mathjax$y = a x ^ 3 + b x ^ 2 + c x + d$mathjax$
- quartique : $mathjax$y = a x ^ 4 + b x ^ 3 + c x ^ 2 + d x + e$mathjax$
- logarithmique : $mathjax$y = a \ln \left( x \right) + b$mathjax$
- exponentielle : $mathjax$y = a e ^ { b x }$mathjax$
- puissance : $mathjax$y = a x ^ b$mathjax$
- trigonométrique : $mathjax$y = a \sin \left( b x + c \right) + d$mathjax$
- logistique : $mathjax$y = \frac { c } { 1 + a e ^ { - b x } }$mathjax$
Mais aucune n'était adaptée à une situation très simple connue depuis le collège, la proportionnalité des grandeurs (
Tu pouvais choisir la régression linéaire et donc la proportionnalité des accroissements, pour un résultat pas toujours proche de ce que tu attendais et donc difficilement exploitable.
$mathjax$y = a x$mathjax$
).Tu pouvais choisir la régression linéaire et donc la proportionnalité des accroissements, pour un résultat pas toujours proche de ce que tu attendais et donc difficilement exploitable.
5) Python et autocomplétion
Go to topL'application Python passe dès maintenant sur la nouvelle version 1.12 de MicroPython.
La NumWorks devient de plus le premier modèle à disposer d'un assistant d'aide à la saisie Python !
Il prend la forme d'une fonctionnalité d'auto-complétion, une exclusivité sur calculatrices Python à ce jour. Mais c'est bien plus creusé que ce que tu pourrais croire, il y a un véritable assistant d'aide à la saisie derrière.
A peine commences-tu à taper un nom de fonction ou variable dans l'éditeur Python, que la calculatrice est désormais capable de te faire une suggestion, affichée en grisé directement au sein de l'éditeur. Si la suggestion te convient, tu peux alors la valider d'une seule touche en tapant
Et si jamais la suggestion ne te convient pas, tu peux soit poursuivre ta saisie avec les caractères suivant en espérant mieux, soit demander de suite d'autres suggestions d'une simple touche,
La NumWorks devient de plus le premier modèle à disposer d'un assistant d'aide à la saisie Python !
Il prend la forme d'une fonctionnalité d'auto-complétion, une exclusivité sur calculatrices Python à ce jour. Mais c'est bien plus creusé que ce que tu pourrais croire, il y a un véritable assistant d'aide à la saisie derrière.
A peine commences-tu à taper un nom de fonction ou variable dans l'éditeur Python, que la calculatrice est désormais capable de te faire une suggestion, affichée en grisé directement au sein de l'éditeur. Si la suggestion te convient, tu peux alors la valider d'une seule touche en tapant
OKou
→.
Et si jamais la suggestion ne te convient pas, tu peux soit poursuivre ta saisie avec les caractères suivant en espérant mieux, soit demander de suite d'autres suggestions d'une simple touche,
var.
6) Python et turtle
Go to topNous avions noté il y a quelques semaines à l'occasion de la sortie d'un module similaire chez Casio, quelques points faibles du module Python turtle de la NumWorks par rapport au standard :
- absence de la fonction write() permettant d'écrire du texte à la position de la tortue
- absence de la fonction colormode() permettant de choisir l'unité de coordonnées couleur RGB (nombres flottants entre 0 et 1, ou nombres entiers entre 0 et 255), pour compatibilité avec les scripts conçus pour des plateformes n'ayant pas fait le même choix par défaut (Casio et justement le standard sur ordinateur).
- appels circle(r) avec un paramètre de rayon r négatif pour inverser le sens de tracé ignorés
7) Turtle et compatibilité
Go to topRepassons un petit peu maintenant sur la conformité au standard du module turtle de la NumWorks, et donc sa compatibilité avec les scripts disponibles dans les livres ou en ligne.
Commençons déjà par tester les déplacements relatifs de la tortue. Voici par exemple avec la construction d'une rosace par rotation d'un polygone régulier :
La tortue travaillant en pixels, le code aurait besoin d'être adapté pour l'écran Graph 35+E II à plus faible définition. Mais à part cela, le code passe ici sans problème sur Casio, NumWorks et ordinateur.
Commençons déjà par tester les déplacements relatifs de la tortue. Voici par exemple avec la construction d'une rosace par rotation d'un polygone régulier :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
La tortue travaillant en pixels, le code aurait besoin d'être adapté pour l'écran Graph 35+E II à plus faible définition. Mais à part cela, le code passe ici sans problème sur Casio, NumWorks et ordinateur.
Complexifions un petit peu la chose avec la fractale de Koch. Rajoutons également un levé de crayon (penup), un déplacement absolu (goto), ainsi que l'utilisation d'une des couleurs prédéfinies :
Ici pareil, compatibilité totale !
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Ici pareil, compatibilité totale !
Allons bien plus loin niveau couleurs avec maintenant un soleil :
Problème ici sur NumWorks, qui a fait le choix de ne pas utiliser le même système de coordonnées que le standard pour les composantes de couleurs RVB :
Par contre, chez Casio cette fonction certes inutile ici n'est pas présente. Il nous faut donc sécuriser son appel en interceptant toute erreur éventuelle.
- Code: Select all
from math import exp
from turtle import *
for i in range(1,37):
red=(exp(-0.5 * ((i-6)/12)**2))
green=(exp(-0.5 * ((i-18)/12)**2))
blue=(exp(-0.5 * ((i-30)/12)**2))
pencolor([red, green, blue])
for i in range(1, 5):
forward(60)
right(90)
right(10)
Problème ici sur NumWorks, qui a fait le choix de ne pas utiliser le même système de coordonnées que le standard pour les composantes de couleurs RVB :
- nombres flottants de 0.0 à 1.0 sur Casio et ordinateur
- nombres entiers de 0 à 255 sur NumWorks et TI-83 Premium CE Edition Python
colormode(1.)
à tout script compatible Casio ou ordinateur pour le rendre également fonctionnel sur NumWorks ! Par contre, chez Casio cette fonction certes inutile ici n'est pas présente. Il nous faut donc sécuriser son appel en interceptant toute erreur éventuelle.
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Poursuivons avec une coquille d'escargot en appliquant la même astuce, et l'appel à la fonction de tracé de cercle circle() :
Sous réserve de cette toute petite astuce donc, compatibilité totale.
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Sous réserve de cette toute petite astuce donc, compatibilité totale.
Faisons maintenant neiger quelques flocons de Koch, en faisant variant l'épaisseur du crayon avec pensize() :
Les réglages d'épaisseur du crayon via pensize() semblent hélas totalement ignorés chez Casio.
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Les réglages d'épaisseur du crayon via pensize() semblent hélas totalement ignorés chez Casio.
Passons maintenant à une rosace construite par rotation d'un cercle, avec une écriture de texte via la fonction write().
Cette fonction standard n'était jusqu'à présent pas disponible dans le module turtle de NumWorks.
Mais maintenant c'est le cas alors voyons ce que ça donne :
Petit écart chez Casio, avec le texte qui est écrit en prenant la position de la tortue comme coin supérieur gauche, alors que le standard la prend comme coin inférieur gauche.
Cette fonction standard n'était jusqu'à présent pas disponible dans le module turtle de NumWorks.
Mais maintenant c'est le cas alors voyons ce que ça donne :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Petit écart chez Casio, avec le texte qui est écrit en prenant la position de la tortue comme coin supérieur gauche, alors que le standard la prend comme coin inférieur gauche.
Passons maintenant au script de démo dédié à la Casio Graph 90+E, avec inversion du sens de tracé des cercles.
Il suffisait pour cela de passer un rayon négatif à la fonction circle(), ce qui n'était hélas pas géré chez NumWorks et ignoré.
Mais maintenant apparemment désormais c'est bon :
Il suffisait pour cela de passer un rayon négatif à la fonction circle(), ce qui n'était hélas pas géré chez NumWorks et ignoré.
Mais maintenant apparemment désormais c'est bon :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Juste pour le plaisir, un dernier exemple avec les triangles de Sierpiński :
Graph 35+E II | Graph 90+E | Num Works | ordi |
|
Une implémentation du module turtle hautement fidèle, en excellent adéquation avec le standard sur cette série d'exemples !
La NumWorks nous apparaît ainsi clairement comme la solution nomade la plus facile à utiliser en pratique en classe dans le contexte du module turtle; c'est a priori celle où l'on rencontrera le moins d'incidents avec les scripts conçus pour d'autres plateformes fournis par les livres ou Internet.
La NumWorks nous apparaît ainsi clairement comme la solution nomade la plus facile à utiliser en pratique en classe dans le contexte du module turtle; c'est a priori celle où l'on rencontrera le moins d'incidents avec les scripts conçus pour d'autres plateformes fournis par les livres ou Internet.
8) Python et matplotlib
Go to topDe même, nous avions noté il y a quelques semaines lors de la sortie d'un module similaire chez Casio, quelques points faibles avec le module Python matplotlib.pyplot de la NumWorks par rapport au standard :
- impossibilité d'afficher un diagramme vide
- erreur en cas de précision d'un paramètre de couleur pour les tracés de diagrammes
- erreur en cas de précision du paramètre de forme pour les tracés de points
- erreur en cas de précision du paramètre nommé de taille pour les tracés de flèches ou vecteurs
Et ici de même, ce que nous avons évoqué semble avoir été traité. ! Plus d'erreur de syntaxe donc quand tu réutilises des scripts conçus pour d'autres plateformes !
Les paramètres de couleurs sont donc désormais acceptés et fonctionnels, conformément au standard :
- paramètres de couleur optionnels (fonction plot)
- paramètres de couleur nommés (fonctions scatter, bar, hist, et arrow)
9) Matplotlib et compatibilité
Go to topTestons donc maintenant la conformité au standard de matplotl.pyplot, et donc par conséquent sa compatibilité avec les scripts conçus pour d'autres plateformes.
Commençons déjà avec les fonctions de base, comme axis() pour régler les bornes de la fenêtre graphique, même si ce n'est pas obligatoire et qu'elles s'adapteront par défaut au contenu affiché :
Plus aucun problème donc sur la NumWorks à afficher une fenêtre graphique vide.
Commençons déjà avec les fonctions de base, comme axis() pour régler les bornes de la fenêtre graphique, même si ce n'est pas obligatoire et qu'elles s'adapteront par défaut au contenu affiché :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Plus aucun problème donc sur la NumWorks à afficher une fenêtre graphique vide.
Sortons maintenant text() pour afficher du texte :
Petit écart, on remarque que la NumWorks opte pour une graduation sur les axes, alors que les autres plateformes utilisent une graduation en bordure de fenêtre.
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Petit écart, on remarque que la NumWorks opte pour une graduation sur les axes, alors que les autres plateformes utilisent une graduation en bordure de fenêtre.
Démarrons maintenant avec de petits diagrammes en barres via la fonction bar() :
Ici nous travaillons donc non pas sur des pixels mais des coordonnées, ce qui permet à la Casio Graph 35+E II de nous produire un affichage correct malgré un écran très inférieur à la concurrence.
Très léger détail, notons que la NumWorks n'utilise pas la même couleur de barre par défaut que les autres plateformes couleur, y compris l'ordinateur.
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Ici nous travaillons donc non pas sur des pixels mais des coordonnées, ce qui permet à la Casio Graph 35+E II de nous produire un affichage correct malgré un écran très inférieur à la concurrence.
Très léger détail, notons que la NumWorks n'utilise pas la même couleur de barre par défaut que les autres plateformes couleur, y compris l'ordinateur.
Passons maintenant à des nuages de points à l'aide de la fonction scatter() :
On apprécie le style de point par défaut conforme au standard (ordinateur) sur la NumWorks, contraitement à chez Casio.
On apprécie également d'avoir cette fois-ci désormais la bonne couleur de point par défaut.
Par contre, petit problème de positionnement de texte sur la NumWorks. Au lieu d'utiliser comme les autres les coordonnées fournies comme coin supérieur gauche du texte affiché, elle les utilise apparemment comme coin inférieur gauche...
Précisons toutefois que la NumWorks compense cela par une possibilité formidable, celle de faire défiler la fenêtre graphique en cours d'affichage à l'aide des flèches du clavier comme sur ordinateur, ce qui n'est pas possible sur les calculatrices concurrentes !
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
On apprécie le style de point par défaut conforme au standard (ordinateur) sur la NumWorks, contraitement à chez Casio.
On apprécie également d'avoir cette fois-ci désormais la bonne couleur de point par défaut.
Par contre, petit problème de positionnement de texte sur la NumWorks. Au lieu d'utiliser comme les autres les coordonnées fournies comme coin supérieur gauche du texte affiché, elle les utilise apparemment comme coin inférieur gauche...
Précisons toutefois que la NumWorks compense cela par une possibilité formidable, celle de faire défiler la fenêtre graphique en cours d'affichage à l'aide des flèches du clavier comme sur ordinateur, ce qui n'est pas possible sur les calculatrices concurrentes !
Passons maintenant à quelques diagrammes en ligne brisée et à la fonction plot() :
On apprécie ici encore avec la fonctio plot() l'utilisation de la bonne couleur par défaut.
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
On apprécie ici encore avec la fonctio plot() l'utilisation de la bonne couleur par défaut.
Bon, tentons maintenant de prendre le contrôle des couleurs.
Tiens, surprise, après une première tentative pourtant encourageante nous obtenons une erreur avec pourtant le même genre d'appel.
Ce n'est donc pas que le paramètre de couleur n'est pas géré, mais que le nom de couleur fourni à la deuxième tentative, ici "magenta" soir pourtant une couleur de base, est inconnu de la NumWorks.
Ne disposant pas du module matplotlib.colors, on peut tester bêtement toutes les couleurs standard à l'aide du script suivant afin de savoir ce qu'il en retourne :
Effectivement, si la NumWorks reconnaît 18 noms de couleurs prédéfinies soit un petit peu plus que la concurrence, elle souffre encore de quelques manques parmi les couleurs de base :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Tiens, surprise, après une première tentative pourtant encourageante nous obtenons une erreur avec pourtant le même genre d'appel.
Ce n'est donc pas que le paramètre de couleur n'est pas géré, mais que le nom de couleur fourni à la deuxième tentative, ici "magenta" soir pourtant une couleur de base, est inconnu de la NumWorks.
Ne disposant pas du module matplotlib.colors, on peut tester bêtement toutes les couleurs standard à l'aide du script suivant afin de savoir ce qu'il en retourne :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Effectivement, si la NumWorks reconnaît 18 noms de couleurs prédéfinies soit un petit peu plus que la concurrence, elle souffre encore de quelques manques parmi les couleurs de base :
Casio | NumWorks |
black / k white / w red / r yellow / y green / g blue / b cyan / c magenta . . . . | black / k white / w red / r yellow / y green / g blue / b cyan grey brown orange purple pink |
8 couleurs 15 noms | 12 couleurs 18 noms |
Allumons maintenant quelques points :
Aille, ici encore un problème sur la NumWorks qui accepte certes désormais le 3ème argument de la fonction plot() pour la forme des points, mais en refuse la valeur "+".
Testons de façon similaire tous les styles de point standard à l'aide du script suivant afin de savoir ce qui est géré ou pas :
Déjà problème, l'allumage d'un point avec plot() semble ne pas du tout marcher sur la NumWorks.
Et en face chez Casio, bien que 4 styles de point différents soient gérés, ils affichent visiblement tous la même chose.
Sinon effectivement, très peu de marqueurs sont gérés sur la NumWorks, et pas les mêmes que chez la concurrence :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Aille, ici encore un problème sur la NumWorks qui accepte certes désormais le 3ème argument de la fonction plot() pour la forme des points, mais en refuse la valeur "+".
Testons de façon similaire tous les styles de point standard à l'aide du script suivant afin de savoir ce qui est géré ou pas :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Déjà problème, l'allumage d'un point avec plot() semble ne pas du tout marcher sur la NumWorks.
Et en face chez Casio, bien que 4 styles de point différents soient gérés, ils affichent visiblement tous la même chose.
Sinon effectivement, très peu de marqueurs sont gérés sur la NumWorks, et pas les mêmes que chez la concurrence :
Casio | NumWorks |
. o * + | . 1 _ |
4 marqueurs | 3 marqueurs |
Pénultième batterie de tests, passons maintenant à quelques flèches / vecteurs :
Personne ne semble tracer les pointes de flèches de la même façon, mais au moins ça marche.
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Personne ne semble tracer les pointes de flèches de la même façon, mais au moins ça marche.
Tentons donc de prendre le contrôle de la flèche :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Enfin, terminons avec les diagrammes en boîte avec la fonction boxplot() :
Et histoire d'avoir des diagrammes en boîte correctement affchés dans le cadre de l'enseignement français, Casio rajoute en prime au standard avec la fonction boxplotFR() :
Hélas, la fonction boxplot() n'est toujours pas incluse chez NumWorks.
Graph 35+E II | Graph 90+E | NumWorks | ordi |
|
Et histoire d'avoir des diagrammes en boîte correctement affchés dans le cadre de l'enseignement français, Casio rajoute en prime au standard avec la fonction boxplotFR() :
Graph 35+E II | Graph 90+E | NumWorks | ordi |
| |||
|
Hélas, la fonction boxplot() n'est toujours pas incluse chez NumWorks.
Contrairement au module turtle précédent, matplotlib.pyplot est encore incomplet et souffre également de quelques petits écarts ou bugs. La conformité au standard n'en est pas au même point, et matplotlib.pyplot à la différence ne permet donc pas encore de pouvoir lancer les yeux fermés les scripts fournis dans les livres ou récupérés sur Internet.
Il n'empêche que l'implémentation déjà réalisée de matplotlib.pyplot est un travail titanesque et qu'elle a en prime beaucoup progressé depuis la version précédente.
Notre ressenti est donc globalement très positif; NumWorks est en très bonne voie, et nous espérons pouvoir continuer à noter des progrès dans la prochaine version.
Il n'empêche que l'implémentation déjà réalisée de matplotlib.pyplot est un travail titanesque et qu'elle a en prime beaucoup progressé depuis la version précédente.
Notre ressenti est donc globalement très positif; NumWorks est en très bonne voie, et nous espérons pouvoir continuer à noter des progrès dans la prochaine version.
10) Python et mémoires
Go to topLes interpréteurs MicroPython ou similaires qui tournent sur ta calculatrice font appel à 3 types de mémoires avec les rôles suivants :
En gros le stack / pile limite donc le nombre d'objets différents pouvant exister simultanément en mémoire, alors que le heap / tas limite la taille globale occupé par ces objets.
La mémoire de stockage est toujours de 32 Kio.
Une façon de mesurer maintenant la capacité de stack / pile de façon relative c'est la récursivité, soit les fonctions qui se rappellent elles-mêmes. Prenons le script suivant :
A moins d'avoir négligé un paramètre, il semble ici y avoir un recul. L'appel
D'où le classement :
Malgré cela en terme de stack / pile, la NumWorks apparaît toujours comme disposant du meilleur Python en mode examen !
Pour mesurer maintenant la capacité de heap / tas, nous faisons appel au script mem.py :
Pas de changement notable ici, l'appel mem() continue à renvoyer dans les 32 Ko.
D'où le classement :
- la mémoire de stockage qui accueille et conserve tes scripts
- le stack (pile) qui, à l'exécution, accueille les références vers les objets créés
- le heap (tas) qui, à l'exécution, accueille les valeurs de ces objets
En gros le stack / pile limite donc le nombre d'objets différents pouvant exister simultanément en mémoire, alors que le heap / tas limite la taille globale occupé par ces objets.
La mémoire de stockage est toujours de 32 Kio.
Une façon de mesurer maintenant la capacité de stack / pile de façon relative c'est la récursivité, soit les fonctions qui se rappellent elles-mêmes. Prenons le script suivant :
- Code: Select all
def sumr(n):return n>0 and n+sumr(n-1)
def maxr(fct):
n=0
try:
while True:
fct(n)
n=n+1
except Exception as e:print(e)
return n
A moins d'avoir négligé un paramètre, il semble ici y avoir un recul. L'appel
maxr(sumr)
ne renvoie plus 144 mais 128.D'où le classement :
Aux examens :
- 128 :
NumWorks - 82 :
Casio Graph 90+E
Casio Graph 35+E II - 77 :
HP Prime (version alpha) - 23
TI-83 Premium CE Edition Python
En classe :
- 5362 :
Casio Graph 35/75+E (application CasioPython) - 655 :
Casio Graph 35+E II (application CasioPython) - 128 :
NumWorks - 130 :
TI-Nspire (application MicroPython) - 82 :
Casio Graph 90+E
Casio Graph 35+E II - 77 :
HP Prime (version alpha) - 23
TI-83 Premium CE Edition Python - 20
TI-83 Premium CE + TI-Python - 15
TI-83 Premium CE + TI-Python (firmware tiers)
Malgré cela en terme de stack / pile, la NumWorks apparaît toujours comme disposant du meilleur Python en mode examen !
Pour mesurer maintenant la capacité de heap / tas, nous faisons appel au script mem.py :
- Code: Select all
def sizeenv():
s=0
import __main__
for o in dir(__main__):
try:s+=size(eval(o))
except:pass
return s
def size(o):
s,t=0,type(o)
if t==str:s=49+len(o)
if str(t)=="<class 'function'>":s=136
if t==int:
s=24
while o:
s+=4
o>>=30
if t==list:
s+=64
for so in o:s+=8+size(so)
return s
def mem(v=1,r=1):
try:
l=[]
try:
l+=[r and 793+sizeenv()]
if v*r:print(" ",l[0])
l+=[0]
l+=[""]
l[2]+="x"
while 1:
try:l[2]+=l[2][l[1]:]
except:
if l[1]<len(l[2])-1:l[1]=len(l[2])-1
else:raise(Exception)
except:
if v:print("+",size(l))
try:l[0]+=size(l)
except:pass
try:l[0]+=mem(v,0)
except:pass
return l[0]
except:return 0
Pas de changement notable ici, l'appel mem() continue à renvoyer dans les 32 Ko.
D'où le classement :
Aux examens :
En classe :
- 2,049276 Mo :
TI-Nspire (application MicroPython) - 1,032942 Mo :
Casio Graph 90+E - 1,022145 Mo :
HP Prime (version alpha) - 257,636 Ko :
Casio Graph 35/75+E (application CasioPython) - 100,560 Ko :
Casio Graph 35+E II - 31,899 Ko :
Casio Graph 35+E II (application CasioPython) - 32,339 Ko
NumWorks (firmware Omega) - 31,624 Ko
NumWorks - 22,605 Ko
TI-83 Premium CE + TI-Python (firmware tiers) - 20,200 Ko
TI-83 Premium CE Edition Python - 19,924 Ko
TI-83 Premium CE + TI-Python
11) Python et exploration modules
Go to topPuisque nous avons donc une toute nouvelle version MicroPython ainsi que de nouvelles fonctions dans certains modules, petit bilan en passant au sujet de la richesse des solutions Python sur calculatrices. Nous explorons les modules avec le script explmod.py :
D'où le classement :
- Code: Select all
def getplatform():
id=-1
try:
import sys
try:
if sys.platform=='nspire':id=0
if sys.platform.startswith('TI-Python') or sys.platform=='Atmel SAMD21':id=4
except:id=3
except:
try:
import kandinsky
id=1
except:
try:
if chr(256)==chr(0):id=5+(not ("HP" in version()))
except:
id=2
return id
platform=getplatform()
#lines shown on screen
#plines=[29,12, 7, 9,11,0,0]
plines=[29,16, 7, 9,11,0,0]
#max chars per line
#(error or CR if exceeded)
pcols =[53,99,509,32,32,0,0]
unsafe = ((), (), (), ('sys.argv', 'sys.path'), (), (), ())
if platform>=0:
curline=0
_p = print
nlines=plines[platform]
ncols=pcols[platform]
def print(*ls):
global curline
st=""
for s in ls:
if not(isinstance(s,str)):
s=str(s)
st=st+s
stlines=1+int(len(st)/ncols)
if curline+stlines>=nlines:
input("Input to continue:")
curline=0
_p(st)
curline+=stlines
def sstr(obj):
try:
s=obj.__name__
except:
s=str(obj)
a=s.find("'")
b=s.rfind("'")
if a>=0 and b!=a:
s=s[a+1:b]
return s
def isExplorable(obj):
for k in done:
try:
if isinstance(obj, eval(k)):
t, done[k] = done[k], True
return not t
except: pass
if str(obj).startswith("<module"): return False
l = ()
try: l = dir(obj)
except: pass
return len(l)
done = {'str':False, 'list':False, 'tuple':False, 'dict':False, 'complex':False, 'set':False, 'frozenset': False}
def explmod(pitm, pitmsl=[], reset=True):
global curline
spitm=sstr(pitm)
if(reset):
curline=0
pitmsl=[spitm]
for k in done: done[k] = False
hd="."*(len(pitmsl)-1)
c,c2=0,0
l = sorted(dir(pitm))
for i in range(len(l)):
l[i] = (l[i], getattr(pitm, l[i]))
try:
if not isinstanceof(pitm, str):
for i in range(len(pitm)):
l.append((spitm+'['+str(i)+']',pitm[i]))
except: pass
for itm in l:
c,c2=c+1,c2+1
isUnsafe = platform >= 0 and '.'.join(pitmsl + [itm[0]]) in unsafe[platform]
try:
if isUnsafe: raise Exception
print(hd+itm[0]+"="+str(itm[1]))
except:
print(hd+itm[0])
if not isUnsafe and isExplorable(itm[1]) and itm[1] != pitm and itm[0] not in pitmsl:
pitmsl2=pitmsl.copy()
pitmsl2.append(itm[0])
c2=c2+explmod(itm[1], pitmsl2, False)[1]
if c>0 and reset:
print(hd+"Total: "+str(c)+" 1st level item(s)")
if c2>0 and c2!=c:
print(hd+" "+str(c2)+" item(s)")
return [c,c2]
D'où le classement :
Casio Graph 35+E II 90+E | NumWorks | TI-83PCE Ed. Python | ||
builtins array collections cmath gc math matplotlib matplotlib.pyplot micropython os random sys time turtle uerrno | 84-197 . . . . 25-47 . . . . 8-30 . . . . | 97-1581 3-363 . 13-428 9-404 42-602 . . 10-410 . . 17-977 . . 25-1277 | 89-211 . . 12-34 . 41-63 3-25 11-33 7-29 . 9-31 . 3-25 40-62 . | 92-211 2-24 2-24 . 7-29 28-50 . . . . 8-30 15-93 4-26 . . |
spécifique | casioplot:6-28 | prime:3-368 | ion:48-162 kandinsky:6-28 | ti_graphics:30-75 ti_hub:20-42 ti_plotlib:49-84 ti_system:12-34 ti_rover:66-92 analogin:3-46 analgout:3-48 bbport:3-44 brightns:5-29 color:6-30 colorinp:3-39 conservo:3-47 dht:3-25 digital:3-25 led:3-25 light:6-30 lightlvl:3-46 loudness:3-25 magnetic:3-25 moisture:3-25 potentio:3-46 power:3-25 ranger:3-25 relay:3-25 rgb:3-25 rgb_arr:3-52 servo:3-25 sound:5-29 speaker:3-25 squarewv:3-46 temperat:3-45 thermist:3-46 timer:3-35 vernier:3-25 vibmotor:3-47 |
Modules | 4 | 9 | 11 | 43 |
Eléments | 123-302 | 219-6042 | 269-703 | 435-1844 |
- 435-1844 éléments : TI-83 Premium CE Edition Python
- 269-703 éléments : NumWorks
- 219-6042 éléments : HP Prime (version alpha)
- 123-302 éléments : Casio Graph 90+E / 35+E II
Casio Graph 35+E II 90+E | CasioPython Casio Graph 35+E II 35+E/USB 75/85/95 | MicroPython TI-Nspire | TI-Python | TI-83PCE Ed. Python | ||
builtins array collections cmath gc math matplotlib matplotlib.pyplot micropython os random sys time turtle uerrno | 84-197 . . . . 25-47 . . . . 8-30 . . 69-126 . | 91-230 2-28 . 12-38 7-33 41-67 . . 6-32 . 8-34 12-38 . . 24-108 | 93-218 2-28 . 12-38 7-33 41-67 . . 3-29 . . 15-86 . . . | 92-212 2-24 2-24 . 7-29 28-50 . . . . 8-30 15-93 4-26 . . | 93-214 2-25 2-25 12-35 7-30 41-64 . . 6-29 15-38 8-31 15-99 8-33 . . | 92-211 2-24 2-24 . 7-29 28-50 . . . . 8-30 15-93 4-26 . . |
spécifique | casioplot:6-28 matplotl:25-68 | nsp:3-10 | board:22 storage:7-47 | ti_graphics:30-75 ti_hub:20-42 ti_plotlib:49-84 ti_system:12-34 ti_rover:66-92 ce_box:5-32 ce_chart:8-67 ce_quivr:5-41 ce_turtl:9-98 analogin:3-46 analgout:3-48 bbport:3-44 brightns:5-29 color:6-30 colorinp:3-39 conservo:3-47 dht:3-25 digital:3-25 led:3-25 light:6-30 lightlvl:3-46 loudness:3-25 magnetic:3-25 moisture:3-25 potentio:3-46 power:3-25 ranger:3-25 relay:3-25 rgb:3-25 rgb_arr:3-52 servo:3-25 sound:5-29 speaker:3-25 squarewv:3-46 temperat:3-45 thermist:3-46 timer:3-35 vernier:3-25 vibmotor:3-47 | ||
Modules | 6 | 9 | 8 | 9 | 13 | 47 |
Eléments | 217-496 | 203-608 | 176-509 | 158-488 | 238-692 | 462-2082 |
- 462-2082 éléments : TI-83 Premium CE Edition Python
- 269-703 éléments : NumWorks
- 238-692 éléments : TI-83 Premium CE + TI-Python (firmware tiers)
- 219-6042 éléments : HP Prime (version alpha)
- 217-496 éléments : Casio Graph 90+E / 35+E II / fx-CG50 / fx-9750/9860GIII
- 203-608 éléments : Casio Graph 75/85/95 / 35+E/USB / 35+E II / fx-9750GII/GIII / fx-9860G/GII/GIII (appli CasioPython)
- 176-509 éléments : TI-Nspire (appli MicroPython)
- 158-488 éléments : TI-83 Premium CE + TI-Python
La NumWorks apparaît donc comme l'une des solutions nomades les plus riches niveau Python !
Conclusion
Go to topNumWorks nous signe donc aujourd'hui une superbe mise à jour avec des progrès très significatifs pour l'utilisateur et l'enseignement en classe !
Des avancées majeures dans les applications Calculs et Python, et de superbes améliorations et extensions des modules turtle et matplotlib.pyplot de cette dernière.
Visiblement NumWorks tient compte en un temps record et dans les moindres détails de toutes les critiques bienveillantes que nous pouvons publier.
Et tout cela comme d'habitude disponible gratuitement, que demander de plus ?
Des avancées majeures dans les applications Calculs et Python, et de superbes améliorations et extensions des modules turtle et matplotlib.pyplot de cette dernière.
Visiblement NumWorks tient compte en un temps record et dans les moindres détails de toutes les critiques bienveillantes que nous pouvons publier.
Et tout cela comme d'habitude disponible gratuitement, que demander de plus ?
Petit alerte toutefois, le firmware NumWorks en version 14 est nettement plus gros que la version précédente, avec pas moins de 921,6 Kio.
Ce n'est absolument pas problématique pour la NumWorks N0110 distribuée à partir de la rentrée 2019 avec ses 8 Mio de Flash.
Nous sommes toutefois de plus en plus inquiets pour la NumWorks N0100 originale sortie pour la rentrée 2017. Ses 1 Mio de Flash sont donc maintenant occupés par le dernier firmware à plus de 90%.
Si les améliorations continuent au même rythme, d'ici quelques versions il deviendra impossible de faire tout rentrer sur NumWorks N0100...
Le constructeur va visiblement devoir prendre de grandes décisions assez rapidement...
Ce n'est absolument pas problématique pour la NumWorks N0110 distribuée à partir de la rentrée 2019 avec ses 8 Mio de Flash.
Nous sommes toutefois de plus en plus inquiets pour la NumWorks N0100 originale sortie pour la rentrée 2017. Ses 1 Mio de Flash sont donc maintenant occupés par le dernier firmware à plus de 90%.
Si les améliorations continuent au même rythme, d'ici quelques versions il deviendra impossible de faire tout rentrer sur NumWorks N0100...
Le constructeur va visiblement devoir prendre de grandes décisions assez rapidement...
Liens :
- Mise à jour (suivre les instructions)
- Simulateur en ligne
- Code source