π
<-
Chat plein-écran
[^]

Le classement des Pythonnettes, comparaison modules cmath

Le classement des Pythonnettes, comparaison modules cmath

Message non lude critor » 27 Jan 2019, 14:21

A la rentrée 2019 le Python sera le seul langage de programmation préconisé pour l'enseignement de l'algorithmique au lycée en Seconde et Première.

Plusieurs calculatrices graphiques intègrent déjà une implémentation Python officielle dans leur dernière mise à jour, plus ou moins complète, fidèle et réussie selon le cas :
  • NumWorks avec MicroPython 1.9.4
  • Casio Graph 90+E avec MicroPython 1.9.4
  • HP Prime avec l'écriture Python de Xcas
  • le module externe TI-Python pour TI-83 Premium CE avec CircuitPython (dérivé de MicroPython)
À côté de cela nous avons aussi plusieurs implémentations communautaires, qui à la différence ne fonctionneront pas en mode examen en 2020 :

Ces diverses implémentations ne sont pas équivalentes et diffèrent dans l'éventail de modules qu'elles proposent.

Aussi comme nous l'avons déjà vu, ces implémentations diffèrent également par le contenu proposé dans chaque module.
Nous avons en effet déjà comparé les modules builtins, math, random et time.

Voici un petit récapitulatif des modules disponibles sur chaque implémentation avec le nombre d'entrées offertes à chaque fois :
NumWorks
Casio
Graph 90+E
module externe
TI-Python pour
TI-83 Premium CE
builtins218188175204190
array???
collections?
cmath???
gc???
kandinsky?
math4141254128
random8888
sys???
time34
Modules66378
Éléments259+240+208253+230+


D'où à date le classement suivant :
  1. TI-Nspire avec 6 modules et plus de 259 entrées
  2. Casio Graph 35+E/75+E avec 7 modules et plus de 253 entrées
  3. NumWorks avec 6 modules et plus de 240 entrées
  4. module externe TI-Python pour TI-83 Premium CE avec 8 modules et plus de 230 entrées
  5. Casio Graph 90+E avec 3 modules et 208 entrées

Un classement bien évidemment non final, puisque basé sur la comparaison d'une partie des modules.

Aujourd'hui poursuivons avec la comparaison du module cmath pour les nombres complexes, disponible uniquement sur les implémentations Casio Graph 35/75+E, NumWorks et TI-Nspire, à l'aide du script suivant :
Code: Tout sélectionner
#platforms:
#0: MicroPython / TI-Nspire
#1: MicroPython / NumWorks
#2: MicroPython / G90+E
#3: MicroPython / G35+E/USB / G75/85/95
#4: CircuitPython / TI-Python / 83PCE
#5: Xcas / HP Prime
#6: KhiCAS / Graph 90+E
def getplatform():
  id=-1
  try:
    import sys
    try:
      if sys.platform=='nspire':id=0
      if sys.platform=='TI-Python Adapter':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]
#max chars per line
#(error or CR if exceeded)
pcols =[53,99,509,32,32,0,0]

nlines=plines[platform]
ncols=pcols[platform]
curline=0

def mprint(*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
  print(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):
  s=str(obj)
  return s.startswith("<module '") or s.startswith("<class '")

def explmod(pitm,pitmsl=[],reset=True):
  global curline
  if(reset):
    curline=0
    pitmsl=[sstr(pitm)]
  hd="."*(len(pitmsl)-1)
  spath=".".join(pitmsl)
  c=0
  for itms in sorted(dir(pitm)):
    c=c+1
    try:
      itm=eval(spath+"."+itms)
      mprint(hd+itms+"="+str(itm))
      if isExplorable(itm):
        pitmsl2=pitmsl.copy()
        pitmsl2.append(itms)
        c=c+explmod(itm,pitmsl2,False)
    except:
      mprint(hd+itms)
  if c>0:
    mprint(hd+"Total: "+str(c)+" item(s)")
  return c

Et bien ici pas de perdante (sauf les absentes), contrairement au module math pour le module cmath les Casio Graph 35/75+E, NumWorks et TI-Nspire exposent toutes les mêmes 12 éléments :
>>> from explmod import *
>>> import cmath
>>> explmod(cmath)
__name__=cmath
cos=<function>
e=2.718281828459045
exp=<function>
log=<function>
log10=<function>
phase=<function>
pi=3.141592653589793
polar=<function>
rect=<function>
sin=<function>
sqrt=<function>

D'où mise à jour de notre petit récapitulatif :
NumWorks
Casio
Graph 90+E
module externe
TI-Python pour
TI-83 Premium CE
builtins218188175204190
array???
collections?
cmath121212
gc???
kandinsky?
math4141254128
random8888
sys???
time34
Modules66378
Éléments271+252+208265+230+


D'où à le classement qui pour le moment ne change pas :
  1. TI-Nspire avec 6 modules et plus de 271 entrées
  2. Casio Graph 35+E/75+E avec 7 modules et plus de 265 entrées
  3. NumWorks avec 6 modules et plus de 252 entrées
  4. module externe TI-Python pour TI-83 Premium CE avec 8 modules et plus de 230 entrées
  5. Casio Graph 90+E avec 3 modules et 208 entrées

A bientôt... ;)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Le classement des Pythonnettes, comparaison modules cmat

Message non lude Adriweb » 27 Jan 2019, 17:20

