Page 1 of 1

Test Symbolibre, calculatrice libre avec CAS (giac) + Python

Unread postPosted: 15 Jun 2019, 20:43
by critor
La première calculatrice graphique française fut la LibreCalc en 2014. Il s'agissait d'un projet de calculatrice graphique visant à avoir un matériel ouvert et un code source libre, développé par deux ingénieurs Rennais.

Le projet fut abandonné brutalement contre l'avis de la communauté début 2015, dès les premières rumeurs d'introduction du mode examen, évoquant un manque d'intérêt de la part des enseignants, ainsi qu'une soi-disante impossibilité de rester sur un projet ouvert dans le contexte du mode examen. Deux arguments que la NumWorks a largement infirmés depuis.

A notre avis ce qui plombait réellement fin 2014 encore toute chance de succès de la LibreCalc, c'est qu'au-delà de son matériel et de son système d'exploitation Linux, elle n'avait rien à offrir, n'apportant strictement rien à l'enseignement. Les vidéos de démo mettaient tristement en avant ce qui était présenté comme un "simulateur de TI-82 Stats", mais qui bizarrement reproduisait au pixel près l'interface très inférieure de la TI-81, son ainée de 14 ans... C'était bien la pleine de se donner le mal de passer sur du matériel ouvert et du code libre, pour reproduire en moins bien ce que faisait déjà Texas Instruments. Sans compter que dans le contexte d'une commercialisation, le constructeur historique n'aurait certainement jamais laissé passer ça.

Mais des échecs naissent parfois les grandes victoires. Sébastien "Lephénixnoir" Michelland, administrateur de Planète Casio, et Nicolas Chappe, ancien membre Omnimaga, tous deux très affectés à l'époque par cet abandon, ont décidé de lancer un projet similaire, le projet Symbolibre. Notons qu'il ne reprend pas le code de la LibreCalc, et que par rapport aux prix actuels chez la concurrence la Symbolibre vise le créneau du milieu de gamme (~80€).

Symbolibre est donc le projet d'étude de l'équipe de pas moins de 29 personnes qu'ils ont formée avec leurs camarades étudiants et pilotée, en première année de Master Informatique fondamentale à l'ENS (Ecole Normale Supérieure) de Lyon.

1095410956Nous voici donc enfin à l'ENS de Lyon afin de découvrir la nouvelle calculatrice graphique française Symbolibre que nous t'avions déjà présentée.

Nous en profitons pour remercier l'équipe Symbolibre d'avoir bien voulu s'adapter à nos disponibilités en nous permettant de découvrir la calculatrice Symbolibre en avant-première, soit avant la présentation publique du projet.

10965Une fois dans le bâtiment de l'ENS, nous croisons une vitrine exposant une sélection d'innovations technologiques du XXè siècle, entre autres des calculatrices justement :
  • une calculatrice électronique Pocket Computer PC-1430 de 1985 par le constructeur Sharp, plus précisément une calculatrice scientifique programmable en Basic
  • une calculatrice mécanique manuelle Curta par le constructeur liechtensteinois Continenta AG Mauren, plus précisément la Curta type II de 1954 puisque l'on y note la possibilité d'entrer des nombres ayant jusqu'à 11 chiffres significatifs au lieu de 8 sur la Curta type I
  • une calculatrice mécanique électrique C116/2 de 1957 par le constructeur allemand Olympia Werke AG
10964109661097210973

De quoi nous mettre en bonne condition pour ce qui va suivre. ;)

10926Même jusque dans l'ascenseur nous trouvons de quoi nous mettre l'eau à la bouche. :D

Quelle émotion, mon coeur bat la chamade. Cela me rappelle quand j'enseignais encore en collège jusqu'en 2011, avec les petits Sixièmes qui après leurs recherches Internet racontaient que j'avais inventé une calculatrice. C'était mignon... Mais là pour le coup c'est une véritable invention, et nous sommes tout excités à l'idée d'assister pour la première fois à une telle naissance.

Et nous voici maintenant enfin arrivés auprès de la bête, nous allons donc pouvoir voir quels enseignements l'équipe a tirés de l'échec du projet LibreCalc, et ce qu'elle a à nous proposer avec Symbolibre.


Sommaire :Go to top




1) Tour du propriétaire :

Go to top

109291102411025Commençons par le clavier. Le prototype accédé ici en avant-première n'était pas encore muni de ses 45 touches clavier, puisqu'elles venaient tout juste d'être reçues.

Mais il reste parfaitement fonctionnel, et en cas de besoin tu pourras revenir te référer aux images d'illustration ci-dessous :
10941

Notons juste que l'on commence très fort niveau adéquation à l'enseignement scolaire français, puisque le clavier dispose enfin de touches dédiées aux instructions de programmation les plus courantes. Plus besoin de s'embêter à aller les chercher dans des sous-menus ! :bj:

