Dans l'épisode précédent nous avons donc vu quelles calculatrices étaient programmables en langage
Les interpréteurs
En gros le
Hors besoins très spécifiques ce n'est habituellement pas le facteur le plus limitant dans les projets pour qui sait optimiser son code, mais aujoud'hui nous allons commencer par nous intéresser au

Commençons donc avec les
Le paramètre d'appel doit monter jusqu'à

Restons chez
Sur les deux premiers nous obtenons une valeur limite extraordinaire de
Par contre un bug de
Il est à noter ici que le
Certes en
Mais ici l'application

Passons maintenant aux . Il y a visiblement du mieux par rapport à l'année dernière ! 
à 
L'ancienne
Le

Le
Ici il ne s'agit pas d'une implementation mais propriétaire

Sur 
Effectivement nous avons ici une progression formidable de la valeur limite, de à 
Mais nous n'en avons pas encore terminé avec les
Sur la dernière édition matérielle
Et bien 
Donc pour information, dans le mode interpréteur
Une mise à jour
Nous ne pourrons pas la classer en l'état, mais rien n'empêche d'en parler et de te donner un avant-goût de ce qui t'attend.
Donc ici, la limite est de
Python
parmi celles conformes ou se prétendant conformes pour les examens 2021 et au-delà.Les interpréteurs
MicroPython
ou similaires qu'elles font tourner font appel à 3 types de mémoires avec les rôles suivants :- 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 le contenu de ces objets
En gros le
stack
limite donc le nombre d'objets différents pouvant exister simultanément en mémoire, alors que le heap
limite la taille globale occupée par le contenu de ces objets.Hors besoins très spécifiques ce n'est habituellement pas le facteur le plus limitant dans les projets pour qui sait optimiser son code, mais aujoud'hui nous allons commencer par nous intéresser au
stack
.A ce jour nous ne savons pas mesurer exactement la capacité du
Une situation très simple qui peut être grand consommatrice de
stack
. Mais par contre nous pouvons en déclencher une consommation massive, afin de pouvoir comparer et voir quels modèles s'en sortent le mieux.Une situation très simple qui peut être grand consommatrice de
stack
c'est la récursivité, soit les fonctions qui se rappellent elles-mêmes. Notre protocole de test aujourd'hui va consister à lancer test(compte_r)
à partir du script suivant :- Code: Select all
def compte_r(n):
return n>0 and 1 + compte_r(n-1)
def test(f):
n = 0
try:
while 1:
n = f(n) + 1
except Exception as e:
print(e)
return n
compte_r(n)
est donc ici notre fonction récursive qui compte récursivement de 1 à n
.test(f)
quant à elle va donc tester des appels f(n)
avec n
de plus en plus grand, jusqu'à déclenchement d'une erreur qui sera précisée.

Casio Graph 35+E II
et Graph 90+E
et leur application Python
officielle.Le paramètre d'appel doit monter jusqu'à
82
pour permettre comme indiqué l'épuisement du stack
.

Casio
mais cette fois-ci avec l'application tierce . Elle est compatible avec différents modèles monochromes :- Graph 75+E
- Graph 35+Evia une installation du systèmeGraph 75+E
- Graph 35+E II
Sur les deux premiers nous obtenons une valeur limite extraordinaire de
5362
.Par contre un bug de
CasioPython
hélas toujours pas corrigé depuis l'année dernière lui fait prendre la Graph 35+E II
pour un ancien modèle et réduire sa consommation mémoire, pour une valeur limite quand même relativement impressionnante de 655
.Il est à noter ici que le
stack
n'est a priori pas forcément épuisé, car la raison de l'erreur est différente. Ici c'est en effet la limite de récursivité configurée qui a été franchie.
Python
on peut consulter cette limite via sys.getrecursionlimit()
et même l'ajuster dynamiquement via sys.setrecursionlimit()
.Mais ici l'application
CasioPython
utilise une implémentation MicroPython
, ce qui fait que le module sys
n'inclut pas ces accesseurs.

TI-83 Premium CE Edition Python
et TI-84 Plus CE-T Python Edition

Texas Instruments
a en effet repoussé la limite de 23
28
via ses dernières mises à jour 5.5.1
et ! 

