Bonjour,

J'ai presque terminé un programme de dessin 3D et d'usinage

Il est un peu particulier : on ne dessine pas à la souris, mais en tapant des instructions.

C'est en fait bien plus pratique pour les pièces mécaniques où il faut des dimensions et des géométries précises

Je dois faire terminer l'interface utilisateur qui sert à taper le code (toutes les autres fonctions comme la visualisation du résultat, l'export, l'usinage sont déjà faites)

Donc je dois proposer à mes utilisateurs un langage de programmation, comme une sorte de BASIC.

je dis bien langage, car il s’avère qu'il est extrêmement pratique, pour le dessin de certaines pièces, de pouvoir :
- faire des boucles
- utiliser des variables
- faire des tests (if / endif)
- faire des calculs (ne pas indiquer les dimensions en valeur numérique mais avec une expression mathématique)

J'ai déjà un premier jet qui fonctionne...

Mais là ou je me pose la question, c'est quelle syntaxe proposer aux utilisateurs

Parmi les utilisateurs eux, il y aura des gens qui savent déjà programmer et d'autre pas.

Or, pour ceux qui n'ont jamais programmé, il y a dans le code des choses qui ne sont pas évidentes, notamment le fait que certains symboles ont plusieurs significations différentes selon le contexte.

Exemple célèbre, en Visual Basic, le fait que le signe "a = b" ai plusieurs significations :
- affectation de la valeur de 'b' à 'a'
- affectation de la référence vers 'b' (pointeur) à 'a' si la variable est un objet
- test de l'égalité des deux valeurs 'a' et 'b'

Je me pose la question de plutôt utiliser cette syntaxe :

a <- b
a <- REF(b)
IF a=b THEN ...
ou encore

SET a <- b
SETREF a <- b
IF a=b THEN ...
La syntaxe du C++ est plus sérieuse, mais pour des non-informaticiens elle est repoussante.
Mon langage devra plutôt être "verbeux" car ce sera plus abordable.

Pareil pour les fonctions et les procédures (sous programmes)
Il apparaît utile en pratique de pouvoir créer ses propres fonctions et procédures

Un sous programme doit avoir :
- des paramètres en entrée
- des résultats en sortie
- parfois des paramètres à la fois en entrée et sortie (passés par référence)

Là aussi, il faut que ce soit clair...

Je pense utiliser des arguments nommés
CALL SousProg1(
.CX <- 0
.CY <- 10
.Forme2D -> MaForme
.FormeAPercer <-> MaForme2
)
Il pourra aussi y avoir des classes, je souhaite faire la distinction entre les propriétés (variables) et les fonctions et procédures de la classe

a <- MaClasse.X
b <- MaClasse!FonctionY
ou

a <- MaClasse.X
b <- MaClasse.FonctionY()
Qu'en pensez vous ?

J'aimerais aussi trouver comment gérer directement dans mon logiciel de la coloration syntaxique (il est codé en VB.NET)

Merci

A bientôt