1093410929Le boîtier non définitif à ce jour est un petit peu encombrant par rapport aux calculatrices de poche auxquelles tu es habitué(e), et les larges bordures entourant l'écran qui apparaît alors tout petit ne sont pas du meilleur effet.
10930109311093210933

10938Le boîtier est aussi assez épais.

Nous n'avons pas emporté notre balance, mais l'ensemble nous paraît relativement léger, donc il doit y avoir belle une marge d'amélioration possible. Il faudra juste doser le tout correctement afin de conserver aussi bas que possible le risque de casse dans le contexte scolaire hostile. Une autre possibilité serait aussi d'opter pour un écran plus grand.

Nous notons sur la tranche supérieure un interrupteur d'alimentation, ainsi qu'un port micro-USB.

109351093610937




2) Démarrage et Linux :

Go to top

10939Dès l'actionnement de l'interrupteur d'alimentation, la calculatrice commence à démarrer son système Linux embarqué. Cela lui demande un certain temps, une 40aine de secondes. C'est déjà un peu moins que ce qu'exigent les TI-Nspire CX. Notons l'écran de démarrage graphique de Plymooth qui, de façon fort bienvenue, nous fait patienter pendant le chargement en animant le symbole mathématique de l'infini. ;)

On peut aussi si tu préfères maintenir une touche pendant le démarrage pour réobtenir l'écran texte et voir un petit peu mieux ce qui se passe lors du démarrage de cette distribution Linux Gentoo choisie sous la direction de Nicolas :

109781100211001Ce n'est pas du tout son mode de fonctionnement normal, mais une fois la machine démarrée on peut utiliser la combinaison permettant de basculer sur le terminal texte (à condition de trouver les bons équivalents des touches) et faire joujou directement avec Linux. Comme tu peux le voir ci-contre, la commande free nous précise que la calculatrice ne manque pas de mémoire de travail, avec pas moins de 430,36 Mio libres pour une capacité de 479,54 Mio. ;)

Matériellement, on peut donc conjecturer 512 Mio de capacité RAM (mémoire vive).




3) Affichage et applications intégrées :

Go to top

10940Repassons en fonctionnement normal sur le terminal graphique. Nous voici donc à l'écran d'acccueil. Tu as peut-être eu l'impression en fin de démarrage sur la vidéo ci-dessus, plus précisément au lancement de l'environnement graphique sway, que la zone d'affichage se rétrécissait verticalement. Effectivement nous disposons d'un écran 320×240 pixels, mais l'écran d'accueil et les applications Symbolibre n'utilisent que 320×220 pixels. Les 20 premières lignes de l'écran sont en fait réservées pour l'affichage futur d'une barre d'état.

On apprécie la finesse du pixel. Niveau qualité de l'écran on regrettera par contre qu'il ne soit pas anti-reflets contrairement à certains excellents écrans de la concurrence.

L'écran d'accueil nous présente donc 5 applications que nous allons explorer ensemble :
  1. Calcul
  2. Graphique
  3. IDE
  4. Paramètres
  5. Éteindre

Un bon début, même si manqueront encore à ce jour pour la France quelques essentiels, comme statistiques, probabilités et suites numériques.




4) Application Calcul :

Go to top

1094310944Première application d'importance pour une calculatrice, Calcul est déjà très évoluée. Développée sous la supervision d'Aymeric Walch, elle interface GIAC, le moteur de calcul formel du logiciel libre Xcas par Bernard Parisse. Tu peux donc déjà faire du calcul exact, littéral et même formel comme tu le confirmeras ci-contre! :bj:

Mais cela ne veut pas dire pour autant qu'il n'y a pas eu du travail conséquent. Notons en effet que nous y disposons déjà d'un historique des calculs, que les expressions et leur simplification sont affichées en écriture naturelle ce qui n'est pas un problème simple, et même la saisie des expressions à évaluer s'effectue déjà en écriture naturelle ce qui est encore moins simple ! :o

Bref, une très belle interface pour GIAC ! :bj:




5) Application Graphique :

Go to top

10959Autre application d'importance pour une calculatrice graphique, Graphique, là encore développée en Qt sous la supervision d'Aymeric, adopte une interface par onglets très intuitive comparable à la NumWorks. :)

On peut toutefois regretter que l'onglet actif ne soit pas toujours visuellement évident avec les couleurs choisies.

1096110960Les différents onglets nous permettent donc de définir jusqu'à 3 fonctions, de configurer la fenêtre graphique puis de l'afficher.

10962Ce dernier onglet affichant la fenêtre graphique est codé autour du widget Qt QCustomPlot, avec plusieurs qualités remarquables par rapport à la concurrence.

Par exemple nous avons des étiquettes numériques venant expliciter les graduations tout le long de chaque axe. :)

Notons aussi que les graduations restent affichées en bordure si jamais l'origine tombe hors fenêtre, ce qui évite à l'utilisateur de se retrouver perdu comme sur d'autres modèles. :)