TI-83 Premium CE
permet également la programmation Python
si munies du module externe TI-Python
, module interdit aux examens français mais parfaitement utilisable en classe ainsi qu'aux évaluations si l'enseignant le permet.Le
firmware
TI-Python
officiel nous permet ici d'aller jusqu'à 20
limite des niveaux de récursion et non du stack
ici encore.

firmware
tiers fourni par , bien que proposant nombre d'améliorations, a le défaut de baisser cette valeur limite à 15
.Ici il ne s'agit pas d'une implementation
MicroPython
TI-Python
, en réalité construite à partir de l'implémentation libre CircuitPython
. En tous cas cela ne change rien, le module sys
n'a pas ce qu'il faut pour nous permettre d'explorer plus loin via cette méthode.NumWorks
ici aussi il y a eu du nouveau depuis l'année dernière, le constructeur ayant annoncé avoir quadruplé la taille du stack
lors de la mise à jour intermédiaire . 
Effectivement nous avons ici une progression formidable de la valeur limite, de
33
128
! 
Mais nous n'en avons pas encore terminé avec les
NumWorks
. Il est possible de leur installer très facilement un firmware
tiers, , qui leur rajoute plein de fonctionnalités y compris en mode examen ! 
Sur la dernière édition matérielle
NumWorks N0110
, Omega
permet notamment l'ajout d'applications. Plusieurs sont disponibles dont l'application de mathématiques intégrée KhiCAS
par , enseignant chercheur à l'Université de Grenoble
, une version adaptée aux plateformes nomades qui s'inspire de son propre logiciel de Mathématiques intégré Xcas
, et en reprend notamment le moteur de calcul formel GIAC
.Bernard
est justement en train de te préparer une mise à jour majeure de KhiCAS
pour l'année scolaire 2020-2021
, déjà accessible en version de test. Au menu des nouveautés une sous-application tableur / feuille de calculs, ainsi que l'intégration d'un véritable interpréteur MicroPython
! 
Donc pour information, dans le mode interpréteur
Python
de KhiCAS
, la limite est impactée mais très légèrement, passant à 126
. Un bien maigre prix à payer par rapport à tous les avantages ! 
Pour les
Pour les anciens modèles 
Une fois
Mais pour les seules anciennes , avec feuille de calcul / tableur et véritable interpréteur 
Ici la valeur limite monte même à
TI-Nspire CX II
, nous ne disposons hélas pas encore de préversion de la mise à jour qui devrait sortir mi-septembre 2020 et rajouter la programmation Python
.
TI-Nspire CX
et TI-Nspire
monochromes par contre, si non encore mis à jour en version 4.5.1
ou supérieure, il est possible d'installer le jailbreak
Ndless
qui autorise à son tour par la suite l'installation d'applications tierces. 
Attention toutefois, contrairement aux applications pour , les applications 
Omega
NumWorks
Ndless
ont le gros défaut de ne pas rester disponibles en mode examen ! 
Une fois
Ndless
installé, on peut par exemple rajouter l'application , pour une limite ici de 130
.
TI-Nspire CX
, ce n'est pas tout. est également en train de préparer ici la même mise à jour majeure de l'application KhiCAS
que pour NumWorks
MicroPython
intégrés, également disponible en version de test ! 
Ici la valeur limite monte même à
155
! 

HP Prime
rajoutant une application Python
est dans les tuyaux. Aucune date de sortie connue à ce jour, mais une version intégrant cette fonctionnalité a été publiée par erreur en octobre 2019.Cela a sûrement été corrigé depuis, mais cette vieille version est en pratique très instable, les fonctionnalités
Python
se payant bien cher... Nous te déconseillons fortement de l'installer dans le contexte d'évaluations.Nous ne pourrons pas la classer en l'état, mais rien n'empêche d'en parler et de te donner un avant-goût de ce qui t'attend.

Donc ici, la limite est de
77
.Résumé donc des capacités des différents modèles autour du
stack
Python
, avec :- en haut les possibilités hors mode examen ou à venir dans de prochaines mises à jour lorsque connues (HP Prime, mais nous ignorons quand...)
- en bas les capacités de la machine en mode examen sur les versions actuellement à notre disposition