# Calculatrice programmable

Une calculatrice programmable est une calculatrice capable d'être programmée, d'une façon similaire à un ordinateur. Elle diffère de la simple calculatrice par sa faculté d'exécuter des algorithmes et de manipuler et transformer des données.

## Histoire

La première calculatrice programmable à carte magnétique est mise sur le marché par Hewlett-Packard en 1975 : c'est le modèle HP-65, qui est également une calculatrice scientifique. Elle est suivie par la SR 52 en 1975. On entend décrire par le qualificatif de programmable une machine capable de contenir dans une mémoire autonome une suite d’instructions composant un programme et exécutable sur demande. Les premiers modèles commercialisés par HP sont novateurs car leur dispositif d'enregistrement par cartes magnétiques autorise la sauvegarde mais aussi l'échange de programmes.
Les facultés de programmation sont encore limitées : le HP-65 ne peut accepter que 100 lignes de programme. La calculatrice de Hewlett-Packard qui coûte 795$ lors de sa mise sur le marché doit en grande partie son succès auprès du public par sa présence dans le programme spatial Américain Apollo ainsi que lors de rendez vous historiques tels celui mené avec le vaisseau russe Soyouz en juillet 1975. La HP-65 est alors utilisée par les astronautes pour calculer les corrections de trajectoire lors des manœuvres de rendez-vous entre les deux vaisseaux.
À l'époque, si des ordinateurs peuvent déjà être mobilisés pour les calculs complexes impliquant un algorithme, ceux nécessitant des moyens embarqués (comme dans le domaine des missions spatiales) sont encore fréquemment réalisés manuellement aidé de diverses tables de calculs (telles les tables de trigonométrie ou de logarithmes) faute de puissance suffisante sur les ordinateurs de bord des stations spatiales.
En 1977, la calculatrice programmable HP-67 succède au modèle HP-65. Elle propose 256 instructions de programmation (contre 64 pour le modèle 65). De nombreux concurrents proposent eux aussi des modèles de calculatrices programmables : APF propose la Mark 90 (1977), Commodore sa P 50 (1975) puis sa PR 100 (1977) ; Compucorp la 324 G (1972) et la 326 (1973) et la firme Sinclair au Royaume-Uni présente sa Cambridge Programmable en 1978. Mais le principal concurrent de HP est rapidement Texas Instruments qui propose un modèle très sophistiqué, la TI-59 dès 1977. Pour beaucoup, la calculatrice de TI est le premier vrai ordinateur de calcul programmable.
Le TI-59 utilisait un véritable processeur 4 bits (le TMC 0501), et sa mémoire interne pouvait être partagée à la fois par les programmes et les registres de données. La programmation incluait des possibilités de structuration (routines et sous-routines) et 175 instructions étaient disponibles. Des cartes magnétiques pour sauver et échanger des programmes étaient proposées. L'affichage exploitait un système à LED avec 7 segments, rendant l'appareil capable de manipuler l'alphabet. Au total, Texas Instruments et Hewlett-Packard produiront respectivement sept et seize modèles différents qui domineront le marché.

### Architecture