Mais ce n'est pas tout, il ne faut pas croire que tout ce qu'il y a de bon a déjà été inventé pour les calculatrices graphiques. Tu te souviens de l'aberration d'autres modèles où lorsque tu as le curseur sur un graphe, tu dois taper
pour passer au graphe suivant, et ce même si le graphe suivant est au-dessus ? De façon ici beaucoup plus intuitive, les touches
et
te permettront de basculer le curseur non pas vers le graphe précédent ou suivant, mais vers le graphe qui se situe au-dessus ou en-dessous du graphe courant ! :bj:

Et puisque nous y sommes, le curseur de graphe nous permet de constater la formidable puissance de la machine, le défilement de la fenêtre graphique étant parfaitement fluide, sans le moindre indice visible de retraçage des graphes lorsque le curseur sort de la fenêtre ! :bj:

De même, la fenêtre graphique peut être défilée horizontalement ou verticalement et même zoomée en toute fluidité ! :bj:

Une application Graphique qui arrive encore à innover après plus de 30 ans de calculatrices graphiques, bravo ! :bj:




6) Application IDE :

Go to top

109481094710946Voici donc maintenant IDE, l'application de programmation, thème transversal au lycée français, conçue par le groupe de Maxime Darrin.

Créons un nouveau fichier, l'application nous propose alors d'en choisir le type :
  1. Texte
  2. Python
  3. OCaml
  4. TI Basic
  5. Casio Basic
Pas moins de 4 langages sont donc gérés par cette application, dont les langages interprétés TI / Casio historiques pour faciliter la transition des élèves vers le Python ! :bj:

10949Le Python va fait l'objet d'un point séparé. A part cela, notons que l'éditeur dispose bien évidemment de tout ce qu'il faut, numérotation des lignes, coloration syntaxique et aide à la saisie des instructions ! :bj:




7) Application Paramètres :

Go to top

1095810957Et enfin nous avons l'habituelle application Paramètres, permettant de choisir la langue, régler la luminosité de l'écran, le délai d'extinction, ainsi que de configurer le comportement du moteur de calcul (résultats exacts ou décimal, notation scientifique, écriture naturelle...).




8) Python :

Go to top

10979Pour tester plus en profondeur le Python 3.6.6 de Symbolibre, nous allons repasser sur la console Linux.

Selon la commande help("modules"), nous avons droit à un Python exhaustif. Avec pléthore de modules ici illustrés seulement jusqu'à la la lettre G, il distance toute la concurrence avec au mieux sa petite 10aine de modules ! :bj:
10977109801098110982

On pourra par contre regretter de ne trouver aucun module graphique, ce qui aurait été bien utile pour le nouveau programme de Physique-Chimie Seconde rentrée 2019.

  1. 147+ modules : Symbolibre
  2. 13 modules : module externe TI-Python pour TI-83 Premium CE (firmware tiers)
  3. 8 modules : TI-83 Premium CE Edition Python + NumWorks + Casio Graph 35+E II / 35+E/USB / 75/85/95 / fx-9750GII / fx-9860G/GII + TI-Nspire (application MicroPython) + module externe TI-Python pour TI-83 Premium CE
  4. 3 modules : Casio Graph 35+E II / 90+E / fx-CG50




10996Nous notons entre autres la présence essentielle du module cmath apportant les fonctions complexes, et donc la gestion des nombres complexes pour les actuelles Terminales S / STI2D / STL (SPCL) d'une part, futures option Maths expertes en série générale et spécialité Physique-Chimie-Maths en série STI2D.

  1. Symbolibre + NumWorks + Casio Graph 35+E II / 35+E/USB / 75/85/95 / fx-9750GII / fx-9860G/GII (application CasioPython) + TI-Nspire (application MicroPython) + module externe TI-Python pour TI-83 Premium CE (firmware tiers) avec nombres et fonctions complexes
  2. Casio Graph 35+E II / 90+E / fx-CG50 avec nombres complexes
  3. TI-83 Premium CE Edition Python + module externe TI-Python pour TI-83 Premium CE




Regardons maintenant plus précisément le contenu de ces différents modules, à l'aide du script suivant :
Code: Select all
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)
      print(hd+itms+"="+str(itm))
      if isExplorable(itm):
        pitmsl2=pitmsl.copy()
        pitmsl2.append(itms)
        c=c+explmod(itm,pitmsl2,False)
    except:
      print(hd+itms)
  if c>0:
    print(hd+"Total: "+str(c)+" item(s)")
  return c


