Lua classes utiles

Portrait de reeb

Bonjour à tous,

J'ai partagé sur github des classes utilitaires notamment pour gérer une led ou un sensor digital.

ici : https://github.com/reebgame/nodemcu

ça pourra peut-être servir ..

Si jamais vous avez des idées d'évolutions ou constatez des anomalies n'hesitez pas à m'en faire part.

++

Portrait de Walter

Si je peux me permettre de répondre, pour moi l'Intérêt n'est pas dans le langage en lui-même.
A la base il a était créer pour moder des jeu vidéos, comme il est interprété, le mod n'a pas besoin d'être compiler pour chaque plateforme supporté par le jeu.

Mais pour de la programmation µC, en fait il n'a pas réellement d'avantage. car le fait de pouvoir proposer un programme modifiable par un tier et très peu utilisé sur ce genre de plateforme.

Par contre le code Lua est une classe pas un programme, elle ne fait rien si tu n'instancie pas cette classe.
Le programme qui utilise cette classe serait quelque chose comme ça(je n'ai pas testé)

led1=Led(4)
led2=Led(5)
led1:blink(5, 10000, nil)
led2:blink(2, 10000, nil)

De plus ton programme passe son temps à faire clignoter la led, sa classe utilise un timer, donc le µC est disponible pour autre chose.
 

Portrait de reeb

Oui il y a des avantages.

Le lua est un language de script ressemblant au javascript qui permet de developper une application organisée avec des classes ( meilleure organisation, reutilisabilité du code etc ) et qui repose sur une stratégie d'appels asynchrones avec gestion d'évenements (callback).

Ceci permet de rendre le code non sequentiel et donc de pouvoir paralléliser certaines tâches.

Un exemple ... lorsque l'on effectue une requête http ... l'appel est asynchrone, le traitement peut donc continuer a effectuer d'autres tâches ( clignotement led, lecture sensor etc) en attendant le retour de la réponse http.

Tout cela permet d'éviter le fameux .. delay(1000) de ton exemple qui bloque toute l'execution de ton programme pendant 1000ms.

La programmation asynchrone peut paraître déroutante à ceux qui n'ont programmé que de manière sequentielle ... mais quand on y a goûté ... difficile de s'en passer :)

Aujourd'hui toutes les applications web modernes sont basées sur ce type d'architecture technique notamment avec l'utilisation du javascript et des différents framework actuel (ReactJS, Angular etc)

 Un petit lien pour appréhender davantage l'intérêt de l'asynchrone :

https://javascript.developpez.com/actu/102019/Apprendre-les-mecanismes-de-base-de-l-asynchrone-en-JavaScript-un-tutoriel-de-Yahiko/

Portrait de Walter

Je me répète, mais le langage en soit n'a pas réellement d'avantage par rapport au C/C++, mais le contraire est vrai.
Le langage/interpréteur à été inventé pour permettre de moddé  de lourd moteur de jeu quelque soit la plateforme de destination.
Donc le but est qu'il soit très compacte et rapide, voir le wiki pour son cadre d'utilisation, d'ailleurs wikipédia peut l'utiliser.

Donc la rapidité est au rendez-vous.

Lorsque tu parle de développement PC et Smartphone avec le même code tu parle je suppose de l'outil Windev/Webdev et du langage Wlangage ?
On ne parle plus de C/C++ pour cette partie là.

Après intuitif c'est très relatif, les développeur WEB habitué au javascript, trouverons sûrement que le C/C++ n'est pas intuitif.
J'ai d'ailleurs du mal a voir en quoi il est moins intuitif qu'un autre langage?
Tu as des exemples précis par rapport au C/C++?
Sa syntaxe non permissif est au contraire un atout dans du développement collaboratif à contrario du C/C++
 

Pour moi le seul atout du C/C++ sur arduino &co est le nombre de librairie mis à disposition par la communauté, mais  ce n'est pas lié au langage à proprement parlé.

Moi je suis pas du tout convaincu qu'il y ait un intérêt a faire C/C++ plutôt que du lua.
Bien que l'on puisse faire exactement la même chose dans les deux langages, je trouve qu'il en général bien plus simple à mettre en place en Lua.
Ce qui est justement le cas pour les timer et interruption qui ne demande aucune librairie externe pour être mis simplement en exécution.

Portrait de reeb

Effectivement le choix d'une techno depend aussi du besoin ... performance, maintenance etc et aussi de son experience ... pour ma part j'ai une experience tres ..web ... et le lua se rapproche d'avantage de ce que je connais.

Le C est certainement plus performant car plus proche du processeur, le lua fonctionne comme le java je crois avec une jvm et du bytecode ... mais mon projet actuel ne necessite pas forcement un temps reel de malade :)