Page 1 of 3

Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 22 Mar 2023, 21:13
by Bobb
(Note : les informations données dans ce post ne sont plus à jour, veuillez vous référer au site officiel de Neon ou à la suite de ce topic)

Bonsoir à tous,

Aujourd'hui je vais enfin vous présenter le projet sur lequel je travaille depuis plus d'un an, et qui n'est pas loin d'aboutir.
Je précise avant toute chose que Neon n'est pas un langage `professionnel`, donc pas très optimisé, et encore un peu buggé.

Voici mon constat sur la TI-83 Premium CE Edition Python :
Pour les langages on-calc :
-> ICE : trop compliqué pour faire des trucs simples et rapidement + pas assez souple
-> TI-Basic : trop lent et limité en terme de fonctionnalités autres que mathématiques
-> Python : pas assez de mémoire et trop lent en terme de graphiques

Donc : pour ceux qui veulent programmer sur calculatrice, ils commencent par le python ou le TI-Basic, puis se rendent compte des limites, donc vont devoir passer du temps à apprendre ICE, un langage compilé de bas niveau, ou bien abandonnent.

Conclusion : Il faut nouveau langage interprété on-calc. Mais quelque chose de mieux que ce qui a déjà été proposé jusqu'alors, C'est-à-dire une solution :
-> facile à apprendre
-> facile à utiliser (si possible proche du python pour plus de facilité à utiliser et à apprendre)
-> relativement rapide ou présence d'un grand nombre de fonctions built-in pour avoir un code léger et rapide
-> souple, léger, ne limitant pas les fonctionnalités, et utilisant peu de mémoire


C'est pourquoi j'ai l'honneur de vous présenter Neon.

Neon est un langage interprété impératif de haut niveau, implémenté en C, donc l'interpréteur tient en moins de 40 ko.
Reprenant en partie des concepts de python, Neon est extrêmement facile à apprendre pour quelqu'un qui sait déjà programmer un peu.

Neon peut être qualifié de `langage moderne`, par opposition à ICE, au TI-Basic. Vous pouvez utiliser autant de variables que vous voulez, créer des listes de tout ce que vous voulez, bref, Neon est infiniment plus souple que Ti-Basic.

Aucun test de performance pour comparer n'a cependant été mené, pour la simple et bonne raison que Neon n'a jamais été compilé pour la calculatrice, bien qu'il puisse être prêt. J'attends encore, le temps d'ajouter quelques fonctionnalités avant.



Vous pouvez néanmoins bien sûr le télécharger pour votre PC sur TI-Planet, ou bien consulter le code source et exécuter Neon en ligne sur Replit.

Vous pouvez également dès maintenant vous rendre sur le site officiel du langage Neon : https://langage-neon.org
Vous y trouverez pas mal d'informations, dont un tuto pour apprendre Neon (bien qu'il ne soit pas terminé).

Rejoignez-nous également sur notre serveur Discord pour discuter, poser des questions, etc.



Maintenant, un petit bilan rapide sur les fonctionnalités de Neon (et les fonctionnalités à venir) :
- variables de chaines de caractères, nombres, booléens, None
- listes de tous types confondus
- boucles (for et while)
- blocs conditionnels
A venir
- mots clés break, continue, import, return
- création de fonctions !


Ainsi, visitez les liens que j'ai donnés, le tutoriel sur langage-neon.org va petit à petit se remplir. Je joins également une mini-documentation rapide pour apprendre rapidement Neon.


Voilà, j'espère que je reviendrais bientôt vers vous pour vous présenter des nouveautés. En attendant, vous pouvez me dire ce que vous en pensez ou bien me poser des questions.

Bonne soirée,
Bobb

Re: Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 23 Mar 2023, 05:13
by hr59
Bravo , Felicitations !
Grace a toi , nous allons assister a la naissance d'un nouveau language de programmation , crée par un des emembres de la communauté TI-Planet , ce qui te permettra à toi et Ti-Planet du prestige!
Fe plus , j'ai essayé de lancer un programme que j'ai crée avec et j'ai constaté que l'execution du programme était +rapide que sur python ou ti-basic
Continue comme ça !

Re: Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 23 Mar 2023, 07:19
by Bobb
Je te remercie pour ton enthousiasme, néanmoins, je tiens à préciser que cette différence de rapidité vient du fait que l'ordinateur sur lequel tu as exécuté le programme est plus rapide que la calculatrice.
Il me reste encore pas mal d'optimisations à faire.

Re: Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 10 Jun 2023, 21:17
by GRIFFON
G regarder moi aussi mais je n'ais pas vu de technique pour afficher des sprites ou ne serais ce que des formes.
J'ai mal vu ou c'est un langage plus pour les calculs que pour les graphismes ?

