Le langage FuncSug
FuncSug est un nouveau langage de programmation réactive concurrent issu du langage sugarCubes.
Actuellement, FuncSug est fait pour développer des programmes sur le navigateur.
Donc si vous connaissez JavaScript, je pense que FuncSug va vous faciliter la vie.
Je vais, donc tester ce langage et partager avec vous mon expérience ainsi que les avantages par rapport à JavaScript.
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.
- Créer le nombre à trouver
- Afficher ("J'ai choisi un nombre.")
- Tant que que le nombre n'est pas trouvé :
- Afficher ("Devine mon nombre..")
- Attendre et lire le nombre entré par l'utilisateur
- Si supérieur au nombre à trouver, affiche "Trop grand !"
- Si inférieur au nombre à trouver, affiche "Trop petit !"
- 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.
Aucun commentaire:
Enregistrer un commentaire