Page 1 of 2

KhiCAS édition intégrale pour Graph 90+E avec getkey Python

Unread postPosted: 28 Nov 2022, 09:35
by critor
Conçu par Bernard Parisse, enseignant-chercheur à l'Université de Grenoble, KhiCAS est la déclinaison sur calculatrices de son logiciel de Mathématiques intégré Xcas.

KhiCAS est disponible dans diverses éditions couvrant un large éventail de modèles de calculatrices graphiques :

KhiCAS te donne donc accès à une interface unifiée ainsi qu'à des fonctionnalités haut de gamme peu importe la marque ou le modèle de ta calculatrice, parmi lesquelles nous pouvons citer entre bien d'autres choses GIAC, le moteur de calcul formel de Xcas ! :bj:
12024162061620716208


Mais KhiCAS sur calculatrices c'est bien plus que cela. C'est un véritable logiciel de Mathématiques intégré offrant bien d'autres choses :
  • interrogeable et même programmable dans différents langages :
    • langage historique de Xcas
    • langage historique de Xcas avec une compatibilité syntaxique Python
    • langage Python 3.4 avec l'interpréteur Micropython 1.12.0
    • langage Javascript avec l'interpréteur QuickJS
  • niveau programmation, gestion aussi bien du tracé par pixel que du tracés par déplacement (à la tortue)
  • en Python une formidable collection de bibliothèques :
    • bibliothèque de tracé de diagrammes matplotlib
    • bibliothèque de tracé par déplacements turtle
    • bibliothèque de tracé par pixel graphic
    • pour compatibilité, bibliothèques de tracé par pixel des différents modèles et constructeurs (casioplot, kandinsky, nsp)
    • bibliothèque cas permettant d'interroger le moteur GIAC depuis l'environnement Micropython et d'utiliser toutes ses fonctions
    • ...
  • graphes 2D, 3D (ℝ×ℝ×ℝ) et même 4D (ℂ×ℂ)
  • bibliothèque de constantes physiques avec unités
  • convertisseur d'unités
  • applications intégrées :
    • tableur / feuille de calcul
    • tableau périodique des éléments
    • calcul financier
    • géométrie dynamique 2D et même 3D
    • ...


    De par son nombre phénoménal de capacités, sa compatibilité avec un large nombre de modèles ainsi que sa compatibilité avec le mode examen de certains modèles, KhiCAS compte clairement parmi les plus grands ajouts mathématiques ayant jamais existé en à ce jour 37 ans de calculatrices graphiques ! :bj:

Problème toutefois. Dans ses éditions pour calculatrices graphiques Casio, KhiCAS était loin d'offrir l'ensemble de ces fonctionnalités.

Par rapport à tout ce que nous venons de décrire, KhiCAS se résumait en gros au moteur de calcul formel GIAC interrogeable et programmable dans le seul langage historique Xcas, éventuellement avec la couche de compatibilité Python, ce qui certes était déjà pas mal du tout.

Pas de véritable interpréteur Python, pas de graphes en 3D ou plus, pas de géométrie dynamique, pas d'outils relatifs à la Physique-Chimie (constantes, unités, tableau périodique), ...

Le problème venait de la taille de KhiCAS, l'ensemble des fonctionnalités nécessitant dans les 3,5 Mo.

Ce n'était pas tant un problème d'espace disponible en mémoire de stockage (Flash) ou mémoire de travail (RAM), mais avant tout une limitation technique : l'ensemble des modèles Casio ciblés refusent de charger le fichier .g3a d'une application si celui-ci dépasse les 2 Mio.

Pour respecter cette limitation de taille, Bernard était donc obligé de ne pas inclure toutes les fonctionnalités dans les éditions Casio de KhiCAS.

Et c'est là que Bernard et Lephe ont eu l'idée de ruser et couper l'application KhiCAS en 2 fichiers :
  • un fichier .g3a de moins de 2Mo et donc lançable
  • et un fichier complémentaire contenant le reste du code exécutable que l'application lancée doît aller chercher
