Prévia do material em texto
<p>Amanda Aparecida Ferreira – G859AD1</p><p>Carine dos Reis Souza - N059EH9</p><p>Danielly Celestrini Burkowski - N067EB2</p><p>João Pedro Tamanini Mazzoni - F350878</p><p>Maria Luiza Cyrino Guedes Leandro - N272CA2</p><p>Rian Freire Garcia Ortega - N058250</p><p>Linguagem de Programação Lua</p><p>1. CRIADOR</p><p>Lua foi criada por Roberto Ierusalimschy, Luiz Henrique de Figueiredo e</p><p>Waldemar Celes, professores do Departamento de Informática da Pontifícia</p><p>Universidade Católica do Rio de Janeiro (PUC-Rio).</p><p>2. PAÍS DE CRIAÇÃO</p><p>Lua foi desenvolvida no Brasil em 1993.</p><p>3. MOTIVO DA CRIAÇÃO</p><p>A criação da linguagem Lua foi motivada pela necessidade de uma</p><p>ferramenta de script para adicionar funcionalidades extensíveis em softwares de</p><p>design de engenharia gráfica desenvolvidos pela Tecgraf, o grupo de pesquisa</p><p>em gráficos da PUC-Rio, que tinha contratos com a Petrobrás e outras</p><p>empresas. A ideia era desenvolver uma linguagem flexível e leve, fácil de integrar</p><p>com outras linguagens, principalmente para ser usada como linguagem de</p><p>extensão para programas maiores.</p><p>4. VISÃO GERAL</p><p>Lua é uma linguagem de programação leve, embutida e interpretada. Sua</p><p>sintaxe é minimalista, influenciada por linguagens como C, Pascal e Scheme.</p><p>Lua é conhecida por sua simplicidade, eficiência e fácil integração com outros</p><p>sistemas, sendo freqüentemente usada como linguagem de extensão para</p><p>aplicativos de software e jogos. O motor da linguagem Lua é extremamente</p><p>pequeno e otimizado, o que a torna ideal para ambientes com recursos limitados,</p><p>como sistemas embarcados e jogos.</p><p>5. HISTÓRIA</p><p>Lua foi desenvolvida em 1993 no Brasil como uma resposta à falta de</p><p>linguagens de script que fossem adequadas para integração em programas</p><p>maiores. Inicialmente, os criadores se inspiraram em linguagens como SOL e</p><p>DEL, que eram usadas internamente para manipulação de dados em projetos de</p><p>engenharia. Com o tempo, Lua foi crescendo em popularidade por sua</p><p>simplicidade e capacidade de ser embutida em sistemas maiores.</p><p>Ao longo dos anos, a linguagem evoluiu significativamente, mantendo sua</p><p>compatibilidade com versões anteriores. Uma das principais mudanças foi a</p><p>introdução de tabelas, que se tornaram a estrutura de dados mais importante da</p><p>linguagem, servindo para representar arrays, listas, dicionários, e até mesmo</p><p>objetos.</p><p>6. EXEMPLOS DE CÓDIGOS: POO EM LUA</p><p>- Exemplo de uma classe com encapsulamento e herança.</p><p>Definindo uma Classe base (superclasse) Animal.</p><p>Animal = {}</p><p>Animal.__index = Animal</p><p>function Animal:new(name)</p><p>local instance = setmetatable({}, Animal)</p><p>instance.name = name or "Unnamed"</p><p>return instance</p><p>end</p><p>function Animal:speak()</p><p>print(self.name .. " faz um som.")</p><p>end</p><p>Definindo uma subclasse (Herança) Cachorro que herda de Animal.</p><p>Cachorro = setmetatable({}, {__index = Animal})</p><p>function Cachorro:new(name, breed)</p><p>local instance = Animal.new(self, name) -- Chama o construtor da superclasse</p><p>instance.breed = breed or "Vira-lata"</p><p>return instance</p><p>end</p><p>function Cachorro:speak()</p><p>print(self.name .. " (um " .. self.breed .. ") late.")</p><p>end</p><p>Criando instâncias e usando encapsulamento.</p><p>local meuAnimal = Animal:new("Leão")</p><p>meuAnimal:speak() -- Saída: Leão faz um som.</p><p>local meuCachorro = Cachorro:new("Rex", "Pastor Alemão")</p><p>meuCachorro:speak() -- Saída: Rex (um Pastor Alemão) late.</p><p>- Exemplo de Abstração</p><p>Definindo uma classe abstrata Forma</p><p>Forma = {}</p><p>Forma.__index = Forma</p><p>function Forma:new()</p><p>error("A classe 'Forma' é abstrata e não pode ser instanciada diretamente.")</p><p>end</p><p>function Forma:area()</p><p>error("O método 'area' deve ser implementado pelas subclasses.")</p><p>end</p><p>Subclasse Circulo</p><p>Circulo = setmetatable({}, {__index = Forma})</p><p>function Circulo:new(raio)</p><p>local instance = setmetatable({}, Circulo)</p><p>instance.raio = raio or 0</p><p>return instance</p><p>end</p><p>function Circulo:area()</p><p>return 3.14 * self.raio * self.raio</p><p>end</p><p>-- Uso</p><p>local meuCirculo = Circulo:new(5)</p><p>print(meuCirculo:area()) -- Saída: 78.5</p><p>7. VANTAGENS DA LINGUAGEM LUA</p><p>• Leve e rápida: O interpretador Lua é compacto e eficiente, ideal para</p><p>sistemas com recursos limitados.</p><p>• Extensível: Pode ser facilmente embutida em aplicativos maiores,</p><p>permitindo que a linguagem seja usada como uma extensão ou linguagem</p><p>de script.</p><p>• Fácil integração: Lua se integra bem com outras linguagens,</p><p>especialmente C e C++, o que facilita sua adoção em projetos de grande</p><p>escala.</p><p>• Flexibilidade: A estrutura de tabelas em Lua proporciona um alto grau de</p><p>flexibilidade, servindo como arrays, dicionários e até objetos.</p><p>• Portabilidade: Lua pode ser executada em diferentes plataformas com</p><p>poucas ou nenhuma modificação no código.</p><p>8. DIFERENÇAS EM RELAÇÃO A OUTRAS LINGUAGENS DE</p><p>PROGRAMAÇÃO ORIENTADAS A OBJETOS (LPOO)</p><p>• POO flexível: Ao contrário de linguagens como Java ou C++, Lua não</p><p>possui um sistema rígido de orientação a objetos. A POO em Lua é</p><p>implementada de maneira informal, usando tabelas e metatables, o que</p><p>oferece flexibilidade, mas pode ser menos intuitivo para quem vem de</p><p>outras LPOO.</p><p>• Estruturas de dados simples: Lua usa uma única estrutura de dados,</p><p>as tabelas, para implementar arrays, listas e dicionários, enquanto</p><p>linguagens como Python têm diferentes tipos de coleções.</p><p>• Minimalismo: Lua segue uma filosofia minimalista, com poucas palavras-</p><p>chave e funcionalidades incorporadas, em contraste com linguagens mais</p><p>pesadas como C++ ou Java, que possuem bibliotecas padrão muito</p><p>amplas.</p><p>9. CASOS DE USO</p><p>Lua é amplamente utilizada em vários domínios, como:</p><p>• Desenvolvimento de jogos: Lua é a linguagem de script preferida em</p><p>engines de jogos como *Corona SDK, CryEngine e Roblox.</p><p>• Sistemas embarcados: Devido ao seu baixo consumo de memória, Lua</p><p>é frequentemente usada em dispositivos com recursos limitados.</p><p>• Aplicativos de software: Usada para criar scripts em softwares como</p><p>*Adobe Lightroom e World of Warcraft.</p><p>• Web: Embora não seja uma linguagem principal para desenvolvimento</p><p>web, Lua é usada em alguns frameworks, como o *Lapis, que é construído</p><p>sobre o OpenResty (uma versão do Nginx).</p><p>10. EXEMPLOS DE APLICAÇÃO</p><p>Lua foi usada na *Petrobras*, especialmente durante sua criação. Na</p><p>década de 1990, a Tecgraf, grupo de pesquisa da PUC-Rio, tinha contratos com</p><p>a Petrobras e desenvolvia soluções gráficas e de engenharia para a empresa.</p><p>Lua foi inicialmente criada para ser usada como uma linguagem de script em</p><p>algumas dessas soluções.</p><p>Os sistemas que a Petrobras utilizava para processamento e visualização</p><p>de dados, especialmente em áreas como engenharia e simulações gráficas,</p><p>necessitavam de uma linguagem de script flexível para personalizações rápidas</p><p>e automação, e Lua foi desenvolvida para atender a essas necessidades.</p><p>Embora a utilização de Lua tenha evoluído para muitos outros domínios, seu</p><p>desenvolvimento inicial teve grande influência do contexto de pesquisa e</p><p>desenvolvimento de ferramentas para a Petrobras.</p><p>Além da Petrobras, Lua ganhou reconhecimento global em diversas áreas</p><p>e contextos, sendo utilizada em grandes empresas e projetos:</p><p>1. Jogos:</p><p>• Blizzard Entertainment: Lua é usada em *World of Warcraft para criar</p><p>addons que permitem que jogadores personalizem a interface do jogo.</p><p>• Angry Birds: O popular jogo móvel da Rovio usa Lua para controlar a</p><p>lógica dos níveis.</p><p>• Roblox: A plataforma de jogos e criação de conteúdo é baseada em Lua,</p><p>permitindo que criadores desenvolvam jogos e mundos interativos.</p><p>• CryEngine e Corona SDK: Motores de jogos populares que utilizam Lua</p><p>como linguagem de script para controlar lógica e comportamentos no</p><p>jogo.</p><p>2. Adobe:</p><p>• Adobe Lightroom: Lua é usada como a linguagem de script principal</p><p>para automatizar e personalizar fluxos de trabalho dentro do Lightroom,</p><p>um software amplamente</p><p>utilizado por fotógrafos profissionais.</p><p>3. NASA:</p><p>• Lua é usada em alguns projetos da NASA, principalmente para</p><p>simulações de sistemas embarcados e controle de equipamentos, devido</p><p>à sua leveza e eficiência.</p><p>4. Nginx/OpenResty:</p><p>• O OpenResty, uma plataforma de servidores web baseada em Nginx,</p><p>utiliza Lua para scripts de alta performance, tornando a linguagem popular</p><p>em aplicações web de grande escala.</p><p>Esses exemplos mostram o amplo reconhecimento e uso de Lua em setores</p><p>diversos, incluindo jogos, softwares de edição, sistemas embarcados e até</p><p>aplicações de alta performance na web, destacando sua versatilidade e</p><p>eficiência.</p><p>Lua oferece uma combinação de simplicidade e poder que a torna adequada</p><p>para uma variedade de aplicações, especialmente em ambientes onde o</p><p>desempenho é crítico. Sua flexibilidade em permitir diferentes paradigmas de</p><p>programação, incluindo a POO, torna-a uma linguagem versátil e bastante</p><p>utilizada em áreas como jogos e sistemas embarcados.</p>