Re: Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 12 Jun 2023, 06:23
by Bobb
Neon est bel et bien destiné à un affichage graphique et à la création de jeux.
Cependant il est encore dans une phase expérimentale de développement, où je me concentre sur ses fonctionnalités internes.
Autrement dit, j'ai encore à implémenter les blocs break/continue et la création de fonctions utilisateur avant de simplement ajouter des fonctions built-in.
Ensuite, je pourrais effectivement ajouter toutes sortes de fonctions, graphismes, etc.

Re: Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 26 Jun 2023, 19:42
by GRIFFON
Ok génial
J'attends avec impatience la suite de Néon

Re: Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 22 Aug 2023, 21:12
by Bobb
Bonsoir à tous,
J'ai enfin commencé à travailler sur la version calculatrice de Neon.
Mais un problème se pose.
Alors que tout le code compile sans aucun Warning avec gcc, clang, sur Windows et Linux et que tout fonctionne à merveille, même sous l'oeil attentif de Valgrind, rien ne va plus quand j'exécute Neon sur la calculatrice.
Je dois faire face à des erreurs incompréhensibles.
J'explique : j'ai un tableau rempli de pointeurs de structures, que j'appelle ADRESSES. Dans ces structures, il y a un champ de type char que je mets à 'f' (la valeur importe peu).
Ensuite, j'effectue la copie d'un tableau de char* appelé NOMS.
C'est là que tout se corse. Quand je relis la valeur du champ de type char du premier élément du tableau ADRESSES, elle a changé toute seule, et est devenue la dernière lettre du septième élément du tableau de chaînes de caractères.

La ligne causant l'erreur est exactement :
list->tab[list->len] = chaine;

Où chaine est "exit" et list->tab est de type char**. Je précise que le tableau est au moins de taille list->len + 1. Cette ligne est au moment où l'on met le septième élément du tableau de char* dans le nouveau tableau.

Tout se passe comme si en même temps d'exécuter la ligne comme il faut, le programme exécutait quelque chose du genre de : ADRESSES->tab[0]->type = chaine[3];

Cette erreur survient systématiquement, et je n'arrive pas à comprendre le lien entre le septième élément du tableau de char* et la première structure du tableau ADRESSES.

Je pense que c'est une erreur due au fait que le Zilog ez80 est un processeur d'un type différent des processeurs sur lesquels je compile habituellement, et qui ne sont pas sensibles à une certaine chose que je fais peut être mal.

En tous cas, je compte sur vous pour m'aider.

Re: Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 22 Aug 2023, 22:02
by Adriweb
Euh alors oui ok on veut bien t'aider, mais il va nous falloir le code source :P
C'est dispo sur GitHub ou autre ?

Re: Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 23 Aug 2023, 10:14
by Bobb
Vous trouverez le code source ici : https://replit.com/@raphaelbob/Langage- ... eon#main.c, mais ça ne sera pas très utile car le programme fonctionne très bien ici.
Je vous donnerai accès au Project Builder dès que j'aurai enlevé les modifications d'hier qui n'ont servi à rien et qui ajoutent plein de fuites mémoire au programme.

Re: Nouveau langage interprété on-calc TI-83 PCE : Neon

Unread postPosted: 23 Aug 2023, 11:59
by SlyVTT
Je dois être bête, mais je n'accède à rien avec ton lien, sauf à une vidéo, pas de code source.

C'est peut être bête ce que je vais écrire, n'ayant pas de code pour vérifier si ça tombe juste ou pas, mais deux choses m'interpellent quand je vois une ligne telle que
Code: Select all
list->tab[list->len] = chaine;


1- quand on a un tableau avec N éléments, les indices valident pour accéder aux éléments du tableau vont de 0 à N-1. Tu comprendras donc que ton list->len me semble plus que douteux.

2- en C, il est interdit d'assigner une chaîne de caractères via l'opérateur égal (=). J'ai une suspicion quand je vois la fin de la ligne '= chaine;'. Peut-être travailles tu avec des pointeurs alors là ça peut fonctionner, sinon, si ce sont vraiment des chaînes, il faut faire une affectation via la fonction strcpy() ou strdup() si tu veux avoir une allocation automatique de la mémoire pour la chaîne de destination (penser à libérer la mémoire avec free() dans ce cas sinon fuite de mémoire).

Bref, Adriweb a raison, sans code source, on saura pas trop t'aider hormis possiblement répondre via des hypothèses (qui peuvent être complètement à côté de la plaque).