Small Basic

Signaler
Messages postés
6
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
18 avril 2021
-
Messages postés
6
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
18 avril 2021
-
Bonjour,
J'ai rédigé un programme en small basic, il est assez long (7500 lignes), le débogueur n'indique rien, et quand je lance l'exécution, j'ai la fenêtre qui s'affiche et me dit que le programme est en cours d'exécution. Mais cela n'aboutit pas. La fenêtre disparaît.

Si je retranche des parties du programme à divers endroits, ça fonctionne.

Est-ce que vous pensez que le débogueur fonctionne mal, que ça vient de mon ordi, ou que le small basic a des restrictions ?

Merci de vos réponses.

10 réponses

Messages postés
15915
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
9 mai 2021
700
Bonjour

Je ne connais pas cet IDE, et les quelques recherches que je viens de faire ne me permettent pas de me faire une idée assez précise de son utilisation.

Si j'en crois cet article ses outils de débbogage sont quasi inexistants.
https://social.technet.microsoft.com/wiki/contents/articles/16379.small-basic-curriculum-lesson-3-6-debugging-aids.aspx

Je te propose de mettre des TextWindow.WriteLine à différentes étapes ton logiciel (5 à 10 fois pour commencer).

Ainsi tu vas voir quelle est la dernière étape affichée.

Le problème se situe alors entre celle-ci et la suivante.

Il faut donc faire un découpage plus fin entre ces 2 étapes , et ainsi de suite jusqu'à trouver la ligne ou les quelques lignes où ça plante.

Ensuite, il faut déterminer pourquoi ça plante.

Là encore, à priori la seule solution est de se servir de TextWindow.WriteLine et d'afficher les valeurs de toutes les variables un peu avant que ça plante, puis leur évolution à chaque ligne jusqu'à celle du bug.

Pour enfin déterminer le problème et le résoudre
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Messages postés
6
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
18 avril 2021

Merci pour votre réponse, Whisméril.

J'ai exploré cette solution. Le problème ne semble pas venir du programme lui-même : si je supprime deux cents lignes de code au début du programme (des textwriteline pour la présentation des calculs) ou deux cents lignes de code à la fin du programme, le programme fonctionne. Tout se passe comme si le compilateur n'arrivait pas à avaler le programme, ou bien le small basic trouve ses limites (pourtant le débogage n'indique rien), ou bien il y a des fichiers que le compilateur ne trouve pas.. Mais si c'est ça, ça me dépasse...
"
J'ai vu apparaître une ligne "StackOverflowError"
Messages postés
15915
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
9 mai 2021
700
Alors le problème vient de là.

Il existe 2 "sources" de mémoires vives dans lesquelles un programmes peut puiser.
  • La pile
  • Le tas

https://www.journaldunet.fr/web-tech/developpement/1202909-que-sont-la-pile-stack-et-le-tas-heap/

Un stackoverflow ou dépassement de pile est le fait que ton programme a consommé toute la pile et ne peut plus s'exécuter.

C'est souvent du à des boucles ou des méthodes récursives qui affectent des variables qui dépendent d'elles même.

Mais comme tu écris
si je supprime deux cents lignes de code au début du programme (des textwriteline pour la présentation des calculs) ou deux cents lignes de code à la fin du programme, le programme fonctionne
il est aussi possible que tu utilises trop de variables

Sans connaitre le langage (y'a tellement de dérivés de basic qui ne couchent pas ensemble qu'un truc vrai pour l'un ne l'est pas pour un autre...), ni l'IDE ça va pas être facile de t'aider.

Quoiqu'il en soit, selon cette page https://www.microsoft.com/fr-FR/download/details.aspx?id=46392 la dernière version date de 2015. 6 ans en programmation c'est long.
Peut-être que le choix initial de ce langage n'a pas été judicieux.
Peut-être serait il salvateur de refaire à zéro avec des outils plus efficaces (notamment pour le déboggage). A noter que 7500 lignes à la fois ça reste un "petit" programme et à la fois ça ne veut pas dire grand chose, je peux te montrer des exemples dans lesquels je fais la même chose en 20 lignes ou en 1 seule.

Quelles sont les raisons qui t'ont orienté vers ce choix?
Messages postés
6
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
18 avril 2021

Il doit y avoir plus d'une centaine de variables. le problème ne vient pas de boucles récursives
j'ai choisi le small basic pour modéliser des calculs mathématiques avec un langage simple, je n'avais pas le temps d'appendre du compliqué. L'important est mon étude mathématique, que je souhaite accompagner d'un programme. A ce stade, j'imagine trois solutions.

Soit je scinde mon programme en deux programmes distincts

Soit je trouve le moyen d'augmenter la mémoire pour le compilateur. (Une fois le programme compilé en .exe, un utilisateur qui le reçoit aura t il un problème en le lançant ?)

Soit j'exporte mon programme en visual basic en espérant ne pas avoir de stack overflow
(J'ai essayé de l'ouvrir avec visual basic 2010 mais ce logiciel me demande de déclarer la librairie smallbasic.dll et je ne sais pas comment faire).

Est-ce que vous savez encore; Whismeril qui avez la gentillesse de me répondre, si on peut faire quelque chose ?
Messages postés
15915
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
9 mai 2021
700

Soit j'exporte mon programme en visual basic en espérant ne pas avoir de stack overflow
(J'ai essayé de l'ouvrir avec visual basic 2010 mais ce logiciel me demande de déclarer la librairie smallbasic.dll et je ne sais pas comment faire).

Ça ne marchera pas VB.Net est un faux ami de VB. C'est un très bon exemple des trucs vrais pour lui mais par pour les autres et inversement.
En plus 2010 est obsolète, aujourd'hui c'est Visual Studio 2019.

Soit je scinde mon programme en deux programmes distincts
je ne peux pas me prononcer, je n'ai pas assez d'éléments et la connaissance de small basic

Soit je trouve le moyen d'augmenter la mémoire pour le compilateur. (Une fois le programme compilé en .exe, un utilisateur qui le reçoit aura t il un problème en le lançant ?)
ce langage semble trop basique (sans mauvais jeu de mot) pour que cela soit possible.

j'ai choisi le small basic pour modéliser des calculs mathématiques avec un langage simple, je n'avais pas le temps d'appendre du compliqué

Python aurait été un bien meilleur choix, les modules mathématiques existent, là j'imagine que tu as du presque tout inventer. Il est simple à apprendre. Et surtout il y a des IDE qui te donnent des outils de débbogage assez pratiques (le premier d'entre eux étant l'exécution en pas à pas).

Pour les études mathématiques, il existe par exemple Jupyter qui est parfaitement adapté.
Ici une petite présentation avec un tuto vidéo de quelques minutes http://www.dane.ac-versailles.fr/comprendre/jupyter-une-application-pour-programmer-en-python
Messages postés
6
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
18 avril 2021

Merci beaucoup pour votre aide.
Messages postés
15915
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
9 mai 2021
700
Tu n’as rien à me remercier, je n’ai pas été en mesure de t’apporter une solution.
Messages postés
6
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
18 avril 2021

Que nenni, toute aide fait chaud au coeur, et j'y vois plus clair.
Messages postés
15915
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
9 mai 2021
700
Bonjour

Tu peux essayer de découper ton programme actuel en 2, comme tu l'as déjà envisagé.
Le premier stocke les résultats intermédiaires dans un fichier et le second lit ce fichier pour la suite.

Et si small basic permet de lancer d'autres logiciels, tu peux essayer d'en écrire un troisième qui exécute le premier puis le second
Messages postés
6
Date d'inscription
vendredi 16 avril 2021
Statut
Membre
Dernière intervention
18 avril 2021

J'ai supprimé des lignes de codes non indispensables et maintenant ça fonctionne. je suis juste à la limite du stack overflow : j'ai testé, c'est amusant de le voir planter pour quelques lignes en plus. Mais on devrait quand même pouvoir modifier la mémoire allouée au compilateur pour ce logiciel...