Início » O Brasil já inventou alguma linguagem de programação?

O Brasil já inventou alguma linguagem de programação?

Sim! Conheça neste artigo a linguagem de programação LUA.

Lua foi idealizada por Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes Filho. A linguagem foi projetada para ser facilmente integrada a outros aplicativos. É multiparadigma, leve, portátil (UNIX, Windows, iOS, Android, consoles) e é frequentemente usado como linguagem de script.

Existe realmente outra linguagem de programação? Lua é uma linguagem nova, mas não totalmente nova. Na verdade, a linguagem Lua (lua em português) existe desde 1993. (Se você está se perguntando por que tantas linguagens de programação são necessárias, Matt Sherman tem a resposta neste post.)

No que diz respeito aos jogos, Lua é de longe a melhor e mais popular escolha de linguagem de script. A linguagem é mais simples que outras linguagens como C++. É tipado dinamicamente, suporta coleta de lixo, é extremamente rápido e muito atraente para desenvolvedores de jogos. Aqui estão alguns jogos que usam Lua de alguma forma: Far Cry, SimCity (gera texto de ajuda), UFOs e World of Warcraft. Além dos jogos, outros aplicativos são parcialmente ou totalmente desenvolvidos em Lua, ou incorporam Lua para suportar scripts: VLC, MySQL Workbench, Nginx, Geany, Awesome Window Manager, CRYENGINE e conky.

O Conky exibe informações do sistema na área de trabalho. Scripts Conky escritos em Lua.

Noções básicas da linguagem de programação LUA

Tradicionalmente, começaremos com o famoso programa Hello World. Se você ainda não baixou Lua. Em seguida, execute Lua REPL por meio do comando lua (ou lua5.x).

fullstack pro - sujeito programador
print("Hello World")
--prints Hello World

Isso exibe a mensagem “Hello World” como esperado. É exatamente assim que um programa Python 3.x Hello-World se parece — desta vez, é Lua. Um script lua tem uma extensão .lua. O interpretador pode executar um script alimentando-o com o nome do arquivo assim: lua5.3 first.lua

Lua é interpretada, mas o código é pré-compilado em uma forma intermediária antes da execução. O formulário pré-compilado é gerado usando o comando luac.

A última declaração é um comentário de uma única linha (começando com dois traços). Comentários que abrangem várias linhas começam com –[[ e terminam com –]]. Semelhante ao JavaScript, Lua não requer ponto e vírgula após cada instrução.

Tipos

Lua tem oito tipos básicos: boolean, number, nil, string, function, userdata, table e thread. Como uma linguagem tipada dinamicamente, os nomes de variáveis ​​não precisam de qualificação de tipo. Muitos dos tipos são tipos comuns em outras linguagens. O tipo nil representa a ausência de valor (assim como null em outras linguagens). As tabelas são um recurso poderoso e a única estrutura de dados de Lua. Userdata representa novos tipos criados pela biblioteca C ou um programa aplicativo. Observe que as strings em Lua são cercadas por aspas simples ou duplas.

Em Lua, tabelas são objetos que representam arrays associativos, pacotes ou outras estruturas de dados como conjuntos. O conceito de arrays tem uma diferença sutil dos arrays em muitas outras linguagens. Os índices de array podem ser um número, ou qualquer outro valor (string, etc.) Nil, no entanto, não é aceito. Uma grande diferença é que as tabelas não são de tamanho fixo e não armazenam apenas um tipo de dado.
Para descobrir o tipo de uma variável, use a função type.

my_array = {}          --empty table
my_array['first'] = 1
my_array['second'] = false


type(44.3)    --number
type(false)    --boolean
type("Lua")    --string
type(my_array)  --table

Loops e funções

Antes de qualquer coisa, deixe-me estabelecer isto: toda variável em Lua é global, a menos que qualificada com local, o que força a variável a se tornar local para um pedaço.

A sintaxe para estruturas de controle é muito próxima do inglês puro. A primeira é a instrução if-then-else.

if wait_time > 10 then patience = 0 end
if wait_time == 10 then 
  -- do something
  else
    -- do another thing
  end

Observe o terminador final. É necessário.

Outra estrutura de controle é repeat-até. Ele executa uma seção de código até que uma condição seja satisfeita. Como o loop do-while em outras linguagens, a verificação é realizada após a execução do corpo.

 a = 0
repeat 
a = a + 1
print(a)
until a == 10

Não igual parece um pouco estranho. Está escrito como ~=

O loop while executa o corpo enquanto uma condição for válida.

 while wait_time < 10 do 
print("We're on it")
wait_time = wait_time + 1
end

Funções

Já conhecemos uma função desde o início: a função de impressão. As funções em Lua têm alguns recursos bastante interessantes. O mais notável é provavelmente a capacidade de retornar vários valores de uma função. As definições de função são simples. Vamos definir um que utiliza loops.

 function say(msg) 
if msg == nil then msg = "Hello!" end 
return msg, os.date()
end      -- required!

Este exemplo trivial traz alguns pontos-chave a serem discutidos.

Primeiro, quando a função é chamada sem um argumento, ela executa e retorna a string “Hello!” mais a data atual sem erros. Quando os argumentos são omitidos, nil é usado para os valores dos parâmetros. A função retorna o valor dos argumentos passados ​​e a data, quando chamada com argumentos. Observe como a função retorna vários valores. É realmente um recurso único que você pode querer aproveitar.

Como uma linguagem multiparadigma, há muitos aspectos da linguagem que merecem ser explorados; no entanto, nem todos podem ser abordados aqui. Lua é muito fácil. A sintaxe é extremamente simples. Com os conceitos abordados aqui, você deve ser capaz de escrever algumas funções úteis em Lua. O site oficial fornece um livro gratuito e algumas boas informações para você se enraizar na linguagem. Espero que Lua se torne outra linguagem em sua caixa de ferramentas, se já não for.

Leia também: Bored Ape Yacht Club: O que é e por que é tão caro?
brayan

Brayan Monteiro

Bacharel em Sistemas de Informação pela Faculdade Maurício de Nassau e desenvolvedor PHP. Além de programador, produzo conteúdo e gerencio blogs. Sou especialista em desenvolvimento de software e SEO de sites.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *