Attention, le contenu de cet article se basant sur une version alpha/beta, les fonctionnalités
décrites ici peuvent totalement changer d'ici l'éventuelle version officielle comprenant l'application Python!
décrites ici peuvent totalement changer d'ici l'éventuelle version officielle comprenant l'application Python!


Hewlett Packard Calculatrices
t'invitait à tester les prochaines mises à jour de son écosystème HP Prime
, avec les versions bêta du 22 octobre
.Plus précisément, la publication incluait :
- le firmwarepourHP Prime G1(versionet2.1.14285)HP Prime G2(version2.1.14284)
- le logiciel de connectivité HP Prime Connectivity Kit(versionpour2.1.14288)WindowsetMac
- le logiciel de simulation HP Prime Virtual Calculator(versionpour2.1.14288)Windows,MacetLinux
- les applications HP PrimepouriOS
HP Prime
pour Android
sont maintenant également disponibles.Mais surtout, le
firmware
HP Prime G1
est bizarrement le seul à avoir été remplacé par une nouvelle version 2.1.14298
du 28 octobre
. Pourquoi ?...


firmware
pour 2.1.14285
HP Prime G1
était le seul à inclure quelque chose qui ne devait pas encore être prêt pour une annonce au grand public, une application Python
, qui a été retirée pour la nouvelle version 2.1.14298
. 
Maintenant que c'est trop tard et qu'il en est question sur pas moins de 2 pages forum
HP Museum
, profitons-en pour voir ce que HP
nous prépare. 
Précisons que la
HP Prime
accepte depuis la version 13333
une écriture en syntaxe Python
en mode CAS
, héritée du développement du moteur formel GIAC
du logiciel Xcas
par Bernard Parisse
.L'écriture
Python
de la HP Prime
dispose d'avantages remarquables par rapport aux solutions Python
de la concurrence, comme :- la possibilité d'obtenir les résultats numériques en valeur exact sans aucun artifice dans le code
- la possibilité de faire du calcul littéral et formel
- la possibilité de dessiner à l'écran, conformément au nouveau programme de Physique-Chimie Seconde depuis la rentrée 2019
Elle n'en reste pas moins très imparfaite avec nombre de scripts
Pour le logiciel et pour et , ce n'est pas problématique puisque Bernard est très réactif et accomplit un travail formidable avec des mises à jour hebdomadaires ! 
Mais sur, et pour notre concours de rentrée en
Si la solution ainsi que les petits scripts d'initiation en Mathématiques au lycée, elle nous paraît en l'état actuel inadéquate sur
Python
pourtant parfaitement corrects qui renverront une erreur ou autre chose que ce qui était prévu. A moins de les écrire d'une façon bien particulière ou spéciale... astuces d'écriture qui nécessitent donc paradoxalement en phase d'apprentissage/découverte une certaine compréhension du fonctionnement interne et des différences entre les langages Python
et HP Prime CAS
.Pour le logiciel
Xcas
ainsi que ses déclinaisons pour NumWorks
KhiCAS

Mais sur
HP Prime
avec à peine une mise à jour par an, les nombreux retours que nous avons faits ne sont donc pris en compte qu'à retardement. Par exemple là la dernière mise à jour remonte à novembre 2018
Python
nous avons dû littéralement nous arracher les cheveux à peu près autant que l'année dernière pour que notre script soit compatible HP Prime
, vu qu'il n'y a eu aucune correction des nombreux problèmes.Si la solution
GIAC/Xcas/delta
peut certes convenir pour les modèles Casio/NumWorks
HP Prime
pour poursuivre avec des scripts plus sérieux ou projets en NSI par exemple, et avec un rythme de mises à jour qui se compte en années ce n'est hélas pas près de changer.Qu'est-ce donc que la nouvelle application
Python
HP Prime
? Une interface pour utiliser plus facilement l'écriture Python
du mode CAS
, ou bien un véritable interpréteur Python
? Nous allons voir cela ensemble.

2.1.14285
serait plutôt une version alpha que bêta selon nous. On se rend rapidement compte que certaines fonctionnalités sont cassées et qu'il y a plusieurs problèmes :- les calculs en mode RPN ne fonctionnent plus
- la réception de programmes ne fonctionne plus, ne donnant que des programmes vides dont le nom est bizarrement suffixé d'un :Main(1)dans l'éditeur
- en cas de redémarrage la calculatrice s'amorce visiblement 2 fois, comme si elle plantait lors du 1er amorçage
- en cas de redémarrage de la calculatrice, toutes les données saisies sont perdues
HP
.Des conditions peu agréables pour découvrir la nouvelle application
Python
, mais nous allons quand même faire un effort pour toi.Sommaire :
Go to top1) Premier contact et méthode de saisie :
Go to top

Python
nous amène à un écran comportant un avertissement sur le caractère non final de cette version, et acceptant des saisies en syntaxe Python
. Il s'agit donc d'une console (shell)
.L'interface rudimentaire ne semble pas encore avoir prévu de possibilité pour charger un script. Ce qui est particulièrement embêtant pour définir des fonctions et réaliser des tests plus poussés, vu que la saisie sur plusieurs lignes ne semble pas acceptée non plus, même en la précisant explicitement avec le caractère
\
.Elle n'est d'ailleurs pas stabilisée, puisque la sortie de l'interface via les touches
Symb,
Escou le bouton tactile
OKredémarre la calculatrice, avec perte totale des données comme vu plus haut.
Il va donc nous falloir ruser... On pourrait par exemple mettre nos scripts
Python
dans l'éditeur de programmes, puis en copier le contenu via Shift
Viewpour alors le coller dans l'application
Python
via Shift
Menu. Effectivement ça marche, mais cette solution n'est toujours pas satisfaisante. En effet, comme le transfert de programmes ne marche plus nous sommes obligés de saisir les scripts à la main sur la calculatrice, et avec une application
Python
qui plante très facilement avec perte intégrale de la saisie ce n'est pas la panacée.Nous finissons par avoir l'idée de regarder non plus du côté de l'éditeur de programmes, mais du côté de l'éditeur de remarques
(notes)
. On peut de même en faire des copiés/collés, et ici bonne nouvelle le transfert de données depuis un ordinateur fonctionne encore ! 
2) Mantisses et exposants en virgule flottante :
Go to top
Python
. Voici donc notre toute première fonction Python
sur HP Prime
:- Code: Select all
def precm(b):
k,b=0,float(b)
while 1+b**-k-1>0:
k+=1
return k
L'appel
precm(2)
nous indique que le moteur travaille en virgule flottante avec des mantisses de 53
bits, permettant environ 16
chiffres significatifs (
.precm(10)
)C'est le standard double précison du
Python
, un excellent choix pour le contexte scientifique du lycée ! 
Cela répond de plus déjà à notre question principale. Cette application
Python
n'est pas une simple interface pour l'écriture Python
du mode CAS
. En effet les virgules flottantes HP Prime
sont calculées sur 38
48
CAS
. Par élimination, la nouvelle application Python
renfermerait donc a priori un véritable interpréteur Python
, reste à savoir lequel ! 
Nous notons en passant l'affichage asiatique incorrect suivant la définition de la fonction. Et bien que notre fonction soit fonctionnelle, le problème semble plus profond qu'il n'y paraît, puisque nous n'arrivons pas à définir de deuxième fonction, ou du moins pas de deuxième fonction nécessitant une saisie sur plusieurs lignes. La fonction n'existe tout simplement pas après la nouvelle saisie par copié/collé. Peut-être y a-t-il un message d'erreur, mais comme c'est du chinois...

- Code: Select all
def prece():
a=-1
while 2.**a>0:
a*=2
while 2.**a==0:
a+=1
b=1
while str(2.**b)[0:3]!='inf':
b*=2
while str(2.**b)[0:3]=='inf':
b-=1
return [a,b]
L'appel
prece()
nous indique que les exposants des virgules flottantes peuvent aller de -1074
à +1023
, valeurs habituelles pour le standard double précision d'un véritable interpréteur Python
.3) Modules importables et aide en ligne :
Go to top

Python
, continuons à explorer. Et la question suivante est de savoir de quels modules nous disposons. Malheureusement nous ne pouvons pas le demander via help("modules")
, vu que HP
n'a visiblement pas implémenté cette fonction Python
pourtant standard.Pour sa part, la touche d'aide en ligne de la calculatrice
Helpdonne bien quelque chose, mais c'est très sommaire sans mention du moindre module. Par contre on y apprend que la touche
Symbest prévue pour l'édition de scripts, même si nous avons vu plus haut qu'elle ne fonctionnait pas correctement.

Python
au risque d'en rater quelques-uns... soit on fouille le firmware à l'éditeur hexadécimal.Retenons cette dernière option. Nous trouvons facilement dans le
firmware
des occurences groupées avec math
, cmath
, mais aussi matplotlib
, numpy
, pylab
, turtle
et même kandinsky
! 
(coucou
)
NumWorks
! 
C'est peut-être trop beau pour être vrai avec une version alpha aussi jeune, et effectivement à part les modules
math
et cmath
, aucun autre ne marche.A bien y repenser, il s'agit sans doute de ressources concernant non pas la nouvelle application
Python
, mais l'écriture Python
du mode CAS
qui à part pour turtle
propose plusieurs fonctions équivalentes pour ces modules, et doit donc reconnaître les commandes d'importation correspondantes.Mais nous ne désespérons pas et finissons par trouver le bon segment on ne peut plus excplicite avec des traces de commandes de compilation qui ont réussi à être incluses dans le
firmware
:- Code: Select all
modes.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modes.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modfactor.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modfactor.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modpoly.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modpoly.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modmicropython.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modmicropython.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modarray.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modarray.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modbuiltins.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modbuiltins.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modcmath.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modcmath.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modcollections.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modcollections.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modgc.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modgc.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modio.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modio.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modmath.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modmath.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modstruct.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modstruct.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modsys.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modsys.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
modthread.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\modthread.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities
moduerrno.o
ARM C/C++ Compiler, 4.1 [Build 894]
ArmCC --cpp --whole_program --split_sections -c --depend=.\obj\moduerrno.d --cpu=ARM926EJ-S --fpmode=ieee_full --apcs=interwork//interwork -O3 --diag_suppress=1,9,111,161,177,185,191,368,514,550,611,1293,1299,1300,1464 -I..\ -I..\src -I..\..\Core -I..\..\Core\src -I..\..\Core\CAS\src -I..\..\Core\TomMath -I..\..\Core\napier -I..\..\Core\freetype\include\ -I..\..\Core\freetype\include\freetype\ -I..\..\_qt5\src -IC:\Keil\ARM\RV31\Inc -IC:\Keil\ARM\CMSIS\Include -DUNICODE -D_UNICODE -DBESTA_OS -DBESTA_ARM_TARGET -DARM -DARM9 -DARM11 -DARM1176JZF -DSTANDALONE -DADS_COMPILER -DPDADEF -DKERNEL -DFULL_NAND_SYS -DFS_LONG_NAME_GET -DHAVE_AV_CONFIG_H -DEMULATE_FAST_INT -DEMULATE_INTTYPES -DFLASHLITEDLL -DFLASH_BESTARTOS -DFL31_STATICLIBRARY -D__STDC_LIMIT_MACROS -DFIR -DHAVE_CONFIG_H -DIN_GIAC -DUSE_GMP_REPLACEMENTS -DBCD -DNO_UNARY_FUNCTION_COMPOSE -DSTATIC_BUILTIN_LEXER_FUNCTIONS -DNO_STDEXCEPT -DNO_PHYSICAL_CONSTANTS -DGIAC_HAS_STO_38 -DCAS38 -DFT2_BUILD_LIBRARY -Dsprintf=__sprintf -D__cplusplus -DNDEBUG -D__USB_CONFIG__ -DUSBH0_ENABLE -DUSBH0_HC_IF -DUSBD_ENABLE -DUSBD_HID_ENABLE --loose_implicit_cast --remove_unneeded_entities

micropython
nous indique que l'interpréteur retenu pour la HP Prime
est MicroPython
, comme sur Casio
NumWorks
TI-Nspire
De façon générale, si l'on en croit le nommage des fichiers, nous pourrions donc avoir des modules
es
, factor
, poly
, micropython
, array
, builtins
, cmath
, collections
, gc
, io
, math
, struct
, sys
, thread
et uerrno
.En plus de
builtins
qui est importé par défaut, seulement 7 autres modules additionnels sont réellement importables : array
, cmath
, gc
, math
, micropython
, sys
et uerrno
.MicroPython TI-Nspire | NumWorks | Casio Graph 35+E II Graph 90+E | TI-83PCE Ed. Python TI-Python / TI-83PCE | HP Prime | |||
builtins array collections cmath gc math micropython os random sys time turtle uerrno | ✓ ✓ ✓ ✓ ✓ ✓ ✓ | ✓ ✓ ✓ ✓ ✓ ✓ ✓ | ✓ ✓ ✓ | ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ |
spécifique | nsp | kandinsky | board storage | ||||
Total | 8 | 8 | 3 | 9 | 8 | 13 | 8 |
On pourra regretter à date l'absence des modules
random
time
D'où le classement suivant en terme d'éventail de modules :
- 13modules : module externeTI-Python pour TI-83 Premium CE
- 9modules :Casio Graph 35+E II / 35+E/USB / 75/85/95 / fx-9750GII / fx-9860G/GII(application CasioPython)
- +8modules :HP PrimeTI-83 Premium CE Edition Python+NumWorks+TI-Nspire+ module externeTI-Python pour TI-83 Premium CE
- 3modules :Casio Graph 35+E II / 90+E / fx-CG50
4) Exploration module sys et nombres entiers :
Go to topBien, abordons maintenant l'exploration de modules. Comme nous avons vu plus haut que définir plusieurs fonctions non triviales était problématique, nous allons réécrire exceptionnellement notre script d'exploration habituel sous la forme d'une unique fonction :
- Code: Select all
def explmod(pitm,pitmsl=[],reset=True):
if(reset):
try:
s=pitm.__name__
except:
s=str(pitm)
a=s.find("'")
b=s.rfind("'")
if a>=0 and b!=a:
s=s[a+1:b]
pitmsl=[s]
hd="."*(len(pitmsl)-1)
spath=".".join(pitmsl)
c,c2=0,0
for itms in sorted(dir(pitm)):
c,c2=c+1,c2+1
try:
itm=eval(spath+"."+itms)
sitm=str(itm)
print(hd+itms+"="+str(itm))
if (sitm.startswith("<module '") or sitm.startswith("<class '")) and itm!=pitm:
pitmsl2=pitmsl.copy()
pitmsl2.append(itms)
c2=c2+explmod(itm,pitmsl2,False)[1]
except:
print(hd+itms)
if c>0 and reset:
s="Total: "
s+=str(c)+" 1st level item(s)"
if c2>0 and c2!=c:
s+=" - "+str(c2)+" item(s)"
print(s)
return [c,c2]


explmod(sys)
nous révèle de 17
à 21
éléments, selon que l'on en reste aux éléments du premier niveau ou compte également les sous-éléments.Plusieurs éléments sont à remarquer :
sys.implementation.name
qui nous confirme là encore que l'interpréteurPythonest basé surMicroPythonsys.implementation.version
qui précise la versionMicroPythonconcernée, ici1.9.4comme chezetCasioNumWorkssys.version
qui nous précise la version dePythonimplémentée, ici3.4.0sys.platform
qui vaut"HP Prime"
et pourra servir de vérification pour les scriptsPythonsouhaitant par exemple optimiser leur affichage pourHP Prime, la console étant ici contrainte par l'écran 320x240 pixelssys.maxsize
qui nous indique l'entier maximum codable nativement sur le matérielHP Prime, ici2147483647==2**31-1

(avec le bit de signe)
, ce qui nous permet de réaliser un petit test en tentant d'aller au-delà, avec par exemple sys.maxsize+1
. Visiblement pas d'erreur, ce qui veut dire que l'équipe HP
a activé la gestion des entiers longs, là encore un excellent choix ! 
5) Exploration autres modules :
Go to topLe même script nous permet d'explorer les autres modules :
- arrayavec3à13éléments
- cmathavec13à17éléments
- gcavec9à13éléments
- mathavec42à46éléments
- micropythonavec10à14éléments
- uerrnoavec25à29éléments
- builtinsavec97à428éléments
D'où le bilan tous modules confondus :
MicroPython TI-Nspire | NumWorks | Casio Graph 35+E II Graph 90+E | TI-83PCE Ed. Python TI-Python / TI-83PCE | HP Prime | |||
builtins array collections cmath gc math micropython os random sys time turtle uerrno | 93-218 4 12 7 41 3 15 | 88-188 12 41 6 8 3 38 | 84-175 25 8 | 91-204 4 12 7 41 6 8 12 24 | 91-190 4 2 7 28 8 15 4 | 93-191 4 2 12 7 41 6 15 8 15 10 | 97-428 3-13 13-17 9-13 42-46 10-14 17-21 25-29 |
spécifique | 10 (nsp) | 6 (kandinsky) | 22 (board) 21 (storage) | ||||
Total | 185-310 | 202-302 | 117-208 | 181-294 | 159-258 | 213-354 | 216-581 |
D'où le classement suivant en terme de richesse des modules
Python
:- 216-581éléments :HP Prime
- 213-354éléments : module externeTI-Python pour TI-83 Premium CE
- 185-310éléments :TI-Nspire
- 202-302éléments :NumWorks
- 181-294éléments :Casio Graph 35+E II / 35+E/USB / 75/85/95 / fx-9750GII / fx-9860G/GII
- 159-258éléments :TI-83 Premium CE Edition Python+ module externeTI-Python pour TI-83 Premium CE
- 117-208éléments :Casio Graph 35+E II / 90+E / fx-CG50
6) Mémoire de travail et récursivité:
Go to topPassons maintenant à la détermination de la mémoire de travail accessible à l'interpréteur
Python
. Pour palier les limites de l'actuelle version alpha, nous allons là encore devoir réécrire notre script de recherche habituel sous la forme d'une fonction unique :- Code: Select all
def mem(v=1,r=1):
try:
l=[]
try:
sizeenv=0
import __main__
for o in dir(__main__):
try:
o=eval(o)
s,a=0,[o]
if type(o)==list:a+=o
for g in a:
t=type(g)
if t==str:s+=49+len(g)
if str(t)=="<class 'function'>":s+=136
if t==int:
s+=24
while g:
s+=4
g>>=30
if t==list:s+=64+8*len(g)
sizeenv+=s
except:pass
l+=[r and 741+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:
s,a=0,[l]
if type(l)==list:a+=l
for g in a:
t=type(g)
if t==str:s+=49+len(g)
if str(t)=="<class 'function'>":s+=136
if t==int:
s+=24
while g:
s+=4
g>>=30
if t==list:s+=64+8*len(g)
if v:print("+",s)
try:l[0]+=s
except:pass
try:l[0]+=mem(v,0)
except:pass
return l[0]
except:return 0


L'appel
mem()
tente d'allouer un maximum de blocs mémoire, de plus en plus petits pour remplir au mieux cette dernière, et nous indique donc un total impressionnant de 1,022145 Mo
, de quoi coder confortablement nombre de projets ! 
- 2,049276 Mo:TI-Nspire(application MicroPython)
- 1,032942 Mo:Casio Graph 90+E
- 1,022145 Mo:HP Prime
- 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)
- 22,605 Ko:TI-83 Premium CE & TI-Python
- 20,200 Ko:TI-83 Premium CE Edition Python
- 19,924 Ko:TI-83 Premium CE & TI-Python
- 16,109 Ko:NumWorks N0100
- 15,984 Ko:NumWorks N0110
Mais il n'y a pas que la mémoire dans la vie d'un script Python, il y a aussi la pile
(stack)
. Nous allons maintenant partir sur un test de récursivité avec le script suivant :- Code: Select all
def maxr(fct):
n=0
try:
while True:
fct(n)
n=n+1
except Exception as e:print(e)
return n
def sumr(n):return n>0 and n+sumr(n-1)

L'application
HP Prime
nous permet donc actuellement jusqu'à 77
niveaux de récursion, une limite a priori bien positionnée pour les projets. 
- 5362:Casio Graph 35/75+E(application CasioPython)
- 655:Casio Graph 35+E II(application CasioPython)
- 130:TI-Nspire(application MicroPython)
- 82:Casio Graph 90+E+Casio Graph 35+E II
- 77:HP Prime
- 29:NumWorks
- 23:TI-83 Premium CE Edition Python
- 20:TI-83 Premium CE & TI-Python
- 15:TI-83 Premium CE & TI-Python
7) Performances :
Go to topTerminons avec un test de performances de l'application
Python
. Il faudra le relativiser, puisqu'il ne peut donc être effectué que sur l'ancien modèle HP Prime G1
.Notre script de test en virgule flottante peut être réécrit en une seule fonction sans modifications lourdes, et resterait donc valide pour des comparaisons :
- Code: Select all
def seuil(d):
n=0
u=2.
d=d**2
while (u-1)**2>=d:
u=1+1/((1-u)*(n+1))
n=n+1
return [n,u]
L'absence du module
time
seuil(0.008)
prendrait environ 0,283s
. 
Finalement non, même pas besoin de relativiser, avec l'application
Python
les calculs en virgule flottante de la HP Prime G1
sont beaucoup plus rapides, et on se demande bien ce que ça pourrait donner sur HP Prime G2
! 
- 0,27s:TI-Nspire CX(révisions A-V)
- 0,283s:HP Prime G1(32 bits : ARM9/ARMv5 @400MHzavec l'applicationPythonintégrée)
- 0,376s:HP Prime G2(32 bits : Cortex-A7/ARMv7 @528MHzavec l'écriturePythondu modeCAS)
- 0,38s:TI-Nspire
- 0,47s:TI-Nspire(32 bits : ARM9/ARMv5 @120MHzavec l'interpréteur MicroPython)
- 0,48s:TI-Nspire CX(révisions A-V)(32 bits : ARM9/ARMv5 @132MHzavec l'interpréteur MicroPython)
- 0,498s:NumWorks N0110(32 bits : Cortex-M7/ARMv7 @216MHz)
- 0,53s:TI-Nspire CX CR4+(révisions W+)
- 0,59s:Casio Graph 35/75+E
- 0,68s:TI-Nspire CX CR4+(révisions W+)(32 bits : ARM9/ARMv5 @156MHzavec l'interpréteur MicroPython)
- 0,785s:NumWorks N0100(32 bits : Cortex-M4/ARMv7 @100MHz)
- 0,79s:Casio Graph 35+E II
- 1,61s:HP Prime G1(32 bits : ARM9/ARMv5 @400MHzavec l'écriturePythondu modeCAS)
- 1,86s:Casio Graph 35+E II
- 2,15s:Casio Graph 90+E
- 2,96s:Casio Graph 35+E II
- 3,27s:Casio Graph 90+E(32 bits : SH4 @117,96MHz)
- 3,65s:Casio Graph 90+E
- 3,73s:TI-83 Premium CE+ module externeTI-Python(8 + 32 bits : eZ80 @48MHz+ Cortex-M0+/ARMv6 @48MHzavec l'applicationPyAdaptr)
- 3,9s:Casio Graph 35+E II(32 bits : SH4 @58,98avec l'interpréteur CasioPython)
- 3,93s:TI-83 Premium CE Edition Python(8 + 32 bits : eZ80 @48MHz+ Cortex-M0+/ARMv6 @48MHzavec l'applicationPython)
- 4s:Casio Graph 35/75+E(32 bits : SH4 @29,49MHzavec l'interpréteur CasioPython)
- 4,4s:TI-83 Premium CE+ module externeTI-Python
- 5,48s:Casio Graph 90+E(32 bits : SH4 @117,96MHzavec l'interpréteur KhiCAS)
- 9,21s:Casio Graph 35+E II(32 bits : SH4 @58,98MHzavec l'applicationPythonintégrée)
- 13,93s:Casio Graph 35+E II(32 bits : SH4 @58,98MHzavec l'interpréteur KhiCAS)
8) Récapitulatif et conclusion :
Go to topBien qu'actuellement instable et encore en version alpha, le développement de l'application 
Tu auras désormais libre choix entre la couche de traduction du mode
Outre l'instabilité qui sera forcément corrigée, on pourra juste regretter à date l'absence des modules et . Précisons aussi qu'un module graphique serait fort bienvenu pour le programme de Physique-Chimie de Seconde.
ayant apparemment tué et l'application qui lui était dédié avec ses mises à jour pour puis ses , la calculatrice 
Nous ne nous attendions pas à ce que
C'est donc encore loin d'être gagné pour une application
Python
pour HP Prime
semble être parti sur de très bons rails, l'équipe sachant éviter nombre de défauts encore présents chez la concurrence sur les préversions des salons ou même versions finales. On apprécie d'avoir déjà l'essentiel pour le programme du lycée : entiers longs, flottants en double précision, nombres complexes avec le module cmath
qui va avec, une mémoire de travail suffisante pour faire tourner des scripts un minimum ambitieux... une application Python
a priori très prometteuse et qui ne pourra évoluer que dans le bon sens ! 
Tu auras désormais libre choix entre la couche de traduction du mode
CAS
, et l'application Python
standard ! 
Outre l'instabilité qui sera forcément corrigée, on pourra juste regretter à date l'absence des modules
random
time
Texas Instruments
Ndless
MicroPython
4.5.1
TI-Nspire CX I
TI-Nspire CX II
HP Prime
est partie pour être le premier modèle haut de gamme avec une application Python
véritable et officielle, et en pratique le seul modèle haut de gamme avec une application Python
utilisable. 
Nous ne nous attendions pas à ce que
Hewlett Packard
nous prépare pour son modèle HP Prime
international une mise à jour à ce point pertinente par rapport à l'évolution des programmes scolaires français, nous sommes fort agréablement surpris, bravo ! 
Le 
Il va falloir aussi mettre un bémol à notre enthousiasme, en l'absence d'une annonce officielle. Dans son état actuel, il n'est pas envisageable qu'une mise à jour d'ici quelques semaines puisse inclure cette application
Aussi, ce n'est pas parce qu'une application
Prenons l'exemple des émulateurs
firmware
HP Prime G1
avec application Python
reste disponible ci-après. En dehors de la curiosité intellectuelle ou technique et à moins que le Python
n'ait un intérêt vital pour toi au détriment des autres fonctionnaltés, nous te déconseillons fortement de l'installer, particulièrement dans le contexte d'évaluations ! 
Il va falloir aussi mettre un bémol à notre enthousiasme, en l'absence d'une annonce officielle. Dans son état actuel, il n'est pas envisageable qu'une mise à jour d'ici quelques semaines puisse inclure cette application
Python
. Et vu les délais de validation d'une nouvelle version, nous ne sommes même pas sûrs qu'une sortie d'une autre mise à jour incluant cet ajout majeur soit envisageable avant les examens 2020.Aussi, ce n'est pas parce qu'une application
Python
est en développement pour HP Prime
qu'elle sortira forcément un jour sur HP Prime
.Prenons l'exemple des émulateurs
HP Prime
pour Linux
, ils ont fait partie du beta-testing de rentrée 2018 et ne sont toujours pas sortis à ce jour. Il sont de plus accompagnés de la mention suivante, qui pourrait parfaitement être adaptée à l'application Python
à une reformulation près :HP wrote:Beta version of the technical preview of an emulator of the HP Prime Graphing Calculator for Linux. Lets you do everything the calculator does, but with the full control of your keyboard and mouse and taking full advantage of your PC's computing power. This is a technical preview and does not indicate a supported Linux release will be forthcoming.
C'est donc encore loin d'être gagné pour une application
Python
sur HP Prime
, chacun doit se donner la peine de communiquer son enthousiasme auprès de calcbeta@hp.com
. 
Téléchargements
:- HP Prime Virtual Calculatorversion2.1.14288pourWindows32-bits /Windows64-bits /Mac/Linux32-bits /Linux64-bits
- HP Prime Connectivity Kitversion2.1.14288pourWindows32-bits /Windows64-bits /Mac
- Firmware version 2.1.14285pourHP Prime G1(avec applicationPython)
- Firmware version 2.1.14298pourHP Prime G1
- Firmware version 2.1.14284pourHP Prime G2
- applications iOS
- applications Android
Source
: