LUA

Lua: conheça a linguagem de programação 100% brasileira

Desenvolvida em 1993 na PUC-Rio, Lua conquistou o mundo dos games

Redação

29 de maio de 2024

COMPARTILHE


Você já ouviu falar da Lua? Sabia que esta linguagem de programação 100% brasileira foi criada no Rio de Janeiro e de lá conquistou o mundo dos games? Conheça a história dessa invenção nacional presente em clássicos como Grim Fandango e Baldur’s Gate nesta reportagem do IT Forum.

Em 1993, Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes, trio de membros do Instituto Tecgraf de Desenvolvimento de Software Técnico-Científico da Pontifícia Universidade Católica do Rio de Janeiro (Tecgraf/PUC-Rio), tinham um desafio em mãos: encontrar uma linguagem de programação que pudesse ser utilizada pela Petrobras em suas aplicações de engenharia.

A gigante do setor de petróleo já era a principal cliente do instituto há anos. Anteriormente, o Tecgraf havia desenvolvido para a companhia uma aplicação para entrada de dados (DEL) e um gerador de relatórios configurável para perfis litológicos (SOL). Os programas, no entanto, não atendiam às demandas mais complexas da empresa.

Leia também: guia para quem quer aprender a programar

Para isso, seria necessário uma linguagem de configuração – ou linguagem de script. Esse tipo de sistema de código consiste em uma camada de software que pode ser configurada por um usuário não técnico para, então, interagir com uma linguagem de programação mais complexa – como C, que opera próximo ao hardware.

A única alternativa disponível para esse tipo de uso na época era a Tcl, criada alguns anos antes na Universidade da Califórnia em Berkeley. No entanto, a Tcl tinha uma sintaxe pouco conhecida e era considerada ‘críptica’ demais para usuários não técnicos, incluindo os geólogos e engenheiros civis da Petrobras, que teriam que adotá-la no dia a dia.

A linguagem Python, uma das mais populares da atualidade, também foi considerada pelo time do Tecgraf. Contudo, a ideia foi rapidamente descartada, uma vez que ainda estava em sua ‘infância’ – em uma versão anterior à 1.0 – e não atenderia às necessidades de implementação da Petrobras.

Se a solução perfeita não existia, sobrou ao grupo a tarefa de inventá-la. Naquela altura, reinava no Tecgraf um ambiente aberto de experimentação, que levou os pesquisadores a considerar uma combinação do DEL e SOL para elaborar uma linguagem leve, portátil e fácil de ser aprendida.

Luiz Henrique de Figueiredo, Roberto Ierusalimschy e Waldemar Celes, LuaLuiz Henrique de Figueiredo, Roberto Ierusalimschy e Waldemar Celes (Imagem: Arquivo Pessoa/ Reprodução)

“Na época, estava muito em voga o extreme programming, a ideia de se criar a coisa funcional mais simples possível”, contou Roberto Ierusalimschy, em entrevista ao IT Forum. “Nós tínhamos muito essa filosofia”.

Nascia ali a Lua. Apesar de sua sintaxe simples, a nova linguagem de programação foi projetada para ser poderosa e eficiente, e desenhada para estender aplicações industriais ou para sistemas embutidos. Sua simplicidade era resultado de uma filosofia de design, mas também das limitações de hardware da época.

“Ela rodava embarcada em plataformas. As máquinas de plataformas eram muito simples, tinham que suportar extremos de temperatura, mas que eram extremamente limitados em termos de memória e CPU”, explicou Ierusalimschy. “A gente não estava fazendo coisas para um PC com 16 GB. A nossa mentalidade era o contrário: teria ali uma máquina com 500 KB de memória e a Lua teria que rodar dentro desse troço”.

Lua crescente


A linguagem Lua foi o primeiro projeto conjunto dos três membros do Tecgraf. Roberto era professor assistente do Departamento de Ciência da Computação da PUC-Rio e interessado em linguagens de programação; Luiz Henrique era matemático, pesquisador de pós-doutorado no IMPA e entusiasta em ferramentas de software e computação gráfica; e Waldemar era engenheiro e estudante de PhD de Ciência da Computação da PUC-Rio.

A versão Lua 1.0 nunca foi lançada publicamente pelo grupo. Por influência de Luiz Henrique, entusiasta da cultura de software livre, o trio disponibilizou a Lua 1.1 livremente para uso acadêmico. Dois anos depois, lançaram a Lua 2.1 publicamente, permitindo seu uso para todos os fins, incluindo fins comerciais. As divulgações eram feitas pela Usenet, rede de comunicação que precede a Internet.

“A gente era o último a saber. Nós ficávamos apenas lendo os sinais de fumaça”, disse Roberto sobre sinais de que a Lua ganhava popularidade fora do Tecgraf. Um destes sinais de fumaça partiu da publicação norte-americana Dr. Dobb’s Journal, revista mensal voltada para programadores que trouxe um artigo sobre a linguagem Lua estampado na capa de sua edição 254, de dezembro de 1996.

