Lua em Sistemas Embarcados

lua

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.

Onde está a Lua?

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:

  1. Altera o código-fonte;
  2. Compila o novo código;
  3. Deploy.

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.

Referências

The Evolution of Lua

A Linguagem de Programação

Veja + conteúdo

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.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Comentários:
Notificações
Notificar
guest
3 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Lenio Rodrigues
Lenio Rodrigues
22/05/2018 08:11

Bom dia Vinicius !
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 ?
Att.:
Lenio

Daniel Quadros
Daniel Quadros
27/02/2018 16:55

Faltou mencionar eLua: http://www.eluaproject.net/

Lenio Rodrigues
Lenio Rodrigues
Reply to  Daniel Quadros
22/05/2018 12:06

meuuuuu amigo !!!
Valeuuu !!!!

Talvez você goste:

Séries

Menu