introduction au langage de programmation lua / digital apéro [03/12/2014]
TRANSCRIPT
Sommaire
PrésentationSyntaxeUsages
Avantages / InconvénientsConclusion
@nicodzilla / [email protected] / lorenzon.ovh
Présentation
● Créé par Roberto Ierusalimschy en 1993● But du langage :
● Puissant● Rapide● Léger ● Intégrable (« embedable »)
● Dernière version 5.2.3 (Dec. 2013)● Prochaine : 5.3 (actuellement beta)● Licence MIT (open source)
@nicodzilla / [email protected] / lorenzon.ovh
Présentation
● Multi-paradigme (fonctionnel, objet, procédural,etc.) à typage dynamique
● Environ 20 000 lignes de code de AINSI C● 200 ko une fois compilé ● Fonctionne sur : Windows, Linux, Mac OS X,iOS, DOS, Nintendo DS, FreeBSD, Amiga, etc.
@nicodzilla / [email protected] / lorenzon.ovh
Présentation
● « batteries not included »● Les versions du langage sont parfoisincompatibles entre elles
● Exemple : certains programmes 5.1 nefonctionnent pas avec l'interpréteur 5.2
● En pratique on complète avec des lib nonofficielles : Penlight, luarocks, etc.
●LuaJIT : implémentation avec compilationassembleur du code Lua avant exécution
@nicodzilla / [email protected] / lorenzon.ovh
Syntaxe-- ceci est un commentaire
affiche = printaffiche("Silicon Comté") –- Silicon comté
affichage = function (texte) affiche("Affichage : " .. texte)end
affichage("Silicon comté")
-- une boucle simple
for i = 1, 10 do affichage(i)end
SyntaxeNom = « nicolas »Nombre = 12
If Nombre == 12 thenPrint(nom)
Endif
--> fermeture simplefunction ajoute(x) return function (y) return x + y endend
f1 = ajoute(2)f2 = ajoute(3)
print(f1(10)) --> 12print(f2(7)) -- > 10
Syntaxe
-- exemple d'une table simple
table = { "Lua", "PHP", "PERL", "Python", "Scheme"}
for cle, valeur in ipairs(table) do print( cle, valeur )end
@nicodzilla / [email protected] / lorenzon.ovh
Syntaxe
ATTENTION : l'index des tables commence à 1 !!!
@nicodzilla / [email protected] / lorenzon.ovh
Usages
● Avec la commande « lua » (REPL) ● Depuis un autre langage :
● C / C++● PHP● Python● Etc.
● Dans un Framework● Comme langage de script d'un logiciel
@nicodzilla / [email protected] / lorenzon.ovh
Usages : Web
● Apache avec mod_lua●OpenResty = LuaJIT + Nginx●Lapis : OpenResty plus simple●Sailor : MVC Framework●Luvit : LuaJIT + LibUV
→ 2x à 4x plus rapide que Node.js
Usages : Jeux
●Löve● Framework complet,● Windows, Mac OS X,Linux
● Jeux 2D uniquement●Moai
● Windows, Mac OS X,Linux, iOS, Android
Usages : Jeux & mobile
●Gideros / Corona● Frameworks pour faire des jeux mobiles● IOS & Android● Basés sur C/C++ & OpenGL comme moteur
@nicodzilla / [email protected] / lorenzon.ovh
Usages : Qui ???
● Adobe, ● 3Scale, ● Nginx, ● Wikimedia, ● Blizzard, ● Rovio,
@nicodzilla / [email protected] / lorenzon.ovh
● VLC,● MySQLWorkbench,
● Etc.
Inconvénients
● Librairie (de fonctions) trop minimale → productivité compliquée au début sur des
projets complexes
● Versions incompatibles entre elles→ on garde le code source et on compile si
besoin
● Compliqué pour le web
@nicodzilla / [email protected] / lorenzon.ovh
Avantages
● Très rapide avec LuaJIT● Spécificités pratiques (coroutine, possibilité desandbox)
● Langage simple : créer une variante est possibledepuis la source
● Grande portabilité
@nicodzilla / [email protected] / lorenzon.ovh
Conclusion
● Débuter facilement : ● Apt-get install lua52● ZeroBrane IDE
● Langage de script le plus performant : à utilisersi besoin de perf. ou env. limité en mémoire
● Si vous avez des utilisateurs qui doivent créerdes scripts (exemple : Wikipedia, 3scale)
@nicodzilla / [email protected] / lorenzon.ovh
Merci● Merci pour votre attention :)
● La suite : www.lua.org / lua-users.org /http://learnxinyminutes.com/docs/lua/
● Remerciements : Nicolas Grenié,
● Des questions ?
@nicodzilla / [email protected] / lorenzon.ovh