O reconhecimento não demorou a chegar. No ano seguinte, o programador estadunidense Bret Mogilefsky entraria em contato com criadores para tirar dúvidas sobre o desenvolvimento em Lua. Mogilefsky atuava como programador líder de Grim Fandango, jogo de aventura do estúdio de videogames fundado pelo cineasta George Lucas, Lucasfilm Games, e havia se interessado na linguagem de script após descobri-la no Dr. Dobb’s Journal.

“Eu era uma das poucas pessoas na LucasArts que tinha um modem na minha mesa para me conectar à Internet. Naquela época, isso era um grande luxo. Então, eu fiz a conexão ao site FTP e baixei a Lua. O código era bastante portátil e não tinha muitas dependências, o que é ótimo para jogos”, contou Mogilefsky em entrevista ao IT Forum.

A linguagem brasileira se encaixava como uma luva em um dos desafios que o desenvolvedor enfrentava no seu trabalho: substituir o antigo motor gráfico SCUMM, criado para o jogo Maniac Mansion, de 1987, por algo mais recente e capaz de fazer o salto do mundo 2D para os personagens e cenários 3D de Grim Fandango.

Das experimentações de Mogilefsky com Lua, com elementos do SCUMM e de outros ativos do estúdio, incluindo o motor Sith, de Star Wars: Jedi Knight: Dark Forces II, nasceu o “Grim Engine”, novo motor que tornou as ambições da estúdio em realidade. Nesse processo, Lua foi a “cola” para diversos elementos do jogo, incluindo diálogos e a interface de jogo, fazendo uma separação entre elementos do motor gráfico dos elementos de conteúdo.

Mas o desenvolvimento do jogo usando a linguagem inédita não foi sem seus desafios. Ao IT Forum, Mogilefsky conta que, por exemplo, esbarrou na incapacidade da Lua em executar várias tarefas ao mesmo tempo – a chamada “concorrência”. Com base na tentativa e erro, o programador conseguiu incluir o recurso na linguagem por conta própria.

“Tem um episódio do desenho animado do Wallace e Gromit no qual eles estão em um trenzinho, e Gromit vai colocando os trilhos na frente do trem enquanto andam. Foi muito parecido com isso”, brincou. Futuramente, compartilhou sua estratégia com os desenvolvedores da linguagem para integrar a concorrência de forma nativa em futuras versões.

Grim Fandango foi lançado em outubro de 1998 e logo se tornou um sucesso cult. O título acompanha a história de Manny Calavera, um agente de viagens no pós-vida que tenta salvar a recém-falecida Mercedes Colomar enquanto expõe uma caso de corrupção no Departamento da Morte.

O êxito do jogo gabaritou Mogilefsky para compartilhar sua experiência positiva com outros desenvolvedores. Um destes episódios aconteceu em março de 2001, durante a edição daquele ano da Game Developers Conference, um dos principais eventos para desenvolvedores de jogos eletrônicos. Durante a discussão “Choosing, Designing & Implementing Scripting Languages: Tales from the Script”, o programador líder de Grim Fandango pode compartilhar detalhes sobre o uso bem sucedido de Lua no jogo com uma audiência de aproximadamente 200 pessoas.

“Quando terminei de falar, as pessoas estavam anotando coisas furiosamente e fazendo perguntas. Na segunda-feira seguinte, depois que todo mundo voltou para casa da GDC, houve uma explosão de novas pessoas na lista de e-mails perguntando sobre jogos, sobre concorrência e outras coisas”, compartilha Mogilefsky.

Lua no auge


“Foi totalmente surpresa. A gente só começou a se preocupar com jogos mais de dez anos depois da primeira versão”, conta Roberto. Um dos exemplos disso, ele diz, foram melhorias feitas ao sistema de “coleta de lixo” do Lua 5.1, lançado em 2006. A função é essencial para garantir o desempenho consistente de jogos e evitar problemas por conta de gestão ineficiente da memória.

A falta de suporte nativo a recursos usados por jogos não impediu o crescimento da Lua na indústria. Além de Grim Fandango, títulos como Baldur’s Gate, Escape from Monkey Island, FarCry, Homeworld 2, Psychonauts, The Sims e World of Warcraft também adotaram a linguagem de script brasileira como parte do desenvolvimento.

Leia também: Especial programação: saiba por que essa profissão está tão em alta

Mas poucos são os jogos que têm uma relação íntima tão forte com a linguagem Lua quanto Roblox. Lançado em 2006, Roblox é uma plataforma de jogos online nas quais os usuários podem criar, compartilhar e jogar games criados por outros jogadores. Mesmo após quase vinte anos de seu lançamento, Roblox ainda é um dos títulos mais populares da atualidade – especialmente entre jovens jogadores.

Só no Brasil, entre 2020 e 2023, a base ativa de jogadores diários de Roblox cresceu 350%. No primeiro trimestre de 2024, o jogo registrou uma receita global de US$ 801,3 milhões, um crescimento de 22% ano a ano. Também no trimestre, a média diária de usuários ativos foi de 77,7 milhões, um aumento de 17% em relação ao ano anterior.