Si l'on compte kandinsky sur NumWorks, il faudrait par équité compter les fonctions graphiques des autres implémentations :)

Sur Nspire, on a le module "nsp" qui contient readRTC (temps), waitKeypress (input clavier), et, par rapport à ça, Texture (graphiques), par exemple.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Le classement des Pythonnettes, comparaison modules cmat

Message non lude critor » 27 Jan 2019, 17:26

Tu as raison, j'avais complètement oublié son existence.

D'autres modules que j'ai omis de lister ?
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Le classement des Pythonnettes, comparaison modules cmat

Message non lude critor » 27 Jan 2019, 17:36

Pour une comparaison plus équitable, il va falloir que je modifie le script et change la méthode de comptage.

Parce que les fonctions graphiques sur TI-Nspire ne sont pas directement dans le module nsp, mais dans la classe Texture qu'il offre :
Image

Il faudrait donc un appel récursif sur les classes.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Le classement des Pythonnettes, comparaison modules cmat

Message non lude critor » 27 Jan 2019, 18:15

En tous cas merci pour la remarque, ça me permet d'affiner les outils pour le prochain QCC. :)

Voici une version modifiée du script qui tient compte des classes présentes dans les modules :
Code: Tout sélectionner
#platforms:
#0: MicroPython / TI-Nspire
#1: MicroPython / NumWorks
#2: MicroPython / G90+E
#3: MicroPython / G35+E/USB / G75/85/95
#4: CircuitPython / TI-Python / 83PCE
#5: Xcas / HP Prime
#6: KhiCAS / Graph 90+E
def getplatform():
  id=-1
  try:
    import sys
    try:
      if sys.platform=='nspire':id=0
      if sys.platform=='TI-Python Adapter':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]
#max chars per line
#(error or CR if exceeded)
pcols =[53,99,509,32,32,0,0]

nlines=plines[platform]
ncols=pcols[platform]
curline=0

def mprint(*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
  print(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):
  s=str(obj)
  return s.startswith("<module '") or s.startswith("<class '")

def explmod(pitm,pitmsl=[],reset=True):
  global curline
  if(reset):
    curline=0
    pitmsl=[sstr(pitm)]
  hd="."*(len(pitmsl)-1)
  spath=".".join(pitmsl)
  c=0
  for itms in sorted(dir(pitm)):
    c=c+1
    try:
      itm=eval(spath+"."+itms)
      mprint(hd+itms+"="+str(itm))
      if isExplorable(itm):
        pitmsl2=pitmsl.copy()
        pitmsl2.append(itms)
        c=c+explmod(itm,pitmsl2,False)
    except:
      mprint(hd+itms)
  if c>0:
    mprint(hd+"Total: "+str(c)+" item(s)")
  return c


On va voir si elle marche bien sur toutes les implémentations.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Le classement des Pythonnettes, comparaison modules cmat

Message non lude parisse » 27 Jan 2019, 18:53

Il y a quand meme un grand absent dans tous ces classements, c'est le port de Xcas sur la hp prime et sur la casio graph 90+e. Je sais bien qu'on ne peut pas decompter par modules comme sur du "vrai" Python, mais la fonctionnalite est quand meme bien la, et meme plus que bien la. Il y a actuellement 700 fonctions listees dans le fichier static_lexer.h de KhiCAS sur graph 90+e (a quoi se rajoutent quelques commandes codees en dur dans le lexer). On peut visualiser tout ca directement sur la Casio en tapant sur shift-CATALOG.
Sauf oubli de ma part, toutes les fonctions de math, cmath, micro-random sont la, un sur-ensemble du kandinsky de Numworks (avec des fonctions de trace de droite, rectangle, polygone, cercle, arc de cercle et formes remplies) + tout ce qui est specifique a Xcas (calcul formel bien sur, mais aussi algebre lineaire approchee, calcul scientifique et traces dans des reperes, graphes de fonctions/statistiques avec un peu de compatibilite numpy/scipy/matplotlib). Tout ce plus n'est disponible sur aucun des modules des implementations des constructeurs (et il est tres improbable que ca le soit sur les modeles vendus aujourd'hui en raison des contraintes memoire et du travail de portage), alors que c'est certainement fort utile pour des futurs scientifiques (en particulier pour ceux qui se destinent aux CPGE).
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3502
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Le classement des Pythonnettes, comparaison modules cmat

Message non lude critor » 27 Jan 2019, 18:58

Si je n'ai pas de meilleure méthode que de tout tester+compter à la main d'ici-là, aux QCC je mettrai possiblement la note maximale pour les "possibilités Python" à la HP Prime.
A ma connaissance il y a des équivalents pour tout ou presque dans son langage, même pour le module time dès la prochaine mise à jour.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Le classement des Pythonnettes, comparaison modules cmat

Message non lude critor » 27 Jan 2019, 20:02

J'ai corrigé l'article avec les résultats du nouveau script.
C'est le module TI-Python qui m'a pris le plus de temps, puisque je ne l'ai pas, et que j'ai dû aller chercher les différents termes de la somme sur plein de photos différentes.

Dans le tableau, cela ne change le décompte que pour le module builtins.

J'ai aussi retiré le décompte du module kandinsky, que je traiterai à part avec l'autre module non standard, nsp.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor


Retourner vers News Divers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 72 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1014 utilisateurs:
>997 invités
>12 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)