introduction au langage de programmation lua / digital apéro [03/12/2014]

20
Le langage Lua @nicodzilla / [email protected] / lorenzon.ovh

Upload: silicon-comte

Post on 05-Aug-2015

119 views

Category:

Technology


0 download

TRANSCRIPT

Le langage Lua

@nicodzilla / [email protected] / lorenzon.ovh

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

Présentation

Artenet.fr / @nicodzilla

Présentation

Artenet.fr / @nicodzilla

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