Le langage Lua
@nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
Sommaire
Présentation
Syntaxe
Usages
Avantages / Inconvénients
Conclusion
@nicodzilla / nicolas@lorenzon.ovh / 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 / nicolas@lorenzon.ovh / 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 / nicolas@lorenzon.ovh / lorenzon.ovh
Présentation
● « batteries not included »
● Les versions du langage sont parfois
incompatibles entre elles
● Exemple : certains programmes 5.1 ne
fonctionnent pas avec l'interpréteur 5.2
● En pratique on complète avec des lib non
officielles : Penlight, luarocks, etc.
● LuaJIT : implémentation avec compilation
assembleur du code Lua avant exécution
@nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
Présentation
Artenet.fr / @nicodzilla
Présentation
Artenet.fr / @nicodzilla
Syntaxe
-- ceci est un commentaire
affiche = print
affiche("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
Syntaxe
Nom = « nicolas »
Nombre = 12
If Nombre == 12 then
Print(nom)
Endif
--> fermeture simple
function ajoute(x)
return function (y) return x + y end
end
f1 = ajoute(2)
f2 = ajoute(3)
print(f1(10)) --> 12
print(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 / nicolas@lorenzon.ovh / lorenzon.ovh
Syntaxe
ATTENTION : 
l'index des tables commence à 1 !!!
@nicodzilla / nicolas@lorenzon.ovh / 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 / nicolas@lorenzon.ovh / 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 / nicolas@lorenzon.ovh / lorenzon.ovh
Usages : Qui ???
● Adobe,
● 3Scale,
● Nginx,
● Wikimedia,
● Blizzard,
● Rovio,
@nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
● VLC,
● MySQL
Workbench,
● 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 / nicolas@lorenzon.ovh / lorenzon.ovh
Avantages
● Très rapide avec LuaJIT
● Spécificités pratiques (coroutine, possibilité de
sandbox)
● Langage simple : créer une variante est possible
depuis la source
● Grande portabilité
@nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
Conclusion
● Débuter facilement :
● Apt-get install lua52
● ZeroBrane IDE
● Langage de script le plus performant : à utiliser
si besoin de perf. ou env. limité en mémoire
● Si vous avez des utilisateurs qui doivent créer
des scripts (exemple : Wikipedia, 3scale)
@nicodzilla / nicolas@lorenzon.ovh / 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 / nicolas@lorenzon.ovh / lorenzon.ovh

Introduction au langage de programmation Lua / Digital apéro [03/12/2014]

  • 1.
    Le langage Lua @nicodzilla/ nicolas@lorenzon.ovh / lorenzon.ovh
  • 2.
  • 3.
    Présentation ● Créé parRoberto 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 / nicolas@lorenzon.ovh / lorenzon.ovh
  • 4.
    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 / nicolas@lorenzon.ovh / lorenzon.ovh
  • 5.
    Présentation ● « batteriesnot included » ● Les versions du langage sont parfois incompatibles entre elles ● Exemple : certains programmes 5.1 ne fonctionnent pas avec l'interpréteur 5.2 ● En pratique on complète avec des lib non officielles : Penlight, luarocks, etc. ● LuaJIT : implémentation avec compilation assembleur du code Lua avant exécution @nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
  • 6.
  • 7.
  • 8.
    Syntaxe -- ceci estun commentaire affiche = print affiche("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
  • 9.
    Syntaxe Nom = «nicolas » Nombre = 12 If Nombre == 12 then Print(nom) Endif --> fermeture simple function ajoute(x) return function (y) return x + y end end f1 = ajoute(2) f2 = ajoute(3) print(f1(10)) --> 12 print(f2(7)) -- > 10
  • 10.
    Syntaxe -- exemple d'unetable simple table = { "Lua", "PHP", "PERL", "Python", "Scheme" } for cle, valeur in ipairs(table) do print( cle, valeur ) end @nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
  • 11.
  • 12.
    Usages ● Avec lacommande « lua » (REPL) ● Depuis un autre langage : ● C / C++ ● PHP ● Python ● Etc. ● Dans un Framework ● Comme langage de script d'un logiciel @nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
  • 13.
    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
  • 14.
    Usages : Jeux ●Löve ● Framework complet, ● Windows, Mac OS X, Linux ● Jeux 2D uniquement ● Moai ● Windows, Mac OS X, Linux, iOS, Android
  • 15.
    Usages : Jeux& mobile ● Gideros / Corona ● Frameworks pour faire des jeux mobiles ● IOS & Android ● Basés sur C/C++ & OpenGL comme moteur @nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
  • 16.
    Usages : Qui??? ● Adobe, ● 3Scale, ● Nginx, ● Wikimedia, ● Blizzard, ● Rovio, @nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh ● VLC, ● MySQL Workbench, ● Etc.
  • 17.
    Inconvénients ● Librairie (defonctions) 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 / nicolas@lorenzon.ovh / lorenzon.ovh
  • 18.
    Avantages ● Très rapideavec LuaJIT ● Spécificités pratiques (coroutine, possibilité de sandbox) ● Langage simple : créer une variante est possible depuis la source ● Grande portabilité @nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
  • 19.
    Conclusion ● Débuter facilement: ● Apt-get install lua52 ● ZeroBrane IDE ● Langage de script le plus performant : à utiliser si besoin de perf. ou env. limité en mémoire ● Si vous avez des utilisateurs qui doivent créer des scripts (exemple : Wikipedia, 3scale) @nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh
  • 20.
    Merci ● Merci pourvotre attention :) ● La suite : www.lua.org / lua-users.org / http://learnxinyminutes.com/docs/lua/ ● Remerciements : Nicolas Grenié, ● Des questions ? @nicodzilla / nicolas@lorenzon.ovh / lorenzon.ovh