Si l'idée peut paraître enfantine au profane, techniquement elle ne l'est pas du tout. Déjà, les compilateurs ne sont pas prévus pour scinder du code exécutable en différents fichiers. De plus, découper un fichier de sorte à ce qu'il reste exécutable, ce n'est pas comme découper des données. Il faut :
  • tous les éléments de code essentiels au fonctionnement dans le fichier .g3a lançable
  • que les éléments de code additionnels issus du fichier complémentaire soient chargées à des adresses mémoire bien précises calculées par le compilateur, à défaut de quoi ils ne seront pas exécutables

Un problème hautement technique sur lequel Bernard a reçu l'aide hautement précieuse et très active de LePhe.

Cette technique n'est pas applicable en l'état à tous les modèles.

Certes la mémoire de stockage n'est pas un problème pour nos 3,5 Mo. Nous bénéficions d'une capacité de :
  • 3 Mo sur Graph 35+E II et fx-9750/9860GIII
  • 4,5 Mo sur fx-CG20/50AU
  • 16 Mo sur Graph 90+E et fx-CG10/20/50

Par contre, il nous faut au minimum le même espace disponible en RAM. Pour la capacité (et non l'espace libre), nous avons :
  • 512 Kio sur Graph 35+E II et fx-9750/9860GIII
  • 2 Mio sur fx-CG10/20
  • 8 Mio sur Graph 90+E et fx-CG50
Seuls les Graph 90+E et fx-CG50 peuvent donc à ce jour être ciblées par cette méthode.

16209Et nous y sommes cette année, depuis cette rentrée 2022 KhiCAS est maintenant disponible dans une édition intégrale pour les derniers modèles couleur Casio Graph 90+E et fx-CG50 ! :bj:

L'installation nécessite la copie de 2 fichiers directement dans le dossier racine de l'espace de stockage du disque USB :
  • khicas90.g3a (version française) ou khicas50.g3a (version anglaise)
  • khicas90.ac2 (version française) ou khicas50.ac2 (version anglaise) sans aucun renommage


Justement rappelons par rapport au Python qu'outre la bibliothèque casioplot pour compatibilité avec les scripts Python conçus pour les calculatrices graphiques Casio, l'interpréteur Micropython de KhiCAS intègre également une bibliothèque cas permettant d'appeler le moteur GIAC ainsi que toutes ses fonctions.

Et justement GIAC inclut une fonction get_key() qui manquait cruellement à l'application Python officielle de Casio. Tu peux maintenant aller beaucoup plus loin dans tes projets Python pour Casio Graph 90+E avec des interfaces enfin interactives ! :D

Téléchargements :

Re: KhiCAS édition intégrale pour Graph 90+E avec getkey Pyt

Unread postPosted: 28 Nov 2022, 10:07
by Adriweb
Bon travail :)

