Page 6 sur 10

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 24 Juil 2020, 10:18
de M4x1m3
Monsieur parisse,

J'aime beaucoup KhiCAS, j'aime beaucoup ce que vous faites, mais je trouve plusieurs choses qui ne vont pas dans le code de KhiCAS et dans votre manière de faire :
  • Pourquoi n'utilisez-vous pas de système de versionning (git, svn, cvs, ...) pour gérer votre code ? La distribution en archive marche, mais ne permet aucunement de garder des traces de l'historique des modifications et empêche l'envoi simple de patches. Je pense que l'utilisation de git permettrait d'amener pas mal de contributeurs à KhiCAS (dont moi).
  • Dans l'état actuel de choses, le code source ne compile pas sur N0110, je suis obligé, à chaque mise à jour, de patcher votre code pour pouvoir le link, notamment à cause de fonctions qui sont définis sous certaines conditions de préprocesseur mais qui sont utilisé tout le temps (cf. patch joint).
  • L'indentation et la qualité du code sont plus que bancales. Certains fichiers font plus de 10 000 lignes (kdisplay.cc par exemple). Il est impossible pour quelqu'un de sensé de mettre les mains dans le code sans chopper une migraine.
  • Le système de compilation de GIAC relève de la magie noire. En cherchant pendant deux heures je n'ai pas réussi à comprendre comment il fonctionne.

Avec toutes ces observations, j'arrive à en penser que c'est irrattrapable. Il faudrait un rewrite complet pour avoir quelque chose de propre. Vous pouvez au moins essayer de séparer les sources en plusieurs fichiers et d'indenter correctement votre code.

Cordialement.

Show/Hide spoilerAfficher/Masquer le spoiler
Patch nécessaire à la compilation de giac-1.6.0 (23/07/2020 - sha256: a8455930c26b36f367eac279233ee3839881e844beb53513f283cf37d6bb4806)
Code: Tout sélectionner
diff -ur giac-1.6.0/src/help.cc giac-1.6.0-new/src/help.cc
--- giac-1.6.0/src/help.cc   2020-07-17 20:20:55.000000000 +0200
+++ giac-1.6.0-new/src/help.cc   2020-07-23 22:27:00.578690605 +0200
@@ -296,18 +296,22 @@
     }
     const char * items[1+static_help_size];
     kk=0;
+#ifdef MICROPY_LIB
     if (xcas_python_eval && !python_heap){
       python_init(python_stack_size,python_heap_size);
     }
+#endif
     for (;pos<static_help_size;++kk,++pos){
       const static_help_t & sh=static_help[pos];
       const char * ptr=sh.cmd_name;
+#ifdef MICROPY_LIB
       if (xcas_python_eval){
   if (!is_python_builtin(ptr) && mp_token(ptr)==0){
     --kk;
     continue;
   }
       }
+#endif
       if (strcmp(ptr,s.c_str())==0){
   howto=sh.cmd_howto[lang-1];
   if (!howto)
diff -ur giac-1.6.0/src/kdisplay.cc giac-1.6.0-new/src/kdisplay.cc
--- giac-1.6.0/src/kdisplay.cc   2020-07-23 09:47:21.000000000 +0200
+++ giac-1.6.0-new/src/kdisplay.cc   2020-07-23 22:27:25.324670451 +0200
@@ -9389,7 +9389,9 @@
#endif
         ){
       python_heap_size=d*1024;
+#ifdef MICROPY_LIB
       python_free();
+#endif
     }
     continue;
   }
@@ -9410,7 +9412,9 @@
#endif
         ){
       python_stack_size=d*1024;
+#ifdef MICROPY_LIB
       python_free();
+#endif
     }
     continue;
   }
@@ -9463,8 +9467,10 @@
       python_compat(p,contextptr);
       if (edptr)
   edptr->python=p;
+#ifdef MICROPY_LIB
       if (do_confirm((lang==1)?"Effacer le tas MicroPython?":"Clear MicroPython heap?"))
   python_free();
+#endif
       *logptr(contextptr) << "Xcas interpreter\n";
       Console_FMenu_Init(contextptr);
       return 0;
@@ -12027,11 +12033,13 @@
   
   int console_main(GIAC_CONTEXT){
#ifdef NUMWORKS
+#ifdef MICROPY_LIB
     mp_stack_ctrl_init();
     //volatile int stackTop;
     //mp_stack_set_top((void *)(&stackTop));
     //mp_stack_set_limit(24*1024);
#endif
+#endif
     python_heap=0;
     sheetptr=0;
     shutdown=do_shutdown;

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 25 Juil 2020, 05:00
de parisse
Voila j'ai rajoute les ifdef, il faut dire que je compile systematiquement avec -DMICROPY_LIB donc je ne voyais pas d'erreur. Et vous devriez compiler aussi avec cette option, sinon vous n'aurez pas l'interpreteur MicroPython. Cela necessite d'installer aussi micropython. Le plus simple est de partir de l'archive https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/delta14_device.tar.bz2, j'utilise le script mkarm pour compiler depuis le repertoire ext/giac-1.6.0/src (a adapter en fonction des repertoires sur une autre machine). Je n'ai pas encore eu le temps de rediger tout ca et le mettre dans la doc de KhiCAS pour Numworks (il faut aussi que j'explique comment installer le simulateur FLTK avec une version plus ancienne d'Epsilon pour pouvoir debugger efficacement sur le simulateur).

Sur le reste, je pense que c'est surtout une question d'habitudes, ce qui vous irrite m'est familier et la reciproque est vraie. J'utilise emacs et la ligne de commande Unix comme IDE de programmation, je suis tres efficace avec emacs (en particulier pour debugguer avec le mode gdb d'emacs) et je ne vois donc pas l'interet de changer d'IDE (et apres 30 ans avec emacs ce serait extremement difficile de changer d'habitudes). Dans emacs, c'est beaucoup plus facile de travailler a l'interieur d'un seul gros fichier avec des raccourcis clavier pour chercher plutot que de devoir ouvrir des dizaines de fichiers surtout quand en plus ils sont dans des repertoires differents (le source d'Epsilon est un vrai cauchemar a manipuler dans emacs). La seule limitation est que si le fichier devient trop gros (au-dela de 15 000 lignes environ) emacs devient un peu lent. L'indentation que j'utilise n'a rien de particulier, c'est celle d'emacs par defaut (avec 2 espaces), et j'utilise tres frequemment le raccourci tab pour verifier l'indentation (ou esc-x indent-region).