La calculatrice programmable répond à toutes les caractéristiques d'un ordinateur : elle doit intégrer un microprocesseur pour traiter des instructions. Les instructions peuvent être stockées en mémoire vive ou morte. Des registres doivent être présents pour recevoir le résultat des traitements réalisés par le microprocesseur. La calculatrice programmable répond donc à l'architecture minimale d'un ordinateur tel que le conçoit von Neumann.
D'ailleurs, les ordinateurs primitifs tels que l'ENIAC ou l'EDVAC sont des calculateurs programmables dont l'architecture est très proche de celles des premières calculatrices programmables. Ce qui les différencie, outre la compacité et la puissance, est l'adjonction sur les calculatrices programmables de périphériques d'entrées-sorties (les écrans à LED, les claviers, les imprimantes), de stockage (les mémoires magnétiques) rendus possibles par les progrès technologique en électronique et l'apparition des circuits intégrés.
* Le microprocesseur
Une calculatrice ne peut réaliser des opérations complexes à l'aide de programmes que si elle est équipée d'un microprocesseur. Tous les types de microprocesseur de puissance variable ont équipé les diverses générations de calculatrices programmables. Dans un premier temps, des fabricants tels qu'HP ont utilisé des microprocesseurs propriétaires. Mais plus tard, les calculatrices programmables ont pu être équipées des mêmes processeurs que les ordinateurs de bureau. Ainsi, Texas Instrument a utilisé successivement des Zilog Z80 identiques aux processeurs qui équipaient les premiers micro-ordinateurs (tels que le ZX81 de Sinclair, par exemple), des Motorola 68000 (comme dans la TI-89 Titanium) qui eux-mêmes servirent de cœur pour de nombreux modèles d'ordinateurs Atari et Apple. Les dernières calculatrices de la marque utilisent - comme les plus récents smartphones ou tablettes - des processeurs de technologie ARM.
* La mémoire centrale
La mémoire centrale est l'espace de stockage rattaché directement au microprocesseur. Dans les premières calculatrices programmables, la question du stockage des instructions et des résultats de calculs pouvaient être pris en charge par un dispositif mixant des registres et quelques mémoires, comme dans le cas de la HP-65 avec ses neuf registres de stockage et sa mémoire pouvant retenir 100 instructions. Une telle architecture est assez éloignée de celle des ordinateurs contemporains qui font un usage commun de la mémoire pour contenir à la fois les programmes et leurs données. Aujourd'hui, les calculatrices programmables font un usage de la mémoire identique à celui des ordinateurs, à savoir un espace de stockage central unique divisé en contenu persistant (par ROM ou mémoire Flash) et non persistant (par exemple de type RAM).
* Les méthodes de stockage
Par opposition à la mémoire centrale, les méthodes de stockage permettent de conserver des programmes, des données et des résultats, sur un support relié au microprocesseur par une méthode d'entrée-sortie et généralement amovible.
* Les interfaces utilisateurs
La calculatrice programmable doit offrir une interface homme machine suffisamment évoluée pour que son utilisateur puisse non plus seulement effectuer des calculs simples, mais bel et bien entrer des programmes complexes et en observer le résultat. Dès le lancement de la première calculatrice programmable de HP, une réflexion est donc menée sur le clavier, et sur l'afficheur. Le clavier doit permettre l'entrée de commandes et l'édition un programme. Les calculatrices programmables proposent diverses stratégies de combinaison de touches pour permettre à l'utilisateur d'entrer son programme sans avoir à passer par une saisie alpha-numérique. Encore aujourd'hui, les calculatrices programmables (la série Casio Graph par exemple) se distinguent des ordinateurs de poche par l’absence de clavier alphabétique.
Le périphérique de visualisation est un élément essentiel, déjà mis au point pour les calculatrices. Pour son premier modèle, HP opte pour des afficheurs à LED spécifiquement développés pour minimiser la consommation. Ces afficheurs, limités à la seule capacité d'affichage numérique par dispositif LED, resteront adoptés (par exemple sur la TI-59) jusqu'à la mise sur le marché d'afficheur LCD matriciels qui rendirent possible l'affichage de plusieurs lignes et de résultats graphiques. Les afficheurs LCD sont par exemple intégrés au modèle HP-41 dès 1977 : l'affichage alphanumérique LCD métamorphose la calculatrice programmable qui devient capable de communiquer en clair avec son utilisateur avec, par exemple, des messages d'erreur ("ZERO DIVIDE") plutôt que les zéros clignotants de modèles précédents.

### Relation avec les ordinateurs de poche

Un ordinateur de poche est un petit appareil mobile programmable, de la taille d'une calculatrice. On le distingue généralement de cette dernière par sa capacité à manipuler des chaînes alphanumériques, comme un ordinateur classique, là où une calculatrice programmable se contentera généralement d'une interface utilisateur (clavier et écran) orientée vers la manipulation de calculs et de chiffres (pas de clavier alphabétique par exemple). Si les deux appareils sont des ordinateurs, le langage de programmation de la calculatrice programmable est historiquement beaucoup moins complexe que celui de l'ordinateur de poche.

## Caractéristiques des calculatrices récentes

Sur les calculatrices haut de gamme, la programmation exploite des interfaces de développement disponibles pour Windows et OS X permettant d'émuler les calculatrices et de télécharger ensuite les programmes mis au point sur la calculatrice. Certains modèles utilisent des interfaces utilisateurs haut de gamme tels les modèles Nspire de Texas Instruments utilisant un pavé tactile, un écran LCD d'une définition de 320×240 pixels en couleurs ou en nuances de gris. Elles utilisent des processeurs haut de gamme, généralement une architecture ARM cadencés à 90 MHz. Ces calculatrices peuvent être transformées comme les tablettes, la vitesse de leur processeur augmentée à l'aide d'utilitaires d'overclocking, et leur système débridé.

## Programmation

Les premiers modèles de calculatrices programmables utilisent un langage de programmation spécifique et simplifié, parfois basé sur du bytecode ou enregistrant des appuis successifs de touches. La capacité mémoire allouée aux programmes est souvent limitée dans ces modèles.
Ces langages ne sont généralement pas Turing-complets mais suffisent pour programmer le calcul d'une formule à partir d'une ou deux variables d'entrée. Les expressions conditionnelles sont rarement supportées et les programmes sont stockés dans des zones mémoires séparées, sans accès direct à la mémoire de la machine. La HP-65, par exemple, ne permettait de concevoir que des programmes de 100 instructions, incluant des sous-routines et des branchements conditionnels reposant sur des comparaisons de registres.
La taille d'un programme est mesuré en « pas », chaque pas correspondant à une instruction ; ces calculatrices programmables peuvent contenir des programmes d'une dizaine à une centaine de pas. Les modèles plus évolués utilisent des langages Turing-complets et abandonnent le concept de pas de programmation au profit d'un usage standard de la mémoire.

### Langages utilisés

Sur les calculatrices contemporaines, les langages de programmation modernes peuvent généralement être utilisés via gcc qui est disponible pour plusieurs modèles HP et TI. Ceci signifie que C (langage), C++, Fortran, et la programmation en assembleur peuvent être adoptés pour mettre au point des programmes depuis un ordinateur externe, en les téléchargeant ensuite sur la calculatrice. De nombreux projets tiers sont actifs pour ajouter aux calculatrices programmables des compilateurs compatibles embarqués ou utilisables sur ordinateurs externes. Ces projets incluent des convertisseurs, des interpréteurs, des générateurs de code, des compilateurs.

#### Programmation par mots clés simplifiés

Les premiers modèles de calculatrice programmables utilisaient des langages simplifiés, le plus souvent mis en œuvre par des touches de fonctions associées à un bytecode. Des calculatrices non programmables acceptent ce mode de fonctionnement comme la HP-35. Les calculatrices adoptant ce mode de programmation sont Turing-completes lorsqu'elles prévoient dans leur vocabulaire des tests conditionnels, des boucles, un adressage mémoire indirect et la capacité récursive. Les plus connues des calculatrices programmables de cette famille sont par exemple la Casio FX-602P, la HP-41 et la TI-59.

#### Langages propriétaires

Les calculatrices programmables HP de la famille 48/49/50G utilisent un langage propriétaire développé par HP en 1984, le RPL. Il utilise la notation polonaise inverse, qui place les opérandes avant les opérateurs. Ce choix donne des programmes de calcul plus simples à écrire, qui se passent de parenthèses. Il dérive des langages Forth et Lisp.
Certains langages propriétaires sont aujourd'hui indépendants des fabricants, tels le Multi-Platform Language for Calculators. Ce langage de programmation interprété pour calculatrices fonctionne sur les calculatrices de type Casio Graph 100 et Texas Instruments TI-83 et TI-86. Son principal intérêt est la possibilité qu'il offre de faire fonctionner un même programme sur des calculatrices différentes.

#### Langage BASIC

Le BASIC est un langage de programmation simple d'accès et réputé facile à apprendre. Pour cette raison, il équipe depuis longtemps les PC de bureau ainsi que les ordinateurs de poche, mais également les calculatrices programmables.
Le BASIC a obtenu un franc succès en tant que langage de base pour calculatrice programmable dans ses différentes variantes. Il est implémenté sous une forme propriétaire qui combine parfois les avantages de la programmation par mots clés affectés à une touche (keystroke programming) dans les calculatrices programmables Casio et Texas Instrument (sous le nom de TI-Basic)$^,$$^,$. HP utilise aujourd'hui, notamment sur la HP Prime, le langage HP PPL également appelé HP BASIC.

#### Langage machine

De nombreuses calculatrices programmables offraient à leurs utilisateurs la possibilité de programmer en langage machine via un assembleur. C'est le cas par exemple de la HP-48 et de ses descendantes jusqu'à la HP-50G. Cette possibilité est aujourd’hui rarement utilisée au profit de l'usage de langages évolués plus simples à manipuler mais des calculatrices programmables récentes telle la Casio Graph 100+ donnent toujours la possibilité de programmer en assembleur.

#### Langage Python

L'année 2017 voit l'arrivée de la première calculatrice officiellement programmable en Python, la calculatrice graphique NumWorks. Les autres constructeurs Casio, puis HP et enfin TI ont eux aussi publié des mises à jour logicielles ou lancé des modèles permettant d'utiliser ce langage qui a l'avantage d'être ouvert et standardisé.

## Utilisation actuelle des calculatrices

A l'heure actuelle,les calculatrices sont essentiellement utilisées dans le domaine scolaire.
Dans le milieu professionnel, les calculatrices les plus souvent rencontrées sont les modèles scientifiques et les calculatrices financières. Les modèles programmables ne sont pratiquement pas utilisés, remplacés par les ordinateurs portables.