“Bem no início, não havia como utilizar script do lado do criador. Era só como brincar com blocos virtuais tipo Legos. Você podia colocar blocos em uma superfície e fazer coisas divertidas acontecerem, mas logo ficou claro que as pessoas, nossos usuários, queriam criar conteúdo muito mais detalhado”, explicou Claus Moberg, vice-presidente de engenharia do Roblox, ao IT Forum. “As pessoas queriam algo que se aproximasse de jogos reais, e isso exigia a capacidade de escrever código.”

A Lua foi a opção mais atrativa para os desenvolvedores de Roblox por conta de seu tamanho enxuto. Apesar de sua flexibilidade e sintaxe completa, não era necessário que os criadores importassem bibliotecas extensas para o jogo. “Era rápida, pequena e fácil de injetar no motor gráfico C++ do Roblox”, afirmou. Com sua simplicidade de uso, a plataforma também foi ideal para ser utilizada pela base de jogadores jovens de Roblox.

Mas assim como Bret Mogilefsky esbarrou em limitações da Lua durante o desenvolvimento de Grim Fandango, a equipe de Roblox também precisou adaptar a linguagem para continuar evoluindo seu jogo. Isso aconteceu há quatro anos, quando os desenvolvedores do título começaram a ser prejudicados pela falta de classificação de variáveis da Lua. “Quando você tem centenas de engenheiros trabalhando em uma única base de código, isso pode gerar confusão”, anotou Moberg.

A solução foi criar a Luau, linguagem derivada de Lua que manteve a agilidade e simplicidade da original, mas trouxe melhorias necessárias para o time de grande porte do jogo. Isso incluiu reescrever o ambiente virtual que executa a Lua para ser mais rápido, resultando em jogos com taxas de quadros maiores e animações de UI melhores. Também foram adicionadas os tipos de variantes, limpando a base de código para a equipe de engenharia.

“Tudo o que você faz no Roblox depois de clicar no ícone do Roblox’ na sua área de trabalho, tudo com o que você interage, é programado em Luau e renderizado pelo motor de jogo do Roblox”, finalizou.

Lua minguante?


Em 2023, a Lua comemorou três décadas de existência. O índice TIOBE, que lista mensalmente as 50 linguagens de programação mais populares do mundo, a colocou na 34ª posição do ranking, segundo os dados mais recentes, de maio de 2024. Antes disso, o mais recente pico de popularidade da linguagem veio em março de 2022, quando a Lua chegou à 20ª posição da lista.

Na ocasião, Paul Jansen, CEO da TIOBE Software BV., empresa responsável pela lista, lembrou que a Lua estava longe de seu auge histórico – em junho de 2011, quando atingiu a 10ª posição. Ainda assim, destacou que a linguagem continuava ganhando espaço por conta da facilidade em ser aprendida e executada, e sua interação simples com C, linguagem de propósito geral. A popularidade de Roblox também foi uma das razões por trás do boom registrado em 2011.

Apesar do sucesso que teve com a linguagem, Claus Moberg, do Roblox, lamenta que ela não seja mais difundida pela indústria. “Temos uma comunidade de desenvolvedores incrivelmente vibrante que cresceu na plataforma”, disse. “Mas se você é um desenvolvedor independente que cresceu desenvolvendo jogos em Unity ou Unreal, programando em C-sharp ou JavaScript, e pensa em começar a desenvolver no Roblox, há uma barreira linguística. Talvez você não tenha sido exposto ao Luau significativamente anteriormente em sua carreira”.

Hoje, Lua é desenvolvida no laboratório LabLua do Departamento de Informática da PUC-Rio. Sua atual versão é a Lua 5.4.6, lançada há pouco mais de um ano. A Lua 5.4.7 também já está em desenvolvimento e deve ser lançada oficialmente em breve. Ainda assim, Roberto Ierusalimschy é reticente em falar sobre o futuro da linguagem de programação que ajudou a criar. “Eu não acredito em previsões de futuro para além de seis meses. Não tenho a menor ideia”, disse ao IT Forum.

Mas isso não significa que ele acredite que a Lua vai minguar. Para o cientista da computação, a Lua continua tendo enorme potencial, em especial como o sistema ideal para algumas aplicações de nicho, incluindo em sistemas embarcados como painéis de carro, máquinas fotográficas e até roteadores.

“Você vai ter um monte de outras coisas que vão continuar precisando [de uma linguagem como Lua]. Tenho uma visão de que o uso da Lua vai continuar existindo”, anotou. “E nós continuamos mantendo a linguagem, sempre melhorando. Agora, vamos lançar uma versão que é mais econômica em memória. Então não vejo nenhuma ruptura, acho que ainda temos muito e muitos anos bons pela frente”.

Via IT Forum

TAGS:
gameslinguagem de programaçãoprogramaçãotecnologiatecnologia da informação

Conteúdos relacionados

Bem vindo de volta