En ce qui concerne les versions, vous pouvez suivre l'historique des modifications du source de giac sur le svn de geogebra (dont giac est le moteur de calcul formel), qui est mis a jour regulierement ici https://dev.geogebra.org/trac/browser/trunk/geogebra/giac/src/giac. Je trouve git beaucoup moins naturel que svn avec 2 manips a faire au lieu d'une pour envoyer des modifs, et comme avec HP je travaille avec svn, je ne vais pas changer de systeme au risque de faire des erreurs. Mais j'accepte bien sur les contributions independamment des habitudes des contributeurs, d'ailleurs le principal contributeur a giac utilise git, il travaille sur ses propres fichiers sources et je fais un git pull de son repository quand il me fait signe.

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 31 Juil 2020, 10:42
de overlife
Bonjour,
Je ne parviens pas à obtenir les valeurs numériques des constantes physiques telles que "c" ou "NA" en tapant _c_ ou _NA_
J'ai également essayé avec evalf(_c_) ou evalf(_NA_)
Pouvez-vous m'aider ?
Merci,

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 31 Juil 2020, 11:43
de parisse
Vous pouvez utiliser la commande mksa ou une commande de conversion d'unites si vous connaissez une unite cible compatible. Par exemple
mksa(_c_)
_c_ => _(km/h)

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 31 Juil 2020, 12:42
de overlife
Je vous remercie beaucoup pour votre réponse rapide.

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 01 Aoû 2020, 21:21
de overlife
Bonjour,
J'ai effectué plusieurs test avec la commande format(), par exemple format(300000000,"e3"), et ça ne semble pas fonctionner sur une Numworks avec Khicas. J'obtiens une recopie de la valeur en entrée.
J'ai essayé avec Xcas/Windows et j'obtiens "3.000e+08".
La commande format est-elle implémentée dans Khicas ?
Merci,

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 02 Aoû 2020, 09:09
de parisse
J'ai un probleme avec la librairie C (newlib) sur la Numworks, sprintf ne fonctionne pas, j'ai donc bricole une fonction d'affichage minimaliste de flottanta qui ne prend pas en compte d'options.

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 02 Aoû 2020, 11:20
de overlife
Merci pour votre réponse, je vous souhaite un très bon dimanche !

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 06 Aoû 2020, 17:00
de critor
Bonjour @parisse . Je rencontre quelques difficultés avec la version de test de KhiCAS :
https://parisseb.github.io/nw-external-apps


Déjà, il est bien dommage que cela ne marche pas avec Omega (erreur "API mismatch").
Je ne dispose que d'une seule N0110, et c'est assez pénible de devoir donc sans arrêt passer d'un firmware à l'autre, jusqu'à plusieurs fois par test QCC...


Sinon, je rencontre une difficulté en mode MicroPython, avec les scripts utilisant le nouveau module graphic.
Comme sur TI-Nspire, l'affichage graphique une fois terminé est figé. Mais ici ça indique de taper
EXIT
pour poursuivre le script, alors qu'il n'y a aucune touche de ce nom au clavier.
J'ai tenté toutes les touches une par une, aucune ne marche.
La seule qui provoque une réaction c'est la touche d'annulation
, mais elle ne permet pas de poursuivre, elle interrompt le script.

Notamment dans mon cas, je peux donc obtenir la sortie graphique de mon script, mais pas le résultat qui va avec.
12735

Merci.

Re: Améliore ta NumWorks N0110 avec KhiCAS même en mode exam

Message non luPosté: 06 Aoû 2020, 20:03
de parisse
Concernant Omega+KhiCAS, le probleme est de leur cote, pas du mien, je ne comprends pas comment ca pourrait fonctionner alors que leur application external n'a pas assez de callbacks, comme indique ici: https://tiplanet.org/forum/viewtopic.php?f=102&t=24090&start=10#p254646. J'espere qu'ils arriveront a corriger ce probleme, en attendant je conseille d'utiliser KhiCAS+Delta https://parisseb.github.io/nw-external-apps qui apporte d'importantes fonctionnalites pour tout ce qui touche aux maths.

Concernant graphic, l'affichage d'une touche EXIT vient du portage sur Casio, il faut effectivement ajouter une touche pour quitter le graphique, differente de celle qui interrompt un script, si vous avez une suggestion je suis preneur.