Descobrindo Lua
Este documento não é uma apresentação completa nem oficial de Lua.
Ele se propõe apenas a facilitar a vida de quem não conhece bem Lua ainda e quer saber mais sobre essa tal linguagem tão falada.
O documento está em constante evolução e pode conter temporariamente trechos sendo editados de forma colaborativa e remota.
Documentação sobre Lua
Documentação Oficial produzida pela equipe de desenvolvimento de Lua:
Os documentos oficiais produzidos pela equipe de desenvolvimento Lua estão em:
http://www.lua.org/docs.html Os manuais completos das várias versões e em vários idiomas estão disponíveis on-line em
http://www.lua.org/manual/ O livro Programming in Lua, de
Roberto Ierusalimschy (em inglês), sobre a versão anterior (Lua 5.0) está disponível online na íntegra em
http://www.lua.org/pil/.
A segunda ediçao do livro atualizada para Lua 5.1 só está disponível para a
venda no exterior (US$ 26,37 + frete).
O Reference Manual de Lua 5.1 só está disponível para
venda no exterior (US$ 13,59 + frete)
É possível eventualmente comprar o livro (~R$ 50,00), o Reference Manual (~R$15,00) e o Lua Programming Gems (abaixo, ~R$ 50,00) aqui no Brasil. Checar com o Dado em
dadosutter@esp.puc-rio.br.
Há versões oficiais do livro também em Alemão, Coreano e Chinês
Uma tradução para Português está pronta e sendo revisada pela equipe de Lua para aprovação. Não há previsão de publicação desta versão ainda.
Outros livros sobre Lua:
- Lua Programming Gems
edited by L. H. de Figueiredo, W. Celes, R. Ierusalimschy
Lua.org, December 2008
ISBN 978-85-903798-4-3
em Alemão,
Verlag: Skript Verlag Kuehnel (September 2009)
ISBN-10: 3907857127 ISBN-13: 978-3907857120
Mat Buckland
ISBN-10: 1556220782 ISBN-13: 978-1556220784
O texto "Uma Introdução à Programação em Lua" escrito pelo Roberto para
o curso introdutório de Lua ministrado no JAI 2009 está disponível em
http://www.lua.org/doc/jai2009.pdf
Documentação mantida pela comunidade de usuários e desenvolvedores Lua:
Tutoriais em Português:
Blog versão_digital():
http://versaodigital.blogspot.com/
Por Bernardo Loureiro, Cid Boechat, Leandro Mello e Luiz Eduardo. (Obrigado !)
Tutoriais em Inglês:
do LuaUsers:
http://lua-users.org/wiki/LuaTutorial do Russel Long (usuário):
http://www.devmaster.net/wiki/Lua_(Tutorial) Lua para Sony Playstation:
http://www.evilmana.com/tutorials/lua_tutorial_01.php
LuaUsers:
Portal, em inglês, com excelente documentação mantida pela comunidade Lua.
Site:
http://lua-users.org/
Wiki:
http://lua-users.org/wiki/
LuaForge:
Portal e Repositório de projetos Open Source em Lua, em inglês.
Segue o estilo do
SourceForge mas apenas com projetos em Lua.
Site:
http://luaforge.net/
Listas de Discussão
Lista Lua BR:
Lista de discussão de usuários de Lua em Português.
Os criadores da linguagem participam ativamente da lista.
Site:
http://groups.google.com/group/lua-br
Lua List:
Lista oficial de discussão de usuários de Lua.
Em inglês.
Site:
http://www.lua.org/lua-l.html
Eventos de Lua
Lua Workshop 2005:
San Diego, CA, USA
Patrocinado pela
Adobe Inc.
Site:
http://www.lua.org/wshop05.html
Lua Workshop 2006:
Venlo, Holanda
Patrocinado pela
Océ
Site:
http://www.lua.org/wshop06.html
Lua no History of Programing Languages III - 2007:
San Diego, CA, USA
Site:
http://www.universia.com.br/noticia/materia_dentrodocampus.jsp?not=37561
HOPL III -
http://research.ihost.com/hopl/HOPL-III.html
Lua Workshop 2008:
Washington, DC, USA
Site:
http://www.lua.org/wshop08.html
Lua Workshop 2009:
Rio de Janeiro, RJ, Brasil
PUC-Rio, dias 6 e 7 de outubro, precedendo o
SBGames 2009
Os vídeos do evento estarão disponíveis em breve, no Portal PUC-Rio Digital
Os slides das palestras estão disponíveis no site oficial do evento.
Site: http://www.lua.org/wshop09.html
Baixando e Utilizando Lua
Baixando Lua:
Para usar Lua não é preciso compilar todo o projeto do zero. Há versões prontas para uso em várias plataformas, mantidas no projeto
Lua Binaries.
Clique na opção
downloads e baixe a versão correspondente à sua plataforma.
O pacote de Lua não necessita de nenhuma
instalação, bastando unzipar o pacote para um diretório qualquer à escolha.
Para Windows: Baixe o .ZIP da última versão, identificada como
x86 Executables.
Uma sugestão simples é unzipar onde os programas são geralmente instalados, em C:/Program Files/Lua
Veja também abaixo, a opção interessante do projeto LuaForWindows.
Para Ubuntu Linux: Procurar no Synaptic Package Manager por Lua 5.1
Selecionar o pacote Lua5.1, pode ser interessante selecionar o Lua5.1-doc para ter a documentação no PC (man, etc).
Para outras distros de Linux: Para distros baseadas no gerenciador de pacotes apt-get, Lua pode ser instalada através da linha de comando:
sudo apt-get install lua5.1 Para Macintosh: http://lua.darwinports.com/ Há ainda inúmeras outras versões de binários executáveis, para o iPhone, para Android, para Sony Play Station e muitas outras plataformas.
Ambientes de desenvolvimento para Lua
eLua - Embedded Lua: Nosso Framework de desenvolvimento Lua para o mundo embedded.
O projeto oferece Lua para diversas plataformas e arquiteturas diferentes de microcontroladores.
A homepage do projeto está em
http://www.eluaproject.net
KIPP - Kepler for Cisco IP Phones:
Nosso Framework de desenvolvimento de aplicações para Telefonia IP em redes Cisco.
KIPP = Kepler for IP Phones
O KIPP é desenvolvido por nossa equipe no Led Lab, na PUC-Rio (
dadosutter@esp.puc-rio.br)
IUP - Portable Lua Interface:
Biblioteca para desenvolvimento de aplicações Desktop em Lua.
Implementa objetos de interface com o usuário comuns, como janelas, menus, botões, checkboxes etc......
Site: http://www.tecgraf.puc-rio.br/iup
wxLua - wxWidgets for Lua;
wxLua is a set of bindings to the C++
wxWidgets cross-platform GUI library for the
Lua programming language. You can write complex, graphical, interactive programs with
wxLua to develop and deliver your software with the programming ease of an interpreted language like Lua. Nearly all of the functionality of wxWidgets is exposed to Lua, meaning that your programs can have windows, dialogs, menus, toolbars, controls, image loading and saving, drawing, sockets, streams, printing, clipboard access...
Site: http://wxlua.sourceforge.net/
GINGA - Lua na TV Digital brasileira:
Framework para desenvolvimento de aplicações para TV Digital
Com dois paradigmas de programação, um declarativo em Java e um procedural em NCL, linguagem nativa de Ginga que é básicamente Lua.
Site: http://www.ginga.org.br/
LHF Tools:
Bibliotecas do
Luiz Henrique Figueiredo, membro da Equipe de Desenvolvimento de Lua.
Site: http://www.tecgraf.puc-rio.br/~lhf/ftp/lua
PLua - Lua no PalmOS:
Lua for PalmOS
Limitado à Lua 5.0. O projeto não é de código aberto e foi interrompido por causa do final do PalmOS. Mas a última versão é funcional e bastante poderosa para aplicações em PalmOS.
Lista: http://tech.groups.yahoo.com/group/plua/
pbLua - Lua no Lego:
Lua for Lego NXT
Site: http://www.hempeldesigngroup.com/lego/pbLua/
FSUIPC com plugin Lua - Lua for Microsoft Flight Simulator:
Lua para o Microsoft Flight Simulator
Infos: http://forums.simflight.com/viewtopic.php?f=54&t=73176
LFSLua - Lua in Live for Speed:
Infos: http://www.lfsforum.net/showthread.php?t=19832
Outras bibliotecas e ferramentas interessantes:
Tecgraf tools: http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/
Produtos Interessantes em Lua
Uma relação de projetos e produtos que usam Lua, conforme mencionado acima, está em
http://www.lua.org/uses.html Podemos destacar ainda alguns projetos interessantes para usos gerais:
Sputnik:
Sputnik é uma Wiki escrita em Lua.
É também uma plataforma para a construçao de um vasto número de aplicações web semelhantes às Wikis.
Sputnik se baseia nas potencialidades de Lua como linguagem de extensão.
Site: http://sputnik.freewisdom.org/en/Sputnik LuaEclipse: Plugin de Lua para a plataforma de desenvolvimento Eclipse
Facilita o desenvolvimento de aplicações Lua no IDE Eclipse, com facilidades como Code Completition, Code Profiling (LuaProfile), Inline Documentation (LuaDoc) etc...
Site: http://luaeclipse.luaforge.net/
Online Lua Demo:
Uma web aplication onde se pode programar, visualizar programas já feitos e executar programas em Lua, sem a necessidade de instalar nada em sua máquina.
Site: http://www.lua.org/cgi-bin/demo
- Aleph One (an open-source enhancement of Marathon 2: Durandal) supports Lua, and it's been used in a number of scenarios (including Excalibur and Eternal).
- Blobby Volley, in which bots are written in Lua.
- Company of Heroes, a WW2 RTS. Lua is used for the console, AI, single player scripting, win condition scripting and for storing unit attributes and configuration information.
- Crysis, a first-person shooter & spiritual successor to Far Cry.
- Dawn of War, uses Lua throughout the game.
- Destroy All Humans! and Destroy All Humans! 2 both use Lua.
- Escape from Monkey Island is coded in Lua instead of the SCUMM engine of the older titles. The historic "SCUMM Bar" is renovated and renamed to the "Lua Bar" as a reference.
- Far Cry, a first-person shooter. Lua is used to script a substantial chunk of the game logic, manage game objects' (Entity system), configure the HUD and store other configuration information.
- Garry's Mod and Fortress Forever, mods for Half-Life 2, use Lua scripting for tools and other sorts of things for full customization.
- Grim Fandango and Escape from Monkey Island, both based on the GrimE engine, are two of the first games which used Lua for significant purposes.
- Gusanos (Version 0.9) supports Lua Scripting for making the whole game modable.
- Homeworld 2 uses Lua scripting for in-game levels, AI, and as a Rules Engine for game logic.
- Incredible Hulk: Ultimate Destruction uses Lua for all mission scripting
- JKALua, A game modification for the game JK3: Jedi Academy.
- Multi Theft Auto, a multi-player modification for the Grand Theft Auto video game series. The recent adaptation for the game Grand Theft Auto San Andreas uses Lua.
- Painkiller
- Ragnarok Online recently had a Lua implementation, allowing players to fully customize the artificial intelligence of their homunculus to their liking, provided that they have an Alchemist to summon one.
- ROBLOX is an online Lego-like building game that uses Lua for all in-game scripting.
- SimCity 4 uses Lua for some in-game scripts.
- Singles: Flirt Up Your Life uses Lua for in-game scripts and object/character behavior.
- Spring (computer game) is an advanced open-source RTS engine, which is able to use Lua for many things, including unit/mission scripting, AI writing as well as interface changes.
- S.T.A.L.K.E.R.: Shadow of Chernobyl
- Star Wars: Battlefront and Star Wars: Battlefront 2 both use Lua.
- Star Wars: Empire at War uses Lua.
- Supreme Commander allows you to edit almost all its aspects with Lua.
- Toribash, a turn-based fighting game, supports Lua scripting.
- Vendetta Online, a science fiction MMORPG, lets users use Lua to customize the user interface, as well as create new commands and react to events triggered by the game.
- Warhammer Online uses Lua.
- The Witcher.
- World of Warcraft, a fantasy MMORPG. Lua is used to allow users to customize its user interface.
- Xmoto, a free and open source 2D motocross platform game, supports Lua scripting in levels.
Outras Aplicações:
- Celestia uses Lua to expand its capabilities without recompiling its source code
- Multimedia Fusion Developer 2 has a Lua extension that allows games and applications created with it to run Lua scripts.
- Adobe Photoshop Lightroom uses Lua for its user interface
- Lua Server Pages is a fast server side scripting language(web) suitable for CPU and/or memory constrained systems.
- The window manager Ion uses Lua for customization and extensibility.
- The packet sniffer Wireshark uses Lua for scripting and prototyping.
- The Aegisub subtitles manipulation program uses Lua in its automation module, to generate advanced effects, such as karaoke.
- Intellipool Network Monitor uses Lua for customization and extensibility.
- Lua Player is a port designed to run on Sony Computer Entertainment's PlayStation Portable to allow entry-level programming.
- CMUcam uses Lua for customization and extensibility as part of the CMUcam 3 scripter
- lighttpd uses Lua for its Cache Meta Language, a sophisticated way to describe caching behavior.
- The popular network mapping program nmap uses Lua as the basis for its scripting language, called nse.
- The version control system Monotone uses Lua for scripting hooks.
- MySQL Proxy provides Lua scripting hooks.
- eyeon's Fusion compositor uses embedded Lua for internal and external scripts and also plugin prototyping.
- The Snort Intrusion Detection/Prevention System version 3.0 uses Lua for its command line interpreter.
- New versions of SciTE allow Lua to be used to provide additional features.
- Version 2.01 of the profile management software for Logitech's G15 gaming keyboard uses Lua as its scripting language.
- Electro a 3D engine developed by EVL Electronic Visualization Labs (from the University of Illinois at Chicago) is a visualization and game development environment that uses Lua as its core development language ([10]).
- A new extended version of the TeX typesetting system using Lua as its embedded scripting language is currently under development and reached Beta status in August 2007 (LuaTeX).
- FEMM, Finite Element Method Magnetics, an application that solves magnetic and electrostatic problems.
- The Squeezebox Controller, a device controller to manipulate and control the Squeezebox (network music player) product line from Slim Devices/Logitech uses Lua to implement its Graphical user interface.
- Anime Studio Pro by e frontier (formerly Moho) is a complete vector animation program featuring bones and inverse kinematics and which allows users to use Lua scripting to create and control new functions and effects.
- Nanoki is a small, full featured wiki engine implemented in Lua
- Publique é um gerenciador de conteúdo brasileiro escrito em Lua
Outros Links Relacionados
Ranking atual de Lua no TIOBE:
O índice da comunidade de programação TIOBE representa uma indicação de popularidade das linguagens atuais de programação.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Compilando e Modificando Lua
Se você vai baixar o fonte do projeto para compilação e eventuais alterações, a página para downloads está em
http://www.lua.org/download.html Temos um GDoc (não muito atualizado) sobre a
compilação de Lua em Ubuntu e instruções detalhadas para todos os ambientes podem ser encontradas no arquivo INSTALL do pacote Lua.
O build de Lua é bem simples, baseado em make.
Marcadores: Download, Lua, MySQL, Produtos, Tutorial, Windows