Archivage de mon article originel (avant la sortie de la version 13.2.0) d'Epsilon.Le contenu de ce message n'est plus d'actualité, NumWorks ayant décidé de résoudre ce qu'à titre personnel je considérais être le principal problème de cette calculatrice.LA GESTION DE LA MÉMOIRE PYTHON SUR LA NUMWORKS, UN ÉPINEUX PROBLÈME
La mémoire, c’est comme les amis ; elle vous laisse souvent tomber au moment où on a le plus besoin.Ce proverbe espagnol trouve son sens ici.
En plein milieu du développement, et alors que mon script ne faisait que 2.6 ko l’émulateur NumWorks associé au workshop refusa d’exécuter mon script.
MemoryError : memory allocation failed , allocating XXX bytes.
Si je savais pertinemment que la fin du développement ne pourrait se faire que sur la calculatrice elle-même, car le workshop ne fonctionne pas sur la version beta d’epsilon, le logiciel qui fait tourner la numworks mais j’ai été bloqué bien avant d’arriver à la problématique des getkey.
La calculatrice dispose de 16ko réservé à l’exécution des scripts, c’est à dire la quantité de mémoire fixé au strict minimum recommandé par les développeurs de
MicroPython :
Yet it is compact enough to fit and run within just 256k of code space and 16k of RAM
Pour installer windows 10, la configuration requise par Microsoft est :
Processeur
rocesseur de 1 GHz ou plus rapide
RAM : 1 gigaoctet (Go) pour système 32 bits ou 2 Go pour système 64 bits
16 Go pour système 32 bits ou 32 Go pour système 64 bits
Tout utilisateur de Windows 10 sait très bien que ces chiffres ne suffisent pas, et qu’un tel système sera lent, peu efficace, son utilisation ne sera pas agréable.
On peut légitimement penser qu’il en est de même avec MicroPython. 16ko suffisent d’après la documentation, mais si s’était le cas pourquoi les
MicroPython boards datées de 2016 proposent-elles en moyenne une mémoire utile de 85 ko ?
Pourquoi les autres fabricants de calculatrice graphique ont décidé de proposer plus de mémoire pour l’exécution des scripts ?
Un testeur de la
calculatrice Graph 35+E II, entrée de gamme chez Casio équivalent à celui de la numworks, écrivait en mai 2019 dans
l’article de présentation de cette calculatrice :
Cela n’est pas surprenant, car l’ancien tas faisait 48 ko et c’est assez peu pour un interpréteur Python. Casio a certainement commencé à exploiter la deuxième moitié de RAM à sa disposition pour satisfaire les besoins de Python. Les scripts de Critor révèlent que le nouveau tas fait environ 90 ko, quasiment deux fois plus que l’ancien.
Ainsi, chez Casio le tas python est passé de 48ko à 90ko, tandis que sur NumWorks on rêverait d’avoir 48ko, mais 32ko pourrait être un bon début, il suffit pour cela d’intégrer le
Pull Requestde Lionel Debroux sur GitHub.
Paradoxalement, alors que la NumWorks est l’une des calculatrice la plus rapide lors de l’exécution des scripts Python, et que pour un prix d’achat de 79€ elle n’a clairement aucune concurrence, elle refuse d’exécuter des scripts python de
3koou
4ko sans que l’on ne comprenne vraiment la raison, si ce n’est une affectation insuffisante de mémoire pour l’exécution des scripts python.
Et pour reprendre l’intervention de Lionel Debroux sur la discussion associée au topic du site tiplanet.org :
Script qui refuse de s’exécuter sur la Numworks N0100C’est quand même inquiétant de ne pas pouvoir construire des programmes non triviaux sur beaucoup de modèles de calculatrices gérant Python...
Ce n’est pas comme ça qu’on va rendre populaire l’algorithmique et donner le goût de la programmation à certains élèves qui auraient pu être intéressés.
Ainsi, comme vous l’avez compris, ce démineur ne tournera pas* avec le logiciel Epsilon de la NumWorks, ni sur la version 12 actuelle, ni sur la prochaine version 13.0.0 dont la sortie prochaine est annoncée.
Et pourtant, le développement de ce démineur est achevé, et il marche !
Le contenu de ce message n'est plus d'actualité, NumWorks ayant décidé de résoudre ce qu'à titre personnel je considérais être le principal problème de cette calculatrice.Résumons en un mot : Merci NumWorks d'avoir enfin décidé de résoudre ce problème. Promis je ne vous reparle plus du stack / heap avant au moins 1 an !