Lua em Sistemas Embarcados - Quem usa? - Embarcados
Vinicius Zein
Confira como anda o uso da linguagem Lua em Sistemas Embarcados. Usando em Ginga, World of Warcraft, Angry Birds, Wikipedia, Adobe Photoshop, etc.
Lua é uma linguagem de script genuinamente brasileira, criada em 1993 pela PUC-RJ, projetada para ser simples, pequena, portável, rápida e fácil de ser embarcada em outra aplicação. Estas são, de fato, suas principais característica:
Portabilidade: a máquina Lua foi escrita em "clean C", podendo ser compilada tanto em C quanto em C++, "out-of-the-box". Lua roda em Windows, em sistemas Unix em geral, Android, iOS, entre outros. Também roda em sistemas embarcados ARM, MIPS, SH4, etc;
Pequeno footprint: em Linux 64 bits, o interpretador Lua 5.3 ocupa 241KB e a biblioteca Lua ocupa 412KB. Para ARM, o binário liblua.so ocupa apenas 162KB (Lua 5.1);
Rápida: Lua é uma das linguagens de script mais rápidas disponíveis hoje, como demonstrado por alguns benchmarks independentes;
Linguagem de extensão extensível: desde sua origem, Lua foi projetada para poder ser facilmente embarcada em outras aplicações. Além disso, é possível desenvolver bibliotecas em linguagem nativa (C ou C++) as quais podem ser chamadas de um script Lua.
Além disso, Lua é livre, possui gerenciamento automático de memória, é robusta e bem estabelecida, tendo aplicação em diversas áreas.
Apesar de não ser transparente para os usuários, a Lua é uma linguagem amplamente utilizada. Merecem destaque:
o Ginga, o middleware para o Padrão Brasileiro de TV Digital, que permite o desenvolvimento de aplicativos interativos, transmitidos pelo ar e executados nos televisores;
jogos como World Of Warcraft, que permite desenvolvimento de extensões em Lua para customizar o jogo, e Angry Birds, desenvolvido essencialmente em Lua;
Adobe Photoshop Lightroom, programa de edição de fotos, que possui diversas funcionalidades desenvolvidas em Lua. Outros programas da Adobe, como Adobe Revel e Adobe Edge Animate, também usam Lua ou permitem o seu uso para o desenvolvimento de extensões;
A Wikipedia permite extensões em Lua, assim como VLC, Gimp, Wireshark, entre outros;
A plataforma Verizon Fios possui um SDK que permite o desenvolvimento de aplicações em Lua;
Aplicações de automação residencial como Fibaro System e Girder usam Lua;
O Corona SDK, assim como outros SDKs, permitem o desenvolvimento de aplicações mobile em Lua.
A lista completa das aplicações e sistemas que usam Lua encontra-se aqui.
Lógica de negócios com linguagem de script
Durante o desenvolvimento de software em linguagens nativas, os desenvolvedores repetem várias vezes o processo abaixo:
Altera o código-fonte;
Compila o novo código;
Para sistemas embarcados, o item 2 consiste na cross-compilação do software para outra arquitetura, diferente da do host, seguida pelo deploy na plataforma-alvo.
Este processo pode ser bastante lento quando o código do projeto começa a ficar grande. Além disso, é necessário envolver desenvolvedores que conheçam a linguagem nativa utilizada nas alterações que possam ser necessárias.
Ao se utilizar uma linguagem de script neste desenvolvimento, pode-se pular a etapa de compilação e ir direto da alteração para integração do novo código na plataforma-alvo. Pode-se, inclusive, em alguns casos, alterar o código do script no target real durante a investigação de problemas. Além disso, linguagens de script normalmente são mais fáceis de se aprender, não tendo a mesma complexidade que as linguagens C e C++, linguagens mais usadas em sistemas embarcados. Dessa forma, a produtividade acaba sendo muito maior.
Importante: para atingir o máximo potencial de desenvolvimento, é imprescindivel que a linguagem de script possa ser integrável à nativa.
O uso de duas linguagens diferentes permite aos desenvolvedores da interface com o usuário e da lógica de negócios usufruir de uma linguagem com tipagem dinâmica e gerenciamento automático de memória, entre outras facilidades. Também permite aos desenvolvedores da lógica de baixo nível e da interface com o hardware usarem uma linguagem compilada de alto poder, como o C++. Tarefas específicas ou que necessitem de muito desempenho são implementadas em um nível mais baixo, em uma linguagem compilada (no caso, C++). Um exemplo desta tarefa seria abrir uma imagem ou carregar uma fonte. Tarefas relacionadas às regras de negócio, por exemplo a interface com o usuário, são implementadas usando a linguagem de script, como, por exemplo, onde e quando mostrar uma imagem ou que texto escrever na tela.
Lógica de negócios com linguagem de script em Lua
Como mencionado anteriormente, Lua é brasileira, rápida, leve, portável e portada para diversas plataformas. Possui gerenciamento automático de memória, tem poucas dependências e é livre. Além disso, já é robusta e estabelecida, estando presente em diversos dispositivos e em diversas aplicações, há mais de 20 anos.
Para completar, Lua é bastante poderosa, pois permite orientação a objetos, permite extender aplicações escritas em outras linguagens e pode ser extendida por bibliotecas escritas em outras linguagens. Sua sintaxe é bastante parecida com Javascript, o que facilita o treinamento e capacitação de desenvolvedores Web para desenvolver em Lua.
– The Evolution of Lua
Há mais de 10 anos trabalhando no desenvolvimento de Sistemas Embarcados, em empresas como LG Electronics e Atmel Germany GmbH. Formado em Engenharia Eletrônica pela UTFPR, MsC. em Tecnologia da Informação pela Hochschule Mannheim, atua atualmente como Coordenador da Área de Sistemas Embarcados da Fundação CERTI.
AnteriorAnteriorApresentando a placa STM32F334 Discovery
PróximoPMV (Painel de Mensagens Variáveis) com NTCIPPróximo
Obrigado pelo Post..ajudou-me muito a dar continuidade nas pesquisas sobre Lua..
Poderia indicar-me algum site que envolva desenvolvimento em sistemas embarcados com Lua, fabricandes de hardware que usam Lua ?