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

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.

Software
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

EVENTO ONLINE

Simplificando seus projetos de Internet das coisas com o iMCP HT32SX Sigfox

DATA: 18/05 às 15:00h