10990Si l'on explore par exemple le module math avec explmod(math), on obtient pas moins de 55 élements, soit nettement plus que les au mieux 41 de la concurrence ! :bj:
109871098810989

  1. 55 éléments : Symbolibre
  2. 41 éléments : NumWorks + Casio Graph 35+E II / 35+E/USB / 75/85/95 / fx-9750GII / fx-9860G/GII (application CasioPython) + TI-Nspire (application MicroPython) + module externe TI-Python pour TI-83 Premium CE (firmware tiers)
  3. 28 éléments : TI-83 Premium CE Edition Python + module externe TI-Python pour TI-83 Premium CE
  4. 25 éléments : Casio Graph 35+E II / 90+E / fx-CG50




10986Si par contre on explore maintenant le module builtins avec explmod(builtins), on ne trouve bizarrement que 152 éléments, soit nettement moins que la concurrence. Nous avons toutefois omis de prendre note de ce qui pouvait bien manquer.

  1. 218 éléments : TI-Nspire (application MicroPython)
  2. 204 éléments : Casio Graph 35+E II / 35+E/USB / 75/85/95 / fx-9750GII / fx-9860G/GII (application CasioPython) + TI-Nspire (application MicroPython)
  3. 192 éléments : TI-83 Premium CE Edition Python
  4. 191 éléments : module externe TI-Python pour TI-83 Premium CE (firmware tiers)
  5. 190 éléments : module externe TI-Python pour TI-83 Premium CE
  6. 188 éléments : NumWorks
  7. 175 éléments : Casio Graph 35+E II / 90+E / fx-CG50
  8. 152 éléments : Symbolibre




10995Pour en apprendre davantage sur l'implémentation, explorons le module sys avec explmod(sys). Malheureusement la commande finit par partir en récursion infinie.
1099010991109921099310994

10985En allégeant un petit peu le script, on arrive à estimer 85 éléments, ce qui est déjà bien plus que ce qu'offre la concurrence. :bj:

  1. 85 éléments : Symbolibre
  2. 15 éléments : TI-83 Premium CE Edition Python + TI-Nspire (application MicroPython) + module externe TI-Python pour TI-83 Premium CE
  3. 12 éléments : Casio Graph 35+E II / 35+E/USB / 75/85/95 / fx-9750GII / fx-9860G/GII (application CasioPython) + TI-Nspire (application MicroPython)
  4. 0 élément : NumWorks + Casio Graph 35+E II / 90+E / fx-CG50




10997Tant que nous avons le module sys sous la main, remarquons que sys.maxsize==2**31-1, les nombres entiers sont donc codés nativement sur 32 bits (1 bit de signe). Et que comme sys.maxsize+1 ne retourne pas d'erreur, le support des entiers longs est donc actif.



Intéressons-nous maintenant à la mémoire de travail à l'aide du script suivant :
Code: Select all
def sizeenv():
  s=0
  import __main__
  for o in dir(__main__):
    try:s+=size(eval(o))
    except:pass
  return s
def size(o):
  s,t=0,type(o)
  if t==str:s=49+len(o)
  if str(t)=="<class 'function'>":s=136
  if t==int:
    s=24
    while o:
      s+=4
      o>>=30
  if t==list:
    s+=64
    for so in o:s+=8+size(so)
  return s
def mem(v=1,r=1):
  try:
    l=[]
    try:
      l+=[r and 793+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:
      if v:print("+",size(l))
      try:l[0]+=size(l)
      except:pass
      try:l[0]+=mem(v,0)
      except:pass
      return l[0]
  except:return 0


Malheureusement, le processus Python se voit assassiné à peine terminée l'allocation de son premier bloc mémoire. Cela nous permet toutefois une estimation, nous disposons donc au moins de 268,435 Mo pour l'exécution de nos scripts, quantité astronomique par rapport à la concurrence ! :bj:

  1. 268,435+ Mo : Symbolibre
  2. 2,049 Mo : TI-Nspire (application MicroPython)
  3. 1,033 Mo : Casio Graph 90+E / fx-CG50
  4. 257,63 Ko : Casio Graph 35+E / 35+USB/75/95 SH4 / fx-9750/9860GII SH4 (application CasioPython)
  5. 100,554 Ko : Casio Graph 35+E II
  6. 31,893 Ko : Casio Graph 35+E II / 35+USB/75/85/95 SH3 / fx-9750GII SH3 / fx-9860G/GII SH3 (application CasioPython)
  7. 22,914 Ko : module externe TI-Python pour TI-83 Premium CE (firmware tiers)
  8. 19,918 Ko : module externe TI-Python pour TI-83 Premium CE
  9. 19,550 Ko : TI-83 Premium CE Edition Python
  10. 16,233 Ko : calculatrice NumWorks




Enfin, terminons en voyant les performances. Commençons dans le cadre des nombres entiers avec le script suivant :
Code: Select all
try:
  from time import *
except:
  pass

def hastime():
  try:
    monotonic()
    return True
  except:
    return False

def genseed(ndigits):
  nmax,s,k=5*10**(ndigits-1),0,1
  while s<nmax:
    s+=k
    k*=2
  return s

def genarr(ndigits):
  sd,arr=genseed(ndigits),[]
  for k in range(1,ndigits):
    for j in range(ndigits):
      t=sd%10**k
      arr.extend([t,-t,10**k-t,t-10**k])
      sd=sd//10+(sd%10)*10**(ndigits-1)
  arr.extend([sd,-sd])
  return arr

def sortarr(arr,sdiff):
  segs=[0,len(arr)-1]
  while len(segs):
    iref=segs[0]
    for k in range(segs[0],segs[1]+1):
      if sdiff*(arr[k]-arr[iref])>0:
        t=arr[iref]
        arr[iref]=arr[k]
        arr[k]=arr[iref+1]
        arr[iref+1]=t
        iref+=1
    if iref>=segs[0]+2:
      segs.extend([segs[0],iref-1])
    if iref<=segs[1]-2:
      segs.extend([iref+1,segs[1]])
    segs.pop(0)
    segs.pop(0)
  return arr

def test(l,n):
  timed=hastime()
  start,stop,sdiff,arr=0 or timed and monotonic(),1,-1,[]
  arr.extend(genarr(l))
  for k in range(n):
    arr.extend(sortarr(arr,sdiff))
    sdiff=-sdiff
  stop=timed and monotonic() or 1
  return stop-start,len(arr),arr[0],arr[len(arr)//2-1],arr[len(arr)//2],arr[len(arr)-1]


10998De façon absolument extraordinaire, la commande test(9,2) se termine en 2,04s et explose presque toute concurrence ! :bj:

  1. 1,41s : TI-Nspire (application MicroPython) (32 bits : ARM9/ARMv5 @120MHz)
  2. 1,56s : TI-Nspire CM / CX révisions A-V (application MicroPython) (32 bits : ARM9/ARMv5 @132MHz)
  3. 2,04s : Symbolibre (?)
  4. 2,40s : TI-Nspire CX révisions W+/CR4+ (application MicroPython) (32 bits : ARM9/ARMv5 @156MHz)
  5. 3,74s : NumWorks (32 bits : Cortex/ARMv7 @100MHz)
  6. 4,75s : Casio Graph 90+E / fx-CG50 (32 bits : SH4 @118MHz)
  7. 8,81s : HP Prime G2 (32 bits : Cortex/ARMv7 @528MHz)
  8. 9,56s : Casio Graph 35+E/75+E / 35+USB/75/95 SH4 / fx-9750/9860GII SH4 (application CasioPython) (32 bits : SH4 @29,5MHz)
  9. 10,19s : Casio Graph 35+E II (application CasioPython) (32 bits : SH4 @59MHz)
  10. 12,99s : Casio Graph 35+USB/75/85/95 SH3 / fx-9750GII SH3 / fx-9860G/GII SH3 (application CasioPython) (32 bits : SH3 @29,5MHz)
  11. 14,93s : Casio Graph 35+E II (32 bits : SH4 @59MHz)
  12. 20,73s : HP Prime G1 (32 bits : ARM9/ARMv5 @400MHz)
  13. 23,20s : module externe TI-Python pour TI-83 Premium CE (32 bits : Cortex/ARMv7 @48MHz)
  14. 26,60s : TI-83 Premium CE Edition Python (?)
  15. 33,48s : module externe TI-Python pour TI-83 Premium CE (firmware tiers) (32 bits : Cortex/ARMv7 @48MHz)
  16. 60,71s : application KhiCAS sur Casio Graph 90+E / fx-CG50 (32 bits : SH4 @118MHz)
  17. 116,93s : application KhiCAS sur Casio fx-CG10/20 (32 bits : SH4 @59MHz)




Passons maintenant aux nombres flottants avec le script suivant :
Code: Select all
try:
  from time import *
except:
  pass

def hastime():
  try:
    monotonic()
    return True
  except:
    return False

def seuil(d):
  timed=hastime()
  start,stop,n,u,l,d=0 or timed and monotonic(),1,0,2.,1,d**2
  while (u-l)**2>=d: u,n=1+(1/((1-u)*(n+1))),n+1
  stop=timed and monotonic() or 1
  return [stop-start,n,u]


10999La ligne d'appel seuil(0.005) se termine en seulement 0,815s, atomisant cette fois-ci toute concurrence ! :bj:

D'où le classement suivant dans le contexte des calculs en virgule flottante :
  1. 0,815s : Symbolibre (?)
  2. 0,962s : HP Prime G2 (32 bits : Cortex/ARMv7 @528MHz)
  3. 1,08s : TI-Nspire CM / CX CR3- (application MicroPython) (32 bits : ARM9/ARMv5 @132MHz)
  4. 1,29s : TI-Nspire (application MicroPython) (32 bits : ARM9/ARMv5 @120MHz)
  5. 1,61s : TI-Nspire CX CR4+ (application MicroPython) (32 bits : ARM9/ARMv5 @156MHz)
  6. 2,036s : NumWorks (32 bits : Cortex/ARMv7 @100MHz)
  7. 3,068s : HP Prime G1 (32 bits : ARM9/ARMv5 @400MHz)
  8. 8,94s : Casio Graph 90+E / fx-CG50 (32 bits : SH4 @118MHz)
  9. 9,68s : module externe TI-Python pour TI-83 Premium CE (32 bits : Cortex/ARMv7 @48MHz)
  10. 10,38s : TI-83 Premium CE Edition Python (?)
  11. 10,68s : Casio Graph 35+E II (application CasioPython) (32 bits : SH4 @59MHz)
  12. 11,26s : Casio 35+E/75+E / 35+USB/75/95 SH4 / fx-9750/9860GII SH4 (application CasioPython) (32 bits : SH4 @29,5MHz)
  13. 11,46s : module externe TI-Python pour TI-83 Premium CE (firmware tiers) (32 bits : Cortex/ARMv7 @48MHz)
  14. 13,87s : Casio Graph 35+USB/75/85/95 SH3 / fx-9750GII SH3 / fx-9860G/GII SH3 (application CasioPython) (32 bits : SH3 @29,5MHz)
  15. 19,98s : application KhiCAS sur Casio Graph 90+E / fx-CG50 (32 bits : SH4 @118MHz)
  16. 25,19s : Casio Graph 35+E II (32 bits : SH4 @59MHz)
  17. 35,55s : application KhiCAS sur Casio fx-CG10/20 (32 bits : SH4 @59MHz)




L'équipe prévoit de rajouter le module giacpy afin de pouvoir faire également du calcul exact / littéral / formel en Python. Mais les conséquences vont bien au-delà de ça. En effet sur la concurrence actuelle, l'application Python est toujours cloisonnée dans son coin, incapable d'échanger la moindre information avec le reste des applications, et ne pouvant donc pas jouer pleinement sont rôle dans la résolution d'un problème. Cet ajout permettra donc au Python de sortir de sa bulle, faisant ainsi appel au moteur de calcul de l'application Calcul directement depuis l'application IDE ! :bj:




9) Application Éteindre :

Go to top

10945Voici bientôt l'heure de notre train. Il est donc grand temps de voir ce que la calculatrice Symbolibre a dans le ventre. Mais en attendant petit interlude, commençons donc par l'éteindre complètement, ce qui prend une 15aine de secondes :




10) Matériel :

Go to top

1100411003Nous voici donc maintenant parés pour la grande dissection et donc la découverte de l'oeuvre du groupe de Némo Fournier ! :bj:

Plusieurs éléments nous apparaissent :
  • une carte Raspberry
  • une carte clavier
  • une carte écran
  • une carte Adafruit
  • une batterie



11005Au coeur de la Symbolibre, nous avons donc la carte du nano-ordinateur Raspberry Pi Zero. Un choix fort bien calculé dans notre contexte, puisque c'est l'un des rares modèles Raspberry Pi à ne pas intégrer de capacités sans-fil interdites aux examens ! :bj:

Nous disposons donc :
  • d'un processeur ARM1176JZF-S cadencé à 1 GHz, un 32-bits de la famille ARM11/ARMv6, soit de génération supérieure aux ARM9/ARMv5 équipant encore de nos jours les TI-Nspire CX II ! :bj:
  • d'une mémoire RAM très confortable de 512 Mio, ce qui valide notre conjecture faite plus haut ! :bj:
  • d'un lecteur de carte mémoire microSD, permettant ici d'amorcer sur la carte de 8 Gio contenant le système d'exploitation Symbolibre
  • de deux ports au format micro-USB, l'un des deux étant dédié à l'alimentation et l'autre étant un port OTG
  • d'un port mini-HDMI



1102611027Les ports GPIO de l'ordinateur Raspberry Pi Zero permettent d'une part de le relier à la carte clavier, ici conçue sur mesures.


11007Ils permettent d'autre part de connecter la carte de l'écran, un 320×240 pixels comme déjà dit, plus précisément un 2,4 pouces de chez EastRising.
1103211033




110101100911008Le port micro-USB d'alimentation est quant à lui relié non pas à la batterie mais à une autre carte, une Adafruit PowerBoost 500C, carte qui expose alors son propre connecteur micro-USB sur la tranche supérieure de la calculatrice.
110281103011031


Cette carte est elle-même reliée à une batterie AdaFruit 3,7 Volts de 2000 mAh de capacité.
1102211023


Le rôle de cette carte interface Adafruit PowerBoost 500C est en fait de gérer la recharge de la batterie.




11) Connectivité et périphériques :

Go to top

1101511018Les calculatrices graphiques contemporaires ont perdu la quasi totalité de la riche connectivité dont disposaient leurs ancêtres des années 80, les "ordinateurs de poche". On ne peut y connecter qu'un nombre très restreint de périphériques, une rareté qui se paye cher. :mj:

Mais comme nous venons de le voir, la Symbolibre dispose d'un port micro-USB OTG standard. De quoi par exemple connecter un clavier USB une fois sorti le bon adaptateur.

Le clavier ainsi rajouté permet parfaitement de naviguer à travers les différentes interfaces de la calculatrice Symbolibre.

Il permet également de contrôler la console Linux ainsi que l'éditeur de l'application IDE tout en profitant de toutes les touches supplémentaires qu'il apporte, notamment la possibilité de sélectionner du texte ! :bj:

Un superbe confort de saisie ! :bj:

1101611017Mais ce n'est pas tout puisque la Symbolibre dispose également d'un port mini-HDMI. De façon encore plus exceptionnelle, avec utilisation de l'adaptateur adéquat, on peut donc connecter la calculatrice Symbolibre à un écran ou un vidéoprojecteur ! :bj:
110191102011021


De quoi vidéoprojeter facilement la calculatrice en classe ! :bj:
Même si avant ça, il faudra toutefois commencer par régler le problème de la résolution qui comme tu peux voir ne s'adapte pas au périphérique de sortie vidéo.

Toutefois, précisons que ces deux possibilités extraordinaires ne sont pas encore d'actualité. En effet, pour le moment, les connecteurs micro-USB OTG et mini-HDMI sont internes, et donc inaccessibles sans démonter la calculatrice.

Pour pouvoir les exploiter il faudra :
  • soit revoir l'ensemble de la conception et déplacer la carte Raspberry Pi pour acoller ces connecteurs à l'une des tranches du boîtier
  • soit exporter ces connecteurs vers les tranches du boîtier à l'aide de câbles prolongateurs, ce qui aura un coût




Conclusion :

Go to top

Même si divers points restent à améliorer, la calculatrice Symbolibre est un formidable projet très prometteur avec des points forts monumentaux :
  • un système d'exploitation non seulement libre mais aussi répandu (Linux) :bj:
  • de remarquables innovations niveau intuitivité et facilité de lecture, particulièrement dans le cadre des graphes de fonctions :bj:
  • une application Calcul qui n'a absolument rien à envier à la concurrence, bien au contraire :bj:
  • et qui en prime donne accès des fonctionnalités que la concurrence réserve habituellement au haut de gamme (calcul formel) :bj:

Niveau connectivité, les constructeurs historiques nous ont habitués à des périphériques propriétaires, conçus ou sélectionnés par le constructeur en partenariat avec d'autres entreprises, sans véritable concurrence qui puisse donc jouer dans l'intérêt de l'utilisateur, et donc forcément à des périphériques en pratique très rares et très chers. :mj:

La connectivité standard de la Symbolibre pourrait enfin permettre d'utiliser librement les périphériques de son choix peu importe leur marque, au moins déjà pour tout ce qui standard ! :bj:

Niveau capacités matérielles maintenant, mis à part pour le haut de gamme, la concurrence nous a régulièrement fourni jusqu'à présent le strict minimum nécessaire. Avec comme conséquence des modèles d'entrée et de milieu de gamme qui, à chaque changement significatif des textes réglementaires (mode examen à diode depuis la rentrée 2015, Python depuis la rentrée 2017, ...), doivent être remplacés et sont donc bons pour la poubelle. Quel gaspillage tous les deux ans pour les enseignants ou fratries ! :mj:

Mais avec la Symbolibre, nous obtenons au prix du milieu de gamme du matériel aux capacités haut de gamme, qui devrait bien être capable à la différence de survivre à bien des révolutions scolaires pendant nombre d'années ! :bj:

Toutes nos félicitations à l'équipe Symbolibre, en espérant que le projet pourra continuer maintenant qu'il n'est plus contraint par l'ENS. Nous souhaitons à l'équipe force et courage pour maintenant corriger divers détails évoqués et viser les phases de production et commercialisation. A très bientôt donc, on espère... ;)


Merci à tous ceux qui ont aidé à notre déplacement pour cette naissance ! :D

Une pensée envers, entre autres :

Référence : https://symbolibre.org/

Re: Test Symbolibre, la calculatrice libre avec CAS et Pytho

Unread postPosted: 15 Jun 2019, 20:53
by Lionel Debroux
Merci pour ce nouveau gros travail de test et d'écriture :)

Et bravo, une nouvelle fois, à l'équipe d'étudiants d'avoir monté ce projet et produit ces résultats.

La puissance brute de la machine permet de hacher menu presque toute la concurrence, sauf en temps de boot / extinction parce que contrairement aux autres modèles, la Symbolibre utilise un OS d'usage général que l'équipe n'a pas encore eu le temps d'optimiser significativement, je suppose, dans les limites de ce que le taux de transfert du stockage de la machine permet... Seule la Prime G2 n'a pas un matériel ridiculement limité par rapport à celui de la Symbolibre pourtant beaucoup moins chère, et qui serait encore moins chère en production de volume.

C'est amusant que sway soit utilisé sur une calculatrice... avant de passer au logiciel libre pour ordinateur, son auteur principal, s'est d'abord fait connaître plus jeune dans la communauté calculatrices, en l'occurrence TI, à la fois pour une compétence technique certaine et pour des problèmes relationnels. Mais à ma connaissance du moins, contrairement à ce qui a pu se passer historiquement avec diverses personnes de la communauté, les problèmes relationnels se sont estompés, pendant que les compétences techniques continuaient bien sûr à se développer.

Re: Test Symbolibre, la calculatrice libre avec CAS et Pytho

Unread postPosted: 15 Jun 2019, 23:49
by Lephe
Merci ! Oui, on a des délais liés à la généricité du système utilisé. Pour le démarrage, ça doit pouvoir se travailler. Notez qu'il y a un bug de détection du clavier au lancement de l'environnement graphique, ce qui cause un long délai avant l'ouverture du menu principal, qui ne devrait prendre que quelques secondes au lieu de 23 sur la vidéo ! ^^

Il y a aussi des petits délais au lancement des exécutables à cause de l'initialisation des bibliothèques, c'est quelque chose que j'aimerais regarder. La fluidité est le maître mot, je suppose... :)

Que Drew DeVault soit le facteur commun n'était pas volontaire mais c'est une jolie coincidence. sway est mon environnement de bureau principal, on a considéré que c'était un bon point de départ en termes de légèreté et de facilité de configuration.

Re: Test Symbolibre, la calculatrice libre avec CAS et Pytho

Unread postPosted: 16 Jun 2019, 07:38
by parisse
Ce serait bien de rajouter du support pour le langage de giac dans l'IDE, ce qui permettrait de pouvoir programmer dans l'ecran de calculs, comme dans KhiCAS. Ca ne doit pas etre trop de travail en syntaxe Python, vu que l'UI existe deja pour Python, il faut juste recuperer les erreurs de parse pour placer le curseur au bon endroit dans le source, et avoir un acces au catalogue de commandes giac (et a l'aide en ligne), et si possible donner acces au debugger. J'ai fait tout ca dans KhiCAS sur les Casio, mais ici on aurait enfin acces a tout.

C'est different de giacpy, car avec des modules Python, j'imagine qu'on resterait confine dans l'environnement de programmation, sans interaction possible avec Calculs, alors qu'un mode giac de l'IDE veut dire qu'on pourrait utiliser des fonctions utilisateurs du langage de programmation dans Calculs, voir ailleurs, dans Graphiques si c'est giac qui evalue les expressions a tracer, dans Suites une fois que l'application existera, etc.

Par ailleurs, cela pourrait fournir un chemin simple pour avoir du graphique en programmation, giac ayant des instructions pour le trace par pixels, mais aussi tout ce qu'il faut pour faire des graphiques dans des reperes (graphes de fonction, graphes parametriques, courbes de niveau, etc. et geometrie analytique), et donc plus de necessite de porter matplotlib ou equivalent.

Re: Test Symbolibre, calculatrice libre avec CAS (giac) + Py

Unread postPosted: 16 Jun 2019, 22:06
by Lephe
Bonjour Parisse ! Tu pointes un problème intéressant et qui nous a été suggéré par l'IFÉ, la communication entre les applications. Pouvoir exporter un graphe construit en Python dans l'application de graphes, typiquement, c'est un objectif. :)

Cela étant dit, même si on utilise Giac pour tout le travail mathématique, l'application de calcul expose un langage différent que l'on traduit vers Giac, essentiellement. Ça permet de découpler les APIs et les fonctionnalités. Pour l'instant on ne sait pas tout à fait où la limite va se trouver, mais il est probable que les fonctions de dessin et de graphe utilisent nos applications. Quitte à caricaturer, notre modèle consiste à utiliser la partie de Giac qui calcule et à faire nous-même toutes les I/O.

On souhaite bien sûr que toutes les fonctions de Giac soient accessibles à au moins un endroit, par exemple avec giacpy ou un script giac, mais il faut les intégrer. Par exemple binder notre graphe sur les fonctions de tracés... quelque chose du genre. Je ne sais pas encore si c'est réalisable et avec quel effort, mais on aura définitivement besoin de toi pour appréhender la structure :)

Pour revenir à tes remarques, la question d'utiliser dans l'IDE des fonctions de l'utilisateur dans différentes applications, c'est un sujet dont a discuté récemment. Notre langage effectue le partage du stockage avant la traduction à Giac, donc le système de la Symbolibre donne accès aux données à toutes les applications, y compris les applications tierces. Je pense que les interactions que tu décris, de façon générale, on a envie de les programmer à un niveau plus élevé.

Je commencer à cerner un peu mieux la différence entre giac/giacpy/xcas, et on va continuer à y réfléchir... c'est des grands sujets de discussion en ce moment. ^^