« Lua is a powerful, fast, lightweight, embeddable scripting language. »
Dans cette introduction, vous découvrirez quelques particularités ce langage de script brésilien :
La philosophie du langage,
Qui utilise ce langage et pourquoi,
Les usages de ce langage,
Les différences avec les autres langages de script,
Comment ce langage peut vous aider à réaliser vos applications Web, Mobile et même des jeux vidéos.
Des exemples simples et concrets, etc.
A propos de l’intervenant :
Nicolas LORENZON : diplômé de l’UFC en 2004 (DESS, Informatique, systèmes distribués et multimédia), il travaille ensuite à Paris pendant 5 ans dans le monde des ERP pour une boîte de conseil en informatique. De retour en Fanche-Comté, il créée la société ARTENET en 2010 et travaille maintenant essentiellement comme développeur web et mobile. Il est adhérent Silicon Comté.
3. 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
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
● « 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
8. 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
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'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
12. 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
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 (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
18. 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
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 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