J'en profite pour demander de rajouter une marge de 1-2px sur les bords droits-gauche, parce que c'est assez illisible :( Pleasssseeee


Re: KhiCAS édition intégrale pour Graph 90+E avec getkey Pyt

Unread postPosted: 28 Nov 2022, 12:15
by parisse
Sur la version Nspire?
Sinon, merci à critor pour cet article qui fait plaisir à lire!

Re: KhiCAS édition intégrale pour Graph 90+E avec getkey Pyt

Unread postPosted: 28 Nov 2022, 12:16
by Adriweb
Oui, du moins c'est là que j'ai KhiCAS, personellement.

Re: KhiCAS édition intégrale pour Graph 90+E avec getkey Pyt

Unread postPosted: 28 Nov 2022, 13:16
by critor
parisse wrote:Sinon, merci à critor pour cet article qui fait plaisir à lire!

Mais de rien, j'aurais dû le faire plus tôt mais j'ai manqué de temps.
Et merci surtout à vous pour tout le travail colossal sur ce projet.

Re: KhiCAS édition intégrale pour Graph 90+E avec getkey Pyt

Unread postPosted: 28 Nov 2022, 13:38
by parisse
En complément, je signale pour ceux (comme ptijoz) qui par exemple recherchent un getkey pour MicroPython qu'il existe des versions beta de mon implémentation de MicroPython pour 35eii et 90+e:
https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/micropy.g1a
https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/micropy.g3a
L'UI est très proche de KhiCAS, avec en particulier un choix de 2 fontes de caractères pour l'édition de scripts, la mise en valeur des mots-clefs (sur la 35eii par soulignement), le parenthese match. La RAM disponible pour le tas MicroPython est assez conséquente sur la 90: 2.5Mo.
Bien sur pas de module CAS pour ces implémentations. Mais les autres modules devraient fonctionner, parfois de manière moins efficace.

Re: KhiCAS édition intégrale pour Graph 90+E avec getkey Pyt

Unread postPosted: 28 Nov 2022, 14:20
by ptijoz
parisse wrote:En complément, je signale pour ceux (comme ptijoz) qui par exemple recherchent un getkey pour MicroPython qu'il existe des versions beta de mon implémentation de MicroPython pour 35eii et 90+e:
https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/micropy.g1a
https://www-fourier.univ-grenoble-alpes.fr/~parisse/casio/micropy.g3a
L'UI est très proche de KhiCAS, avec en particulier un choix de 2 fontes de caractères pour l'édition de scripts, la mise en valeur des mots-clefs (sur la 35eii par soulignement), le parenthese match. La RAM disponible pour le tas MicroPython est assez conséquente sur la 90: 2.5Mo.
Bien sur pas de module CAS pour ces implémentations. Mais les autres modules devraient fonctionner, parfois de manière moins efficace.


Bonjour M. Parisse

Je viens d'installer votre version de micro python sur ma graph35+EII (merci de m'avoir cité)
Image
je n'ai pas approfondi le fonctionnement, juste exécuté un petit script en turtle que j'avais fait et c'est impressionnant en termes de vitesse.
Je ferai d'autres essais ultérieurement, notamment avec getkey !

En tout cas, cela va permettre de programmer avec de grandes possibilités, alors je vous dis un Grand Merci !

Re: KhiCAS édition intégrale pour Graph 90+E avec getkey Pyt

Unread postPosted: 28 Nov 2022, 15:31
by parisse
Le turtle est un module natif (contrairement à celui de Casio) donc forcément plus rapide. Il y a une limitation en nombre de mouvements total depuis le dernier reset, ça doit être de l'ordre de 600 mouvements par défaut sur la 35eii (on peut sans doute faire un peu plus en diminuant le heap Python qui est à 96K par défaut). La raison est que la liste des mouvements est stockée, et chaque mouvement occupe un peu moins de 50 octets. C'est une grosse différence avec les autres implémentations turtle. L'intérêt principal c'est qu'on peut tester dans le shell un mouvement tortue à la suite des précédents, comme si on enchainait plusieurs calculs.

Re: KhiCAS édition intégrale pour Graph 90+E avec getkey Pyt

Unread postPosted: 12 May 2023, 20:48
by parisse
Petite mise à jour, suite à une suggestion de Heath, les graphes 3d sont maintenant plus fluides en utilisant des floats au lieu de double (gain d'un facteur 1.7 environ, on est maintenant assez proche de 1 image par seconde pour plot(x^2-y^2)). J'espère qu'il n'y aura pas d'effets de bord suite à la précision plus faible.

Re: KhiCAS édition intégrale pour Graph 90+E avec getkey Pyt

Unread postPosted: 04 Jul 2023, 09:26
by ptijoz
Bonjour

petit souci avec la maj de ma Casior 35+E II en 03.70
Image

est-ce bloquant ?

Merci