Olá, Mundo!
Agora que Pop está instalado, é hora de escrever seu primeiro programa. Manteremos a saudação tradicional, mas deixaremos a rc.3 mostrar um pouco de personalidade.
Este livro usa comandos de terminal em seus exemplos, mas Pop não exige um editor específico. Use o editor ou a IDE com que você se sentir mais à vontade.
Criando um diretório de projeto
Seção intitulada “Criando um diretório de projeto”Primeiro, crie um diretório para os programas que você escreverá durante a leitura deste livro. Depois, crie um diretório para o programa Olá, Mundo:
mkdir -p ~/pop-projects/hellocd ~/pop-projects/helloArquivos-fonte de Pop usam a extensão .pop. Crie um arquivo chamado hello.pop, abra-o em seu editor e digite o programa da Listagem 1-1.
namespace Hello
function main() local release = "0.1.0-rc.3" print(`🫧 Olá de Pop {release}!`) print("Tipos fortes. Código nativo. Sintaxe pequena.")endListagem 1-1: Um pequeno programa de boas-vindas da rc.3
Salve o arquivo e volte ao terminal. Confirme que ainda está dentro do diretório hello e execute:
pop run hello.popVocê deve ver:
🫧 Olá de Pop 0.1.0-rc.3!Tipos fortes. Código nativo. Sintaxe pequena.Se você vir essas linhas, parabéns! Você escreveu e executou seu primeiro programa Pop.
Anatomia de um programa Pop
Seção intitulada “Anatomia de um programa Pop”Vamos examinar o programa, uma parte de cada vez. A primeira linha é:
namespace HelloUm namespace dá um nome ao código de um arquivo. Todo arquivo-fonte de Pop começa com uma declaração de namespace. Chamamos este de Hello, mas um programa maior poderia usar nomes como Game, Store.Payments ou MyApp.Users.
Em seguida, temos:
function main()
endEssas linhas definem uma função chamada main. Uma função é um grupo nomeado de instruções. main é especial porque Pop inicia um programa executável executando essa função.
Os parênteses depois de main são o lugar onde uma função recebe valores de quem a chama. Este programa não precisa de nenhum valor, portanto os parênteses estão vazios. A palavra-chave end marca o fim da função.
Dentro de main, primeiro armazenamos o nome da versão em um valor local:
local release = "0.1.0-rc.3"Pop infere que release tem o tipo String. A próxima linha usa interpolação com crases para colocar esse valor dentro de uma string maior:
print(`🫧 Olá de Pop {release}!`)print exibe o texto resultante no terminal. A interpolação é um dos novos recursos de string da rc.3; um capítulo posterior aborda suas regras exatas. O segundo print mostra que strings comuns entre aspas duplas continuam sendo a escolha mais simples para textos fixos.
Observe que Pop não usa ponto e vírgula no fim dessas linhas. A indentação torna o programa mais fácil de ler, enquanto end informa a Pop onde a função termina.
Não se preocupe em memorizar todos os termos ainda. Retomaremos funções, argumentos, strings e namespaces à medida que construirmos programas maiores.
Verificando um programa
Seção intitulada “Verificando um programa”O comando run verifica o código-fonte, gera-o e inicia o programa resultante. Às vezes, você quer apenas verificar se o código-fonte é válido. Para isso, use pop check:
pop check hello.popQuando o programa é válido, esse comando termina sem imprimir nada. Tente remover o end de fechamento e executar o comando novamente. Pop informará onde esperava que a função terminasse. Restaure end antes de continuar.
Gerando um executável
Seção intitulada “Gerando um executável”Você também pode compilar o programa sem executá-lo:
pop build hello.pop --output helloIsso cria um executável chamado hello. Execute-o diretamente:
./helloEle imprime o mesmo resultado:
🫧 Olá de Pop 0.1.0-rc.3!Tipos fortes. Código nativo. Sintaxe pequena.Pop é uma linguagem compilada antecipadamente. O comando build transforma seu arquivo-fonte em um executável nativo que pode ser executado depois. Nos primeiros capítulos, normalmente usaremos pop run, pois ele mantém curto o ciclo de editar e executar.
Em seguida, alteraremos este programa para que ele possa receber informações da linha de comando.
