Pages

mercredi 29 mars 2023

Le langage FuncSug




Le langage FuncSug

FuncSug est un langage de script innovant et expérimental, spécialement conçu pour simplifier la programmation des interfaces graphiques (GUI).

Entièrement compatible avec l'écosystème JavaScript, ce langage vous permet de continuer à utiliser vos outils préférés tout en explorant de nouvelles possibilités

Ce langage se distingue par une exécution des instructions respectant davantage l'ordre d'écriture. 

FuncSug offre une approche alternative aux syntaxes événementielles traditionnelles en introduisant des syntaxes concurrentes intuitives et conviviales.

Actuellement, FuncSug est conçu pour le développement web. 


💻 Si tu as déjà des bases en JavaScript, FuncSug pourrait bien te faciliter la vie. 😉

D'autres caractéristiques de FuncSug :

  • Exécution parallèle explicite : Il permet de lancer plusieurs actions en parallèle de manière intuitive.
  • Gestion des annulations de tâches : Les tâches, y compris les délais d'attente, peuvent être annulées facilement.
  • Réactivité aux changements de variables : Il peut détecter les modifications de valeurs et réagir en conséquence.
  • Déterminisme : Il n'utilise pas les threads, ce qui lui permet d'avoir toujours le même ordre d’exécution.

💻🚀 Si l'envie te prend d'explorer un peu plus, jette un œil à ces ressources :
     

🧪 Dans le le bac à sable, vous pouvez vous entraîner et tester quelques exemples de code.

Je serais ravie d'avoir ton retour d'expérience ou de recevoir un commentaire de ta part ! 😍

🚀 Bonne visite et bon codage !

 ****

👩‍💻 Mon premier programme avec FuncSug 🧪

J'ai codé  ce premier programme que l'on code quand on découvre un nouveau langage : "Hello world"
la syntaxe en FuncSug pour cette instruction est : 
 
displayNewMessage("Hello world !") 

Bon pour ce premier programme rien de bien convainquant par rapport à JavaScript

body.innerHTML += '<p class="display">Hello world !</p>'

Mais quand même, je n'ai pas eu à m'occuper des balises de la class car la fonction FuncSug s'en est occupée à ma place.


👩‍💻 Mon second programme avec FuncSug 🧪

Maintenant que j'ai un petit peu apprivoisé ce langage, je vais essayer d'aller plus loin, en codant un petit jeu : "Le nombre mystère"
Il est évident que ce programme est bien plus complexe que le précédent. Je vais donc mentionner ici la structure. 
  1. Créer le nombre à trouver
  1. Afficher ("J'ai choisi un nombre.")
  1. Tant que que le nombre n'est pas trouvé :
  1. Afficher ("Devine mon nombre..")
  1. Attendre et lire le nombre entré par l'utilisateur
  1. Si supérieur au nombre à trouver, affiche "Trop grand !"
  1. Si inférieur au nombre à trouver, affiche "Trop petit !"
  1. Si égal au nombre à trouver, affiche "Bravo !" 
Dans les autres langages, il semble impossible de garder ce plan avec une interface graphique. 


Ici j'ai pu faire mon code en suivant la structure ci-dessus et là je dis bravo ! Adieux la prise de tête où je me perdais dans mon code en me demandant mais bon sang où j'en suis ?

# 1) Créer le nombre à trouver
# ============================
.var nombreATrouver <-- :randomIntBetween 1 100
.var reponse <-- 0

# 2) Afficher ("J'ai choisi un nombre.")
# ======================================
(displayNewMessageIn "J'ai choisi un nombre" "#gameZone")

# 3) Tant que que le nombre n'est pas trouvé :
# ======================================
{while [$reponse /= $nombreATrouver]
#        3.1) Afficher ("Devine mon nombre.")
        (displayNewMessageIn "Devine mon nombre" "#gameZone")
#     3.2) Attendre et lire le nombre entré par l'utilisateur
        reponse <-- .awaitNewHumanNumberIn "#gameZone"
#     3.3) Si supérieur au nombre à trouver, affiche "Trop grand !"
        {if [$reponse > $nombreATrouver]
                (displayNewMessageIn "Trop grand !" "#gameZone")
        }
#     3.4) Si inférieur au nombre à trouver, affiche "Trop petit !"
        {if [$reponse < $nombreATrouver]
                (displayNewMessageIn "Trop petit !" "#gameZone")
        }
#     3.5) Si égal au nombre à trouver, affiche "Bravo !"
        {if [$reponse = $nombreATrouver]
                (displayNewMessageIn "Bravo !" "#gameZone")
        }
}

Quand je relis mon code, je garde bien les différentes étapes. 
Je trouve que FuncSug est plus facile à utiliser que JavaScript. En effet, il y a des fonctions qui me facilitent la vie : Par exemple, la fonction 
:randomIntBetween 1 100

Je trouve cette fonction bien plus simple à écrire que  
Math.floor(Math.random()*100+1)

Cette fonction, est un peut casse-tête car il est souvent arrivé que j'écrive
Math.floor(Math.random() * 100);
Et ça ne donnait pas du tout ce que je voulais car ça donne un nombre entre 0 et 99 d'où le "+1"

Avec FuncSug,  fini les problèmes de calcul. 

Grâce à cette fonction 
reponse <-- .awaitNewHumanNumberIn "#gameZone"

Je n'ai pas eu à m'occuper des problèmes liés aux events. Et quand on débute en programmation, je trouve que c'est une belle facilité. 

(displayNewMessageIn  MonTexte  l'id_de_la_balise_où_je_veux_le_placer)

Je trouve cette fonction très pratique aussi. Bon vous l'aurez compris, je me suis amusée à écrire ce code. De plus, Il a été bien plus rapide à écrire. 

Alors par contre il faut s'adapter à la nouvelle syntaxe qui est différente de JavaScript et des autres langages que je connais. 

par exemple pour affecter une donnée à une variable on écrit : <--
.var reponse <-- 0

Attention pour déclarer une variable il ne faut pas oublier le point devant le nom de la variable.


Je trouve que le signe <-- est plus parlant car on met bien 0 dans reponse

C'est, à mon avis plus compréhensible que réponse égal 0 qui prête à confusion dans la compréhension du code. 

du coup, quand on veut comparer le contenu de deux variables, fini les oublis du double égal voir triple....
Il suffit d'écrire 
if [$reponse = $nombreATrouver]

Attention, ici ce sont des [ ] pour englober le if et non ( ) et { } autour du bloc if et non après les ( )

{if [$reponse > $nombreATrouver]
     (displayNewMessageIn "Trop grand !" "#gameZone")
}

Alors, autre petite habitude à prendre que je trouve tout aussi déroutante que les if, c'est les parenthèses autour de TOUT l'appel de fonction comme ci-dessous 
(displayNewMessageIn "J'ai choisi un nombre" "#gameZone")

Les paramètres séparés par un espace

Ce qui m'a dérouté aussi c'est le $ que l'ont DOIT mettre avant la variable pour obtenir son contenu. 

J'ai eu tendance à écrire 
     if [reponse > nombreATrouver]
 au lieu de 
     if [$reponse > $nombreATrouver]
 et bien sur erreur !
 
 Pourquoi ce $ ?
 
 $ a une signification explicite : Il dit "prend la valeur de la variable"
 
Il est vrai qu'en lisant
total <--  [$prix * $quantite]

Je vois plus facilement si c'est la valeur qui est concernée ou la variable. En lisant l'instruction ci-dessus, je traduis plus aisément : Prends la valeur de prix multiplie-la par la valeur de quantite et mets le résultat dans total.
 
🗣️ Qu'en penses-tu ?


Aucun commentaire:

Enregistrer un commentaire

Enfin un site pour FuncSug

  Coucou 👋 Je viens de lancer un site qui regroupe tous les programmes réalisés avec FuncSug , ce nouveau langage de programmation dont je...