\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage[francais]{babel}
\usepackage{times}
\usepackage{xspace}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage{ifpdf}
\usepackage{a4wide}
\ifpdf
 \usepackage[colorlinks,pdftex]{hyperref}
\else
 \usepackage[ps2pdf,breaklinks=true,colorlinks=true,linkcolor=red,citecolor=green]{hyperref}
\fi
\newenvironment{preuve}{{\bf Preuve~:}}{}

%\newcommand{\bs}{\symbol{92}}
\newtheorem{prop}{Proposition}[section]
\newtheorem{thm}[prop]{Th\'{e}or\`{e}me}
\newtheorem{lem}[prop]{Lemme}
\newtheorem{coro}[prop]{Corollaire}


%\theoremstyle{definition}

\newtheorem{defn}[prop]{D\'{e}finition}
\newtheorem{ex}[prop]{Exemple}
\newtheorem{exs}[prop]{Exemples}
\newtheorem{exe}[prop]{Exercice}
\newtheorem{rem}[prop]{Remarque}
\newtheorem{rems}[prop]{Remarques}
\newcommand{\trick}{\begin{flushleft}
\medskip
\end{flushleft}}
\makeindex

% \renewcommand{\cuttingunit}{subsection} (add HEVEA after % for hacha)
%\input{giacfr.tex}
\ifhevea
\(
\newcommand{\ds}{\displaystyle}
\)
\else
\newcommand{\ds}{\displaystyle}
\fi

%HEVEA\renewcommand{\footertext}{}
\begin{document}
\title{Casworks = Numworks + calcul formel multi-plateformes.}
\author{Bernard.Parisse@univ-grenoble-alpes.fr}
\date{Juin 2023}
%\begin{giacjshere}

\begin{center}
\includegraphics{casworks_qrcode.png}
\end{center}

\maketitle
\tableofcontents

\begin{abstract}
  Casworks est un prototype d'intégration du calcul formel
  de Xcas dans l'environnement Numworks
  (utilisant la dernière version redistribuable de leur logiciel système
  Epsilon), qui fonctionne 
  sur les calculatrices Casio Graph 90, TI Nspire et
  simulateur Web.
  Dans ce document,
  je présente l'utilisation de l'environnement Numworks
  sur ces plateforme, puis un petit
  historique de son développement. Je conclus sur
  les potentialités d'un tel développement.
\end{abstract}

\section{Introduction}
Début mai 2023, un développeur de pseudonyme
``Heath'' a annoncé sur le forum anglophone cemetech le portage
sur les Casio FXCG50 et Graph 90 d'Upsilon, ce qui permet d'utiliser
l'environnement Numworks (de 2021) sur une calculatrice Casio.
Ce portage fait suite \`a un 
\ahref{https://github.com/UpsilonNumworks/Upsilon/pull/131}{prototype de portage pour TI Nspire} par Kerry Shen en janvier 2023.

J'ai tout de suite été intéressé par les potentialités d'un tel portage,
et j'ai commencé par ajouter ce qui me semblait indispensable pour
l'utiliser pour travailler,
à savoir retrouver ses données lorsqu'on quitte
l'environnement Numworks sur la Casio puis
on revient dessus. Puis j'ai généralisé le portage pour les TI Nspire
(j'ignorais l'existence du travail de Kerry Shen). Et je me
suis dit qu'il serait intéressant d'y ajouter du calcul formel
de Xcas. Après quelques semaines de développement et de mise au
point, le lien Upsilon-Xcas fonctionne (j'avais fait
un travail analogue en aout-septembre 2019, voir en fin de document).
Je me suis alors posé
la question du portage sur les calculatrices Numworks
elles-mêmes. Il n'y a pas de problèmes particulier
sur l'émulateur Web.
Mais les calculatrices Numworks sont verrouillées (sauf
les plus anciennes qui n'ont pas été mises à jour) et
il n'y a pas assez de mémoire sur les N0110. Par contre 
si Numworks s'y intéressait, ce serait tout à fait
possible sur les modèles N0120 introduits en 2021/22. Mais pas sur
les N0115 introduites récemment, Numworks économise sur le
matériel pour optimiser les marges...

\section{Installation et utilisation (hors calcul formel)}
\subsection{Simulateur Web de la Numworks}
Il n'est pas nécessaire d'installer quoi que ce soit, il suffit d'ouvrir
votre navigateur sur l'adresse
\ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/numworks/simulator.html}{du simulateur}.
On voit alors\\
\includegraphics[width=12cm]{upsilon1}\\
On peut taper au clavier ou cliquer sur les touches de la calculatrice.

Avant de quitter la page, tapez sur la touche Home depuis le menu
principal d'Upsilon pour sauvegarder l'état de la calculatrice, ainsi
lorsque vous la rechargerez, vous pourrez continuer vos calculs
sans recommencer de zéro. 

Bon à savoir~:
\begin{itemize}
  \item il est possible d'importer un script Python du PC
dans la calculatrice virtuelle
en cliquant sur le bouton Parcourir.
\item Le bouton Miroir permet d'afficher
  ou non un écran miroir agrandi de la calculatrice.
  \item Le bouton Capture permet
de faire une capture d'écran de la calculatrice virtuelle.
\end{itemize}

\subsection{Casio Graph 90}
L'installation sur Casio est très simple, on récupère les fichiers
\ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/casio/upsilon.g3a}{upsilon.g3a}
et 
\ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/casio/xcas.ac2}{xcas.ac2} (optionnel, pour disposer du calcul formel. Si on teste
sur l'émulateur Casio, il faut utiliser \ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/casio/xcas.882}{xcas.882}. Attention
ce n'est pas compatible avec le simlateur Casio sur clef USB),
on branche la Casio Graph 90 sur l'ordinateur,
on tape F1 sur la calculatrice pour la faire reconnaitre
comme une clef USB par l'ordinateur, on copie les fichiers
\verb|upsilon.g3a| et \verb|xcas.ac2| sur la clef-calculatrice, et voilà.

Ensuite il suffit de se déplacer
dans le \verb|MENU| principal Casio jusqu'à voir Upsilon puis on le lance
avec \verb|EXE| et on se retrouve comme sur une Numworks de mi-2021,
avec dans l'application de Calculs quelques commandes de calcul formel de Xcas,
un module Python de calcul scientifique, un module d'arithmétique,
et un module permettant d'utiliser les commandes de Xcas depuis Python.
Pour plus d'informations sur l'environnement Numworks, on pourra
consulter le \ahref{https://www.numworks.com/fr/ressources/manuel/}{manuel}
de l'OS Epsilon de Numworks (attention, il y a quelques différences
suite aux évolutions récentes d'Epsilon) et le site
d'\ahref{https://getupsilon.web.app/}{Upsilon}.
Bon à savoir~: la touche \verb|OPTN| correspond à la touche Toolbox
de Numworks, la touche \verb|MENU| remplace la touche Home. \\
\includegraphics[width=10cm]{upsilon_menu}\\
Voici par exemple l'éditeur Python~:\\
\includegraphics[width=10cm]{upsilon_py}\\
Pour quitter l'environnement Numworks et revenir dans l'environnement Casio,
on tape sur la touche \verb|MENU| ou \verb|DEL| depuis le menu
principal d'Upsilon. Si cela ne fonctionne pas, tapez d'abord
sur la touche \verb|VARS|.

On peut échanger des données entre l'environnement Numworks de la Casio
et la Casio~: depuis le menu principal d'Upsilon, taper sur la touche
\verb|VARS|. Il apparait une double liste, d'un coté les scripts Python
d'Upsilon, de l'autre les scripts Python en mémoire de sauvegarde de la Casio.\\
\includegraphics[width=10cm]{upsilon_var}\\
On peut modifier la sélection ci-dessus en rouge avec les touches du
curseur, si on tape sur EXE ou sur la touche $\rightarrow$,
on copie le fichier sélectionné d'un
environnement à l'autre (pour un script Python recopié vers Upsilon,
l'appui sur EXE au lieu de $\rightarrow$ indique à Upsilon que
le script doit être automatiquement exécuté
quand on ouvre la console d'exécution).
Lorsqu'un répertoire est sélectionné
dans l'environnement Casio, EXE permet d'entrer dans ce répertoire
(\verb|parent_dir| permet de remonter dans l'arborescence
et l'appui sur la touche de division permet de remonter directement
au niveau racine).
L'appui sur la touche OPTN permet d'afficher la liste de tous
les fichiers/enregistrements au lieu de n'afficher que
les scripts Python (sur Casio, les fichiers trop gros
ne sont pas affichés). Si un fichier a l'extension \verb|nws|,
il s'agit d'une sauvegarde complète de l'environnement Numworks,
en tapant EXE lorsqu'il est sélectionné, on charge la sauvegarde
(qui efface l'état courant de la Numworks).

En tapant sur la touche $\rightarrow$ (au-dessus de la touche \verb|AC/ON|)
puis un numéro de sauvegarde de 1 à 9, on peut sauvegarder l'état
actuel de la Numworks. 
Une fois les échanges entre environnements effectués, on peut taper
sur EXIT pour quitter.


Un des avantages de l'utilisation de l'environnement Numworks dans la Casio,
c'est qu'il permet de sauvegarder des scripts dans la flash de la
calculatrice (plus de risque de les perdre en cas de reset),
scripts que l'on peut ensuite échanger en local avec un PC,
ce qui n'est pas possible avec l'OS de Numworks
(à ce jour, le constructeur propose uniquement la sauvegarde
sur ses propres serveurs, ce qui nécessite une connexion cable
PC-calculatrice et une connexion Internet, sans parler de la
dépendance au constructeur).

Notez qu'on peut accéder aux scripts Python de l'environnement Casio
avec la commande \verb|import|, sans avoir besoin de les recopier
dans l'environnement Numworks.

\subsection{TI Nspire}
Il faut posséder une calculatrice avec une version pas trop récente
du système d'exploitation (surtout ne faites pas de mise à jour sur le
site de TI) pour pouvoir y installer Ndless et
\ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/ti/upsilon.tns}{upsilon.tns}.
Pour disposer de l'interaction avec le calcul formel, il faut aussi installer
\ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/ti/xcasnws.tns}{xcasnws.tns}.

La touche Toolbox de la
Numworks correspond à la touche menu de la TI, la touche Home de la Numworks
correspond à la touche doc de la TI (doc est une abbréviation de documents,
pas de documentation).

\subsection{Compatibilité} \label{sec:compat}
Le logiciel tourne de manière identique sur les différentes plateformes,
il faut juste se souvenir des équivalents des touches Toolbox
et Home de la Numworks sur les Casio et TI Nspire.

On peut même effectuer une sauvegarde des données de l'environnement
(historique des calculs et scripts Python)
sur une plateforme et la réutiliser sur une autre plateforme.
Par exemple, vous préparez des données dans l'émulateur, vous sauvegardez
sous le nom \verb|nwstate.nws| en cliquant sur l'icone de
disquette. Vous pouvez ensuite transférer sur une calculatrice
Casio en branchant la calculatrice sur le PC. Depuis la Casio,
on lance Upsilon, puis touche VARS et OPTN, on sélectionne
le fichier \verb|nwstate.nws| et on tape EXE.

Pour transférer de/vers une TI Nspire, il faut enlever ou rajouter
l'extension \verb|.tns| au nom de fichier, par exemple
\verb|nwstate.nws.tns|.

Les données de l'application fonction/suite ne sont pas compatibles.
Pour transférer une définition de fonction, on peut la définir
dans l'historique de Calculs, en tapant par exemple\\
{\tt $\sin(x^2) \rightarrow f(x)$}\\
ce qui la créera automatiquement dans l'application Fonction.

\subsection{Comparaison entre les calculatrices}
Les TI Nspire CX et CX2 sont plus puissante que les Casio Graph 90 et
les Numworks, mais elles sont significativement plus chères (compter
120 à 140 euros pour les Nspire non
CAS et 140 à 160 euros pour les CAS à la rentrée), alors que Numworks
et Graph 90 sont dans la même zone de prix (avec les offres de rentrée
sous forme de cagnottes, c'est 70 euros pour une Casio Graph 90,
72 à 75 euros pour Numworks).
On va donc comparer les Casio Graph 90 et Numworks.

On dispose sur la Casio d'un espace de stockage de 16M,
qui peut servir pour les scripts Python (256 fois plus
de place que les 64K de stockage de l'environnement Numworks).
La capacité totale est de 32M de flash de la Casio,
16M sont réservés à l'OS et 16M aux données et programmes
utilisateur. En comparaison la Numworks n'a que 8M de flash et
l'OS Epsilon de Numworks n'offre aucune solution de stockage
de données utilisateur en flash.

La Graph 90 dispose aussi de 8M de mémoire vive (RAM) contre
256K sur les Numworks N0110 et N0115
(les N0120 sorties à la rentrée 2022
ont 564K de mémoire mais ne devraient pas succéder
aux N0110, vu l'arrivée sur le marché des N0115 à la rentrée
2023).
Sur les Casio, une partie de la mémoire sert au système,
et Upsilon en utilise une partie pour charger Xcas.
Python dispose de 192K de mémoire de travail dans Upsilon+Xcas
sur les Casio (et même 2.9M si on n'installe pas
la partie calcul formel), contre 64K sur une Numworks.

La résolution d'écran de la Graph 90 est
un peu supérieure à celle de la Numworks
(+15\%: 224x396 contre 240x320).

Le processeur de la Numworks est significativement plus rapide
sur la Numworks que sur la Casio. Ce qui entraine une consommation
électrique supérieure (970mW contre 70mW) et nécessite une alimentation
par batterie contre 4 piles AAA sur la Casio.
C'est plus simple à recharger sur la Numworks,
mais cela impacte la durée de vie de la calculatrice,
il n'est pas possible de remplacer la batterie sur une Numworks
(en tout cas pas sans ouvrir la calculatrice).

On bénéficie aussi sur la Casio de tout l'environnement Casio (dont
tableur, géométrie, application 3d, et tous les addins développés
par la communauté, dont la version complète de $\chi$CAS).
Mais attention, l'environnement Numworks n'est pas accessible en mode examen
sur la Casio.

\section{Interaction avec le calcul formel}
Les menus de l'application Calcul ont été modifiés pour tenir compte
de l'interaction avec le calcul formel de Xcas. On trouve un nouveau menu
Algèbre avec des commandes de développement, factorisation, simplification,
résolution d'équations (directement dans Calcul,
sans passer par l'application Résoudre)
le menu Calculs est un peu étoffé avec une commande pour calculer
une limite et une commande pour calculer un développement de Taylor.
Nouveau menu d'arithmétique avec PGCD, PPCM, test de primalité,
identité de Bézout, calcul de $a^n \pmod m$ par exponentiation
rapide.\\
\includegraphics[width=12cm]{upsilonalg}\\
\includegraphics[width=12cm]{upsilon2}

On peut définir des variables et des fonctions, qui seront dupliquées
dans l'environnement Numworks et Xcas, donc utilisables
dans l'application Fonction, par exemple~:\\
{\tt $x^2-3x+1 \rightarrow f(x)$}\\

Certaines commandes de Xcas ne sont pas dans les menus, mais
restent utilisables dans Calculs, il faut les taper en toutes lettres.
Mais l'utilisation dans Calculs est limitée par les garde-fous de
l'environnement Numworks, qui n'admet pas par exemple les signes
$>$, $<$ ou $=$, ne permet pas les fonctions utilisateurs non définies,
n'accepte pas de fonction utilisateur à plusieurs arguments, n'a pas
de type vecteur, etc. Au niveau du lycée toutefois, cela ne devrait
pas être trop gênant, sauf pour la commande limite qui mériterait
un aménagement spécifique (actuellement il faut passer
en argument une matrice ligne avec 3 arguments, par exemple $\sin(x)/x$,
$x$ et 0).

S'il est impossible d'utiliser une commande de Xcas dans Calculs, il
reste possible de le faire depuis une console Python, en tapant
\verb|from cas import *|, puis la commande \verb|xcas| avec
en argument une chaine de caractères à évaluer, par exemple
\verb|xcas("factor(x**4-1)")| ou \verb|xcas("desolve(y''+y=0)")|\\
\includegraphics[width=12cm]{upsilon3}\\
Il est toutefois plus judicieux dans ce cas
d'installer les versions de $\chi$CAS
pour Casio Graph 90 ou TI Nspire.

Dans l'application Python, vous pouvez utiliser le module d'arithmétique
qui contient des commandes identiques à celles du menu d'arithmétique
de l'application Calculs:
\verb|gcd, lcm, ifactor, isprime, nextprime, iegcd|
(PGCD, PPCM, factorisation,
test de primalité, prochain nombre premier, identité de Bézout,
on peut utiliser \verb|pow| pour l'exponentiation rapide)
ainsi que deux commandes utiles pour
faire de la crypto \verb|asc| et \verb|char| qui convertissent
une chaine de caractères en liste de codes ASCII et réciproquement.
Par exemple pour faire un RSA (avec des clefs de tailles relativement
petites)\\
\begin{verbatim}
from arit import *
# exponentiation rapide sur une liste
def powmod(l,e,n):
  L=l.copy()
  for j in range(len(L)):
    L[j]=pow(L[j],e,n)
  return L
# creation de la paire clef publique/privee
p=nextprime(10**4) # on peut utiliser de l'aleatoire
q=nextprime(10**5)
n=p*q
f=(p-1)*(q-1) # indicatrice d'Euler
e=257
res=iegcd(e,f) # doit renvoyer 1 comme PGCD (dernier element de res)
c=res[0]+f # clef secrete
# cryptage d'un message avec la clef publique (e,n)
s="Bonjour"
l=asc(s)
lcrypt=powmod(l,e,n)
# le destinataire decrypte le message avec sa clef secrete
powmod(lcrypt,c,n)
# dans un vrai systeme, il faut regrouper les caracteres
# par bloc, sinon on peut facilement decrypter sans connaitre c
# et il faut de l'aleatoire dans la creation des paires de clef
\end{verbatim}

\section{Le développement d'application pour calculatrices}
\subsection{Un peu d'histoire~: Numworks, Epsilon et Upsilon.}
Numworks est apparu sur le marché fin aout 2017 et a conquis en
quelques années un tiers environ du marché des calculatrices
graphiques en France. Une de leurs spécificités sur laquelle
Numworks a pas mal communiqué, c'est que le logiciel de leur
calculatrice était open-source, c'est très certainement un des
arguments clefs qui leur a permis de se faire connaitre au début.
Pour être précis, en 2017, la licence d'Epsilon était assez
restrictive, car elle ne permettait pas la redistribution. La communauté
s'en est plaint, et a été entendue en {\bf mai 2018}, la licence
est devenue plus souple, {\bf permettant les modifications et la
redistribution à des fins non commerciales}. La communauté
a alors pu développer des évolutions d'Epsilon, dont les plus connues
sont principalement Omega, et dans une moindre mesure Upsilon et Khi.
Ces trois firmwares alternatifs ont en commun de
pouvoir exécuter des applications tierces, dont mon système
de calcul formel $\chi$CAS (sur les modèles N0110
commercialisés à partir de l'été 2019), mais de manière isolée
(pas dans l'application Calculs).

Malheureusement, {\bf en 2020/2021}, Numworks a considéré que l'ouverture
des sources ayant permis ces projets
était contraire à ses intérêts économiques pour développer
son activité à l'étranger (Portugal, Pays-Bas, Etats-Unis), en raison
du risque de fraude au mode examen et des examens où le calcul formel
est interdit. % Foulant le pied à ``ses convictions'',
Numworks a pris un virage sécuritaire à 180 degrés, {\bf ils ont changé
la licence d'Epsilon qui n'offre plus aucune liberté de
modification/redistribution}, et surtout ils ont développé un logiciel
permettant de verrouiller les calculatrices (Numworks est le seul
à pouvoir effectuer des modifications et mises à jours de l'OS).
Ce verrouillage a été appliqué sans préavis à des dizaines de milliers
de calculatrices au cours des mises à jours conseillées par Numworks
depuis la rentrée 2021, Numworks n'a jamais averti les utilisateurs
qu'ils allaient perdre la possibilité d'utiliser les logiciels développés par
la communauté (calcul formel, tableur, graphes/géométrie 3d, ...)
ainsi que les fonctionnalités de calcul symbolique qu'ils avaient
eux-mêmes développées (ces fonctionnalités sont réactivées dans Upsilon).
Au printemps 2022, une faille dans le verrouillage
a permis à quelques utilisateurs de déverrouiller leurs calculatrices,
mais la faille a été bien vite corrigée, et depuis il n'existe
aucun moyen public de déverrouiller une Numworks (cela reste
possible en ouvrant la calculatrice sur les N0110, mais pas
sur les N0115 et N0120).

Ce virage sécuritaire a provoqué l'arrêt du développement d'Omega,
le ``fork'' le plus actif d'Epsilon. Upsilon est né de la volonté de poursuivre
malgré tout un firmware alternatif, avec des nouvelles fonctionnalités
dont l'intégration d'un module Python de calcul scientifique (ulab, qui
est aujourd'hui disponible sur la version la plus récente d'Epsilon)
et d'une liseuse de documents compatible avec \LaTeX. Khi
est un fork d'Omega que j'ai optimisé pour l'utilisation de $\chi$CAS.
Aucun de ces deux forks ne peut intégrer les améliorations d'Epsilon
versions 16 et au-delà.

En guise de compensation, Numworks a ajouté la possibilité d'installer
des programmes développés par des tiers, mais dans des conditions
tellement restrictives que pratiquement personne ne propose
de tels programmes. En effet, non seulement ces programmes sont
inaccessibles en mode examen (alors qu'avant le verrouillage on
pouvait utiliser un firmware tiers avec $\chi$CAS en mode examen),
mais ils sont inactivés au moindre crash ou reset, rendant
tout développement très fastidieux et toute utilisation aléatoire
(il n'y a pas non plus à ma connaissance d'environnement
de développement permettant la mise au point de manière efficace
contrairement à ce que j'utilise actuellement).
Les fonctionnalités
proposées par le kit de développement sont minimalistes
en comparaison de Casio ou TI.
Mais surtout pour installer facilement une application tierce
il faut passer par le site de Numworks, qui pourrait
donc décider de les censurer
à sa guise. Le minimum que la communauté attendait pour une calculatrice
présentée au départ comme open-source, c'est un environnement de développement
au niveau de celui proposé par Casio!


\subsection{Le développement natif chez les autres constructeurs}
Casio est à ce jour parmi les constructeurs celui qui est le plus ouvert
aux développements tiers sur le milieu de gamme graphique. La possibilité
d'ajouter des programmes (``addins'') au menu principal
est prévue dans l'OS et Casio
a publié dans les années 2010 un kit de développement logiciel
(fonctionnant sous Windows),
qui a lui-même donné naissance à plusieurs kits utilisant le compilateur
libre gcc. Le plus récent,
\ahref{https://gitea.planet-casio.com/Lephenixnoir/gint}{gint},
est activement maintenu par ``Lephenixnoir'', c'est avec ce kit
que Upsilon a été porté sur les Casio.

TI a toujours lutté le développement tiers sur les TI Nspire (il n'existe
pas pour le moment de version
\ahref{https://ndless.me/}{ndless}
compatible avec les versions à jour de l'OS
des Nspire CX et CX2) et a fermé
la porte de l'assembleur sur les TI83/84.
Il existe toutefois un contournement,
\ahref{https://yvantt.github.io/arTIfiCE/}{artifice},
sur lequel TI ferme les yeux pour le moment.

HP n'a publié aucune information permmettant de faire du développement
natif sur les HP Prime, ce qui était possible auparavant
sur les HP48, 49 et 50. Il existe un projet d'OS alternatif
\ahref{https://github.com/ExistOS-Team/ExistOS-For-HP39GII/blob/main/README_en.md}{ExistOS} pour les HP39gii, et rien n'empêche matériellement d'avoir
la même chose pour les HP Prime G1 (pour les modèles plus récents
G2, le boot est par contre sécurisé).

\section{Conclusion.}
Pouvoir utiliser l'environnement Numworks sur une calculatrice Casio
Graph 90 est une prouesse technique qui pourrait faciliter la vie
des enseignants et élèves, en permettant l'intégration aisée
d'un parc hétérogène de calculatrices Numworks/Graph 90
et même d'élèves non équipés de calculatrices utilisant le
simulateur web sur leur smartphone (cf. la section \ref{sec:compat}).
L'environnement Numworks est \`egalement porté sur
les calculatrices 
\ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/ti/upsilonbw.tns}{TI Nspire} compatibles avec ndless
(version optimisée pour les
\ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/ti/upsilon.tns}{CX et CX2}) mais cela ne concerne que les calculatrices d'occasion avec
un OS non mis à jour.
On pourrait imaginer avoir la même chose sur d'autres calculatrices
suffisamment puissantes, il existe d'ailleurs
un \ahref{https://github.com/boricj/epsilon/tree/hp_prime}{firmware prototype}
basé sur Epsilon pour HP Prime par Jean-Baptiste Boric.
Malheureusement, il y a un obstacle institutionnel
\`a la diffusion d'un environnemet unique pour plusieurs
calculatrices~: c'est le mode examen, lorsqu'il est activ\'e,
l'environnement Numworks n'est plus
accessible sur les Casio. 
Une raison de plus de supprimer ce mode
examen inégalitaire (cf. \ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/irem/exammode.html}{ce document}).

Cela favoriserait une saine concurrence entre constructeurs,
il n'est pas normal que Numworks continue à vendre des dizaines
de milliers de calculatrices bridées en mémoire
au niveau des années 1990 après avoir
longuement moqué leurs concurrents sur le thème des calculatrices
qui n'ont pas évolué depuis 30 ans.

Inversement, la possibilité de tester l'environnement Numworks sur
Casio et TI Nspire
pourrait permettre à Numworks de se faire connaitre à l'étranger
là où TI et Casio sont plus connus et inciter Casio et TI
à améliorer leurs propres applications.

Ce serait aussi l'assurance que l'interface populaire de l'environnement
Numworks survit aux aléas du marché. En effet, ce 14 juin 2023, Aldebaran
a annoncé son entrée majoritaire au capital de Numworks, le fondateur
de Numworks Romain Goyet quitte son poste de président. Il s'agit d'un
événement qui d'une part montre une certaine
fragilité économique de Numworks, et
pourrait d'autre part marquer une réorientation de Numworks vers
d'autres développements plus porteurs outre-Atlantique, entrée en
concurrence avec la calculatrice virtuelle Desmos, ou avec Geogebra
ou avec les plateformes de TI et Casio.

La question du futur des calculatrices mériterait d'ailleurs un débat,
les constructeurs
voudraient bien remplacer le paiement unique d'une calculatrice physique
par un abonnement annuel
pour la calculatrice virtuelle. Les prix annoncés par TI et Casio sont
de l'ordre de 25 euros par an, sur une scolarité lycée on arrive au prix
d'une calculatrice couleur, mais là il faut en plus fournir l'équipement et
à la fin du lycée on n'a plus rien! Par contre pour les éditeurs c'est tout
bénéfice, pas d'intermédiaires, et des frais matériels moins importants,
essentiellement les serveurs. Si on prend à coeur les questions
de sobriété énergétique, le maintien de l'utilisation des calculatrices
devrait pourtant s'imposer~: une calculatrice consomme très peu
d'énergie (en particulier les modèles monochromes sans rétro-éclairage),
beaucoup moins qu'une tablette ou un ordinateur, ne nécessite pas
d'accès réseau et de maintenance de serveur, 
est très robuste et pourra encore
fonctionner dans plusieurs décennies pour les modèles à piles (pour
les modèles à batteries, c'est beaucoup plus incertain,
il faut d'abord pouvoir les remplacer facilement, ce qui est le cas
chez tous les constructeurs à l'exception de Numworks, 
et il faut trouver un modèle compatible).

Une longue remarque pour finir~:
avec l'aide de développeurs comme J.B Boric et Damien Nicolet,
j'avais mis au point une interaction entre l'application
Calcul et Xcas dès aout-septembre 2019, dans 
un firmware prototype, et j'en avais informé Numworks en espérant
trouver un arrangement sur les licences de logiciel (elles sont
incompatibles) afin de pouvoir rendre ce firmware public. Mon objectif
était d'avoir (enfin) une calculatrice graphique formelle
de milieu de gamme sur le marché. Malheureusement, Numworks n'a
pas souhaité donner suite. Damien Nicolet a alors du 
mettre au point un système pour bien séparer les deux logiciels, ce sont
les applications externes pour Numworks~: $\chi$CAS est une
application externe (avec sa propre interface, développée pour le portage
de Xcas sur les Casio Graph 90), complètement séparée
de la partie Numworks, il n'y a pas d'interaction dans l'application
Calculs. Aujourd'hui, l'interaction avec l'application Calculs
est possible parce que les deux logiciels sont dans
deux binaires bien distincts qui se compilent séparément, chacun
avec leurs sources, et j'ai ajouté une exception
à la licence GPL3 de Xcas, pour permettre les appels par une application
sous licence Creative Common CC BY-NC-SA 4.0 pour une utilisation
personnelle non commerciale sur calculatrice ou émulateur de calculatrice.

Mais cela fait 4 ans de perdus, une interface facile à prendre en main
pour le calcul formel non disponible sur
les Numworks, non utilisable en mode examen sur les Casio.
Quel gâchis! Les seuls à se réjouir dans l'affaire, ce sont les
opposants inconditionnels au calcul formel, qui sont persuadés que
les difficultés en manipulation algébrique des élèves viennent des
calculatrices. Avec plus de 95\% des élèves qui ont des calculatrices
non formelles, le responsable est évidemment à chercher ailleurs et n'est pas
difficile à trouver, ce sont les diminutions des heures de maths dans
le secondaire, conséquences du manque de candidats aux concours,
conséquences du manque d'attractivité du métier de prof
(dégradation des conditions de salaires et de travail).

\section{Références}
Le code source du projet
\ahref{https://github.com/UpsilonNumworks/Upsilon}{Upsilon Numworks}.
et \ahref{https://www-fourier.univ-grenoble-alpes.fr/\home{parisse}/casio/upsilon_changes.tgz}{mes modifications}.

Les discussions sur le développement sont
sur \ahref{https://tiplanet.org/forum/viewtopic.php?f=51&t=26197}{ce fil sur tiplanet} et
\ahref{https://www.cemetech.net/forum/viewtopic.php?t=19114}{ce fil en anglais sur cemetech}

\section{Mise à jour mars 2024}
Fin 2023, Casio a annoncé une nouvelle calculatrice couleur, 
la Graph Math+, avec une refonte de l'interface utilisateur pour
la rendre plus facile à utiliser. Actuellement, il n'y a pas de
support pour les applications tierces (addins) sur ce nouveau modèle donc
impossible pour le moment d'y faire tourner KhiCAS. Casio prévoit une
importante mise à jour en 2025, avec les fonctionnalités qui manquent
aujourd'hui sur la Math+ par rapport à la Graph 90, espérons que ce
sera l'occasion d'ajouter le support des addins et donc de KhiCAS.
Si vous partagez ce souhait, je vous invite à contacter par
email Casio France, plus on sera nombreux à les contacter,
plus il y a de chances que cela se produise.

En partie pour cette raison, j'ai décidé d'investir du temps de 
développement pour rendre KhiCAS accessible aux possesseurs de
Numworks récentes (N0110/N0115/N0120 achetées ou mises
à jour après la rentrée 2021). Pour plus d'informations,
cf. la 
\ahref{https://xcas.univ-grenoble-alpes.fr/nw/nws.html}{page d'installation}
de KhiCAS pour Numworks.


\end{document}
% aufildesmaths@apmep.fr 
