ebook img

Programando em Lua PDF

482 Pages·2015·2.61 MB·Portuguese
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Programando em Lua

O autor e a editora empenharam-se para citar adequadamente e dar o devido crédito a todos os detentores dos direitos autorais de qualquer material utilizado neste livro, dispondo-se a possíveis acertos caso, inadvertidamente, a identificação de algum deles tenha sido omitida. Não é responsabilidade da editora nem do autor a ocorrência de eventuais perdas ou danos a pessoas ou bens que tenham origem no uso desta publicação. Apesar dos melhores esforços do autor, da tradutora, do editor e dos revisores, é inevitável que surjam erros no texto. Assim, são bem-vindas as comunicações de usuários sobre correções ou sugestões referentes ao conteúdo ou ao nível pedagógico que auxiliem o aprimoramento de edições futuras. Os comentários dos leitores podem ser encaminhados à LTC — Livros Técnicos e Científicos Editora pelo e-mail [email protected]. Direitos exclusivos para a língua portuguesa Copyright © 2015 by LTC — Livros Técnicos e Científicos Editora Ltda. Uma editora integrante do GEN | Grupo Editorial Nacional Reservados todos os direitos. É proibida a duplicação ou reprodução deste volume, no todo ou em parte, sob quaisquer formas ou por quaisquer meios (eletrônico, mecânico, gravação, fotocópia, distribuição na internet ou outros), sem permissão expressa da editora. Travessa do Ouvidor, 11 Rio de Janeiro, RJ – CEP 20040-040 Tels.: 21-3543-0770 / 11-5080-0770 Fax: 21-3543-0896 [email protected] www.ltceditora.com.br Capa: Leônidas Leite Produção digital: Geethik CIP-BRASIL. CATALOGAÇÃO NA FONTE SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ I23p 3. ed. Ierusalimschy, Roberto Programando em Lua / Roberto Ierusalimschy ; tradução Ana Lúcia de Moura. - [3. ed.] - Rio de Janeiro : LTC, 2015. 24 cm. Tradução de: Programming in Lua Inclui índice ISBN 978-85-216-2913-9 1. Lua (Linguagem de programação de computador). I. Título. 15-21109 CDD: 005.13 CDU: 004.43 Prefácio Quando Waldemar, Luiz e eu começamos a desenvolver Lua, em 1993, não poderíamos imaginar que a linguagem alcançaria a repercussão que alcançou. Criada como uma linguagem interna para dois projetos específicos, Lua é, hoje, amplamente usada em todas as áreas que podem se beneficiar de uma linguagem de script simples, extensível, portável e eficiente, como sistemas embarcados, dispositivos móveis e, é claro, jogos. Desde o princípio, Lua foi projetada para ser integrada aos softwares escritos em C/C++ e outras linguagens convencionais. Essa integração traz muitos benefícios. Lua é uma linguagem simples e muito pequena, em parte, porque não tenta fazer o que C já faz bem, como computações de alto desempenho, operações de baixo nível e interfaces com software de terceiros. Lua delega a C essas tarefas. O que Lua realmente oferece são coisas nas quais C não é bom: uma boa distância do hardware, estruturas dinâmicas, ausência de redundâncias e facilidade para testar e depurar. Para isso, Lua tem um ambiente seguro, gerenciamento automático de memória e conveniências para a manipulação de cadeias de caracteres e outros tipos de estruturas de dados de tamanho dinâmico. Parte do poder de Lua vem das suas bibliotecas. Isso não acontece por acaso; afinal, um dos seus pontos fortes é a extensibilidade. Diversas características da linguagem contribuem para esse poder. A tipagem dinâmica permite um alto grau de polimorfismo. O gerenciamento automático de memória simplifica interfaces, uma vez que não é necessário decidir quem é responsável por alocar e desalocar memória ou como tratar overflows. Funções de ordem superior e funções anônimas permitem um alto grau de parametrização, tornando as funções mais versáteis. Mais do que extensível, Lua é também uma linguagem de conexão. Dá suporte ao desenvolvimento de software baseado em componentes, em que uma aplicação é criada por meio da conexão de componentes de alto nível já existentes. Esses componentes são escritos em uma linguagem compilada, tipada estaticamente, como C ou C++; Lua é a cola que usamos para compor e conectar esses componentes. Geralmente, os componentes (ou objetos) representam conceitos concretos, de mais baixo nível (como widgets e estruturas de dados), que não estão sujeitos a muitas mudanças durante o desenvolvimento do programa e que consomem a maior parte do tempo de CPU do programa final. Lua dá a forma final da aplicação, que provavelmente mudará bastante durante o ciclo de vida do produto. Diferentemente de outras tecnologias de cola, Lua é também uma linguagem completa, e, por isso, podemos usá-la não apenas para colar componentes, mas também para adaptá-los e remodelá-los e para criar componentes totalmente novos. É claro que Lua não é a única linguagem de script disponível. Há outras que você pode usar mais ou menos para os mesmos propósitos. Lua, entretanto, oferece um conjunto de características que a tornam a melhor escolha para muitas tarefas e que dão a ela um perfil único: Extensibilidade: A extensibilidade de Lua é tão notável que muitas pessoas pensam nela não como uma linguagem, mas como um kit para a construção de linguagens de domínio específico. Lua foi projetada, desde o início, para ser estendida, tanto por meio de código Lua, quanto por meio de código C externo. Como uma prova de conceito, Lua implementa a maior parte de sua própria funcionalidade básica através de bibliotecas externas. É realmente muito fácil fazer sua interface com C/C++, e Lua tem sido usada de forma integrada também a várias outras linguagens, como Fortran, Java, Smalltalk, Ada, C# e, até mesmo outras linguagens de script, como Perl e Phyton. Simplicidade: Lua é uma linguagem simples e pequena, com poucos (mas poderosos) conceitos. Essa simplicidade a torna fácil de aprender e contribui para o seu pequeno tamanho. A distribuição completa da linguagem (código-fonte, manual, além dos binários para algumas plataformas) cabe confortavelmente em um disquete. Eficiência: Lua tem uma implementação bastante eficiente. Benchmarks independentes mostram-na como uma das mais rápidas linguagens de script. Portabilidade: Quando tratamos de portabilidade, estamos falando sobre executar Lua em todas as plataformas sobre as quais já ouvimos falar: todas as variantes UNIX e Windows, PlayStation, Xbox, Mac OS X e iOS, Android, Kindle Fire, NOOK, Haiku, QUALCOMM Brew, mainframes IBM, RISC OS, Symbian OS, processadores Rabbit, Raspberry Pi, Arduino e muitas mais. O código-fonte para cada uma dessas plataformas é virtualmente o mesmo. Lua não usa compilação condicional para adaptar seu código para máquinas diferentes; em vez disso, ela mantém o padrão ANSI (ISO) C. Dessa forma, você geralmente não precisa adaptá-la a um novo ambiente: se você tiver um compilador ANSI C, só precisará compilar Lua, sem nenhuma complicação adicional. Audiência Os usuários de Lua se enquadram tipicamente em três grandes grupos: aqueles que a utilizam já embarcada em uma aplicação; aqueles que a utilizam como uma linguagem autossuficiente; e aqueles que a utilizam junto com C. Muitas pessoas usam Lua embarcada em uma aplicação, como Adobe Lightroom, Nmap ou World of Warcraft. Essas aplicações usam a API Lua–C para registrar novas funções, criar novos tipos e modificar o comportamento de algumas operações da linguagem, configurando Lua para seus domínios específicos. Frequentemente, os usuários de tais aplicações nem mesmo sabem que Lua é uma linguagem independente, adaptada a um domínio particular. Muitos desenvolvedores de plug-ins para Lightroom, por exemplo, não conhecem os outros usos da linguagem; os usuários do Nmap costumam pensar em Lua como a linguagem da Nmap Scripting Engine; os jogadores de World of Warcraft veem Lua como uma linguagem exclusiva desse jogo. Lua também é útil como uma linguagem autossuficiente, não apenas para processamento de texto e pequenos programas descartáveis, mas também (e cada vez mais) para projetos de médio e grande porte. Para esses usos, a principal funcionalidade de Lua vem de suas bibliotecas. As bibliotecas-padrão, por exemplo, oferecem funções básicas de casamento de padrões e outras funções para o tratamento de cadeias de caracteres. À medida que Lua melhora o seu suporte a bibliotecas, há uma proliferação de pacotes externos. LuaRocks, um sistema de implantação e gerência de módulos Lua, disponibiliza, atualmente, mais de 300 pacotes. Finalmente, há aqueles programadores que trabalham no outro extremo, escrevendo aplicações que usam Lua como uma biblioteca C. Essas pessoas irão programar mais em C do que em Lua, embora precisem ter um bom entendimento de Lua para criar interfaces simples, fáceis de usar e bem integradas à linguagem. Este livro tem muito para oferecer a todas essas pessoas. A primeira parte cobre a linguagem propriamente dita, mostrando como podemos explorar todo o seu potencial. Nela, nos concentramos em diferentes construções da linguagem e usamos inúmeros exemplos e exercícios para mostrar como utilizá-las em tarefas práticas. Alguns capítulos nessa parte cobrem conceitos básicos, como estruturas de controle, enquanto outros cobrem tópicos mais avançados, como iteradores e corrotinas. A segunda parte é totalmente dedicada às tabelas, a única estrutura de dados em Lua. Seus capítulos discutem estruturas de dados, persistência, pacotes e programação orientada a objetos. Eles irão revelar o verdadeiro poder dessa linguagem. A terceira parte apresenta as bibliotecas-padrão. Essa parte é particularmente útil para aqueles que usam Lua como uma linguagem autossuficiente, embora

Description:
Lua é uma linguagem de programação de impecável elegância, que combina o poder de linguagens clássicas, como Scheme, com uma sintaxe simples e moderna. Atualmente, além de ser altamente indicada para sistemas complexos em várias áreas, é a mais utilizada por quem busca uma linguagem de scr
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.