dimanche 6 novembre 2016

La TI-89, une calculette au top pour la génération Y

La grosse TI-92 sera restée sans véritable concurrente pendant 3 ans, jusqu'à ce que Texas Instruments dévoile sa TI-89 en 1998. L'embonpoint de la TI-92 avait certainement limité sa diffusion dans les cartables. Pour lever toutes les objections, la TI-89 embarque le même logiciel, mais dans un gabarit proche de la TI-85. Cet air de famille est entretenu avec ses coloris noir/gris/bleu/jaune, et sa disposition de clavier typiquement "Texas". Avec un écran LCD dorénavant précis et bien contrasté, elle atteint parfaitement sa cible marketing : les élèves et les profs vont se l'arracher. La nouvelle TI-89 réussira même à convaincre certains clients fidèles de Texas qui possédaient déjà une TI-92 de première génération ! De nos jours, dix-huit ans plus tard, la TI-89 est encore en vente dans sa version nommée "Titanium" à un tarif assez élevé, compris entre 140 et 200 euros, en fonction des vendeurs. Cela dit, sans aller jusqu'à remettre en cause l'utilité d'une calculatrice formelle aussi chère dans l'enseignement, comme n'hésitent pas à le faire certains de ses détracteurs, force est de constater que l'adjectif "indispensable" n'est pas celui qui convient le mieux à la TI-89.

Le modèle que j'ai sous les yeux est une TI-89 avec le hardware version 2, probablement produite en 1999. Son cœur, à base de Motorola 68000, a été porté à 12 MHz. Après les premiers instants d'hésitation, classiques avec les calculettes haut de gamme, on apprécie la convivialité remarquable de l'engin. Bien entendu, la lecture du manuel, encore en version papier à l'époque, restera bien souvent obligatoire. Le TI-Basic 68k est un langage "facile". Il est néanmoins plus puissant que le TI-83 Basic qui est une variante plus répandue, grâce à son positionnement bas de gamme.

Pour parler un peu d'ergonomie, globalement bonne sur cette TI, on peut tout de même regretter que la saisie alphanumérique soit un peu laborieuse. Mais c'est comme sur toutes les calculettes graphiques à la disposition verticale. Dans le même ordre d'idée, certaines polices microbiennes manquent parfois un peu de lisibilité à l'écran, tout comme la sérigraphie du clavier, qui reste néanmoins dans la norme. Enfin, dernier détail, je trouve dommage que la séquence [Off] puis [On] ne revienne pas exactement dans le même contexte logiciel. Par exemple, on ne revient pas sur le "Program editor" après Off/On, mais directement sur l'écran "Home". Étonnamment, cette même fonctionnalité est bien active lorsqu'on laisse la mise en veille automatique agir, puis que l'on rallume la machine.

Une TI-89 hardware version 2


Comme à l'habitude, pour compléter ce test, j'utilise mon programme de test de primalité simpliste :

premier(n)
Prgm
int(\/(n))->j
If fPart(n/2)=0 Then
Disp 2
Else
 For i,3,j,2
  If fPart(n/i)=0 Then
   Disp i
Return
  EndIf
 EndFor
Disp 1
Endif
EndPrgm


Caractères spéciaux :
\/ correspond à la touche racine carrée
-> correspond à la touche STO>

Le test sur 524287 s’exécute sur la TI-89 en un peu moins de 7 secondes ; un score un peu meilleur que la TI-92, et équivalent à la TI-85. Pour aller un peu plus loin cette fois-ci dans les tests de performance, j'ai écrit un programme de recherche des nombres de Keith. Ils sont beaucoup plus rares que les nombres premiers, et il n'existe pas de formule directe pour les trouver. La seule méthode connue actuellement reste donc la recherche exhaustive. À partir de la saisie d'un entier n1 quelconque, le programme ci-dessous teste si n1 est un nombre de Keith, ou bien affiche le nombre de Keith immédiatement suivant.

mpo39(n1)
Prgm
newList(10)->n
Loop
int(log(n1))+1->l
n1->m
0->s
For i,l,1,(-)1
mod(m,10)->n[i]
s+n[i]->s
int(m/10)->m
EndFor
Loop
i+1->i
If i>l
1->i
2*s-n[i]->m
s->n[i]
m->s
If s>=n1
Exit
EndLoop
If s=n1
Exit
n1+1->n1
EndLoop
Disp string(s)&" est un Keith"
EndPrgm


Caractères spéciaux :
-> correspond à la touche STO>
(-) correspond à la touche grise (-)

Commentaires sur les variables :
- 'l' correspond au nombre de chiffres de 'n1'
- la liste 'n' contient les chiffres de 'n1'
- 's' contient la somme des chiffres de 'n1'
- ensuite, à partir du deuxième Loop, 'n' contient les termes de la suite de Keith (une sorte de suite de Fibonacci). Pour optimiser le calcul de la somme, j'ai considéré la formule suivante :
n[i] = 2*n[i-1] - n[i-l]

Avec la commande "Disp" (avant-dernière ligne du programme), je souhaitais afficher le résultat (variable et texte) sur une ligne unique. J'ai découvert que ce n'est ni trivial, ni spécialement bien documenté dans le manuel Texas. Le symbole '&' est accessible indirectement, via un menu et la touche [CHAR].

J'avais posté ma version en Basic Casio des années 80 sur le forum Silicium.org en 2014. Elle est certes plus compacte, mais moins bien structurée :

10 DIM N(10)
20 INPUT"N?",N1
30 L=INT(LOG N1)+1:M=N1:S=0
40 FOR I=L TO 1 STEP-1
50 N(I)=M MOD10:S=S+N(I):M=INT(M/10):NEXT
60 I=I+1:IF I>L THEN I=1
70 M=2*S-N(I):N(I)=S:S=M:IF S<N1 THEN60
80 IF S=N1 THEN BEEP:PRINT S;"est un Keith":END
90 N1=N1+1:GOTO30


Enfin, pour comparaison dans la catégorie 68k, voici une version de 28 lignes en GFA Basic pour Atari ST :

DIM n%(10)
DO
  INPUT "N?",n1%
  PRINT TIME$;"  ";
  DO
    l%=INT(LOG10(n1%))+1
    m%=n1%
    s%=0
    FOR i%=l% TO 1 STEP -1
      n%(i%)=m% MOD 10
      ADD s%,n%(i%)
      DIV m%,10
    NEXT i%
    REPEAT
      INC i%
      IF i%>l%
        i%=1
      ENDIF
      m%=SHL(s%,1)
      SUB m%,n%(i%)
      n%(i%)=s%
      s%=m%
    UNTIL s%>=n1%
    EXIT IF s%=n1%
    INC n1%
  LOOP
  PRINT s%;" est un Keith.  ";TIME$
LOOP


Avec le nombre 7000 en entrée, les temps de calcul jusqu'au nombre de Keith suivant (7385) sont les suivants :

- 7min52s sur Casio FX-850P
- 3min58s sur TI-89
- 2min12s sur Casio Z-1
- 4s sur Atari 1040 STF (GFA Basic interprété)

Calcul des nombres de Keith en GFA Basic sur Atari ST


Ce résultat ne peut donc que confirmer la relative lenteur du TI-Basic. Et, malheureusement, la TI-89 d'origine n'embarque pas d'autre langage qui puisse être exploité sans faire appel à un ordinateur externe.

Aucun commentaire:

Enregistrer un commentaire