Nous t'avionsdéjàparlé de notre cher cent20, enseignant au lycée Louis Pasteur à Avignon dont les élèves de Seconde s'étaient brillamment illustrés par leurs productions graphiques sur NumWorks dans le cadre du DM n°21 les mathématiques sont belles.
Le sujet était ouvert, certains ont utilisé l'application Fonctions et d'autres l'application Python, dans tous les cas avec grand talent :
Couronnement de tout ceci, nous avons l'immense plaisir de voir que notre cher cent20 est aujourd'hui la vedette exclusive de la NumLetter, la newsletter mensuelle de NumWorks, dans son édition de Mai 2021 !
Aujourd'hui, voici un champ de fleurs ensoleillé sur ta NumWorks.
Cette création utilise le module Pythonturtle pour tracer par rotations pas moins de 240 quadrilatères :
160 pour les 4 fleurs
80 pour le soleil
Elle est l'œuvre de Charlie, élève de Seconde disciple de cent20 au lycée Louis Pasteur à Avignon, réalisée dans le contexte du DM de Mathématiques n°21 les mathématiques sont belles.
Aujourd'hui, nouvelle mise à jour 15.5.0 pour ta NumWorks.
Il ne semble quasiment pas y avoir de nouveautés visibles pour l'utilisateur, la page officielle ne faisant qu'annoncer à l'identique les fonctionnalités déjà introduites par la version précédente 15.3.0.
La seule chose visible semble être dans l'application Paramètres à l'écran À propos. Sur la ligne Version du logiciel, tu pouvais appuyer sur
OK
afin de basculer l'affichage entre :
la version du logiciel installé sur la calculatrice
et l'identifiant du dernier commit au code source pris en compte lors de la compilation de cette version
Nouveauté donc, c'est désormais entre 3 valeurs que la touche
OK
te permet de basculer sur la ligne en question.
Nos NumWorks N0100 et N0110 affichent alors un mystérieux 00.00 comme 3ème valeur.
Mine de rien, ce pauvre 00.00 est en fait le pot aux roses qui nous fait découvrir quelque chose d'énorme.
La NumWorks N0100 était donc sortie pour la rentrée 2017, et son successeur NumWorks N0110 pour la rentrée 2019, ce qui laissait supposer jusqu'à présent un cycle de renouvellement matériel de 2 ans.
Et bien ça n'a pas manqué, selon le code source les seules valeurs affichables à ce jour sont 00.00 et 03.43, cette dernière correspondant bien à une nouvelle révision du matériel de la calculatrice !
Oui oui, il semble que NumWorks nous ait prévu une belle surprise pour la rentrée 2021, une nouvelle calculatrice NumWorks !
Si l'on se fie au code source, la nouvelle NumWorks de rentrée 2021 ne changerait cette fois-ci pas de référence de modèle gravé au dos du boîtier, toujours NumWorks N0110. Cette nouvelle calculatrice pourrait donc être appelée à ce jour NumWorks N0110 r3.43.
Toujours selon le code source, nous aurons droit à une nouvelle puce de mémoire Flash. Nous restons chez le fondeur Adesto mais passerions de la AT25SF641 à la AT25SF641B. Pas de changement de capacité toutefois, nous restons sur du 8 Mio.
Mais pour qu'il ait été jugé pertinent d'afficher désormais la révision du matériel, c'est que cela doit bien avoir des conséquences pour l'utilisateur d'une façon ou d'une autre...
Et effectivement ce n'est pas tout, le code source semble également indiquer le passage à un tout nouveau microcontrôleur, avec peut-être ici de bonnes nouvelles sur le processeur et la mémoire RAM, mystère encore à ce jour... mais nous avons hâte de découvrir, tester et t'annoncer tout cela aussi précisément que possible.
Pour la rentrée 2019, NumWorks te sortait une coque collector en édition limitée pour sa calculatrice, la Macaremaths, illustrée tout en humour et talent sur le thème des Mathématiques.
Dans le même genre NumWorks renouvelle l'expérience en mieux cette année scolaire 2020-2021. Tu as déjà eu plusieurs opportunités d'habiller ta calculatrice de façon unique au monde ; tu as déjà eu l'occasion de gagner les coques édition limitée de :
Les interpréteurs MicroPython ou similaires qui tournent sur nos calculatrices font appel à différents types de mémoires :
La mémoire de stockage, qui contient physiquement tes scripts prêts à l'emploi.
La pile (stack) qui référence, à l'exécution, les objets Python créés. Sa capacité limite donc le nombre d'objets Python pouvant coexister simultanément en mémoire.
Le tas (heap) qui stocke, à l'exécution, le contenu des objets Python créés. Il limite donc la taille globale utilisée pour les données de ces différents objets.
Le langage Python est un très gros consommateur de mémoire heap. En effet sur les plateformes 32 bits, un entier nul occupe déjà pas moins de 24 octets. Alors imagine tout le reste...
Tout ceci pour dire que la mémoire heap sera très souvent le facteur limitant lors de tes projets Python sur calculatrices.
Afin de te permettre de choisir ton modèle en toute connaissance de cause, nous t'avions déjà communiqué un classement des différents modèles Python par capacité heap :
101,262 Ko : Casio Graph 35+E II / fx-9750/9860GIII
64,954 Ko : NumWorks(firmware Omega + appli KhiCAS)
33,545 Ko : NumWorks
32,648 Ko : Casio Graph 35+E II / 35/75/85/95(SH3) / fx-9750/9860GIII / fx-9750/9860GII(SH3) / fx-9860G(appli CasioPython)
23,685 Ko : TI-83 Premium CE + TI-Python(firmware tiers)
20,839 Ko : TI-83 Premium CE + TI-Python
18,354 Ko : TI-83 Premium CE Edition Python / TI-84 Plus CE Python Edition
De nouveaux éléments concernant la NumWorks nécessitent aujourd'hui la mise à jour de ce classement : une bonne et une mauvaise nouvelle. Commençons par la mauvaise.
Sur NumWorks N0110, tu as la possibilité d'installer KhiCAS, une application t'offrant un environnement intégré de Mathématiques et de Sciences développé par Bernard Parisse, enseignant-chercheur à l'Université de Grenoble, en parallèle de son logiciel Xcas pour ordinateur. Elle intègre nombre de choses : moteur de calcul formel GIAC, bibliothèques d'unités et de constantes physiques, application tableur, application de tableau périodique des éléments, langages de programmation Python et Xcas, ...
Le firmware officiel ne gérant pas les applications additionnelles, pour l'installer il te fallait commencer par passer ta calculatrice sous un firmware tiers, comme par exemple Omega. Or, l'application KhiCAS distribuée sur la page du firmware tiers Omega est sûrement suffisante pour nombre de choses, mais n'est pas stable.
Si tu es un utilisateur exigeant de KhiCAS, il te faut une version aussi fiable que possible et elle existe ; il te suffit de prendre l'application KhiCAS distribuée pour Delta, un autre firmware tiers.
Mise à part la gestion des applications, Delta apporte beaucoup moins d'améliorations qu'Omega, et malheureusement ces deux éditions de l'application KhiCAS ne sont pas interchangeables. En attendant une éventuelle résolution du problème, nous nous devons donc de tenir compte de Delta au classement.
D'autre part, nous ne l'avions pas remarqué mais Omega a changé la capacité du heapPython à compter de sa version 1.21 un peu plus tôt cette année...
Alors découvrons tout cela sans plus attendre.
Le module Python standard gc permet de connaître la capacité exacte du heap, d'un simple appel gc.mem_alloc() + gc.mem_free(). Toutefois, toutes les calculatrices Python n'intègrent pas ce module.
Afin de pouvoir faire des comparaisons équitables, nous construisons notre propre script d'estimation de la capacité heap. Il utilise les tailles des objets Python suivantes, valides pour les plateformes 32 bits que sont à ce jour nos calculatrices :
pour un entier nul : 24 octets déjà...
pour un entier court non nul (codable sur 31 bits + 1 bit de signe) : 28 octets
pour un entier long :
28 octets
+ 4 octets pour chaque groupe de 30 bits utilisé par son écriture binaire au-delà des 31 bits précédents
pour une chaîne :
49 octets
+ 1 octet par caractère
pour une liste :
64 octets
+ 8 octets par élément
+ les tailles de chaque élément
Notre script va tenter de remplir le heap. Il utilise pour cela plusieurs objets qu'il va tenter de faire grandir chacun son tour, jusqu'à déclenchement d'une erreur, et retourner alors le calcul de la capacité ainsi consommée.
Nous récupérerons de plus la plus grand taille d'objet que nous avons réussi à utiliser lors de ce test, on t'explique de suite.
def size(o): t = type(o) s = t == str and 49 + len(o) if t == int: s = 24 while o: s += 4 o >>= 30 elif t == list: s = 64 + 8*len(o) for so in o: s += size(so) return s
Selon l'état de l'interpréteur Python, la capacité retournée par un appel mem() peut légèrement varier. Aussi lancerons-nous le test plusieurs fois et conserverons-nous la valeur maximale, voici une fonction en ce sens :
def testmem(): m1, m2 = 0, 0 while 1: t1, t2 = mem(0) if t1 > m1 or t2 > m2: m1 = max(t1, m1) m2 = max(t2, m2) input(str((m1,m2)))
Sur les NumWorks munies du firmware officiel Epsilon nous trouvons 32,526 Ko, et c'était pareil avec le firmware tiers Omega jusqu'à la version 1.20.3.
Sur la NumWorks N0110 munie du firmware tiers Delta, nous trouvons nettement moins pour le heap de l'application Python officielle, seulement 24,179 Ko.
Est-ce cette économie de mémoire qui permet à KhiCAS de fonctionner correctement ? En tous cas l'interpréteur Python de KhiCAS retourne pour le même test la superbe capacité de 63,898 Ko.
Si tu munis maintenant ta NumWorks des dernières version 1.21 du firmware tiers Omega, tu obtiens alors une fantastique capacité heap de désormais 98,928 Ko !
Avec la nouvelle capacité heapPython de près de 100 Ko dans Omega 1.21, ta NumWorks a enfin presque terminé de rattraper son retard sur la Casio Graph 35+E II bien moins chère !
Précisons que pour être aussi exact que possible, il faut rajouter à ces valeurs de retour la consommation mémoire des définitions du script, soit 1,056 Ko.