O tempo de execução do JavaScript é de thread único, o que o torna impossível para operações críticas de desempenho. Embora você possa implementar multi-threading em seu código, ainda há a necessidade de uma linguagem de programação que aproveite o multithreading por padrão.

O que é Clio?

É aqui que entra o Clio . De acordo com o documentação , a linguagem de programação Clio fornece suporte pronto para uso com vários núcleos. Isso significa que ele pode ser executado na nuvem e em clusters sem problemas.

Além disso, o Clio compila seu código em JavaScript, portanto, se sua máquina pode executar JavaScript, ela é definitivamente capaz de executar o código Clio sem problemas.

Primeiros passos com Clio

Executando o código Clio

Clio tem um instalador , mas não funciona corretamente no momento . Por esse motivo, usaremos o compilador online para este artigo.

Clio Playground

Criação do aplicativo “Hello World”

No Clio Playground, escreva o seguinte trecho de código:

 export fn main: console.log"Olá, mundo!"

Na linha 1, crie o método main . Assim como outras linguagens de programação, Clio requer um método main . No final, usaremos a palavra-chave export para exportar esta função. Isso o torna capaz de ser executado.

Agora, execute o código. Este será o resultado:

Hello World Result

Ótimo! Nosso código funciona. Vamos agora aprender os fundamentos do Clio.

Declarando constantes em Clio

Para declarar uma constante, você deve usar a seguinte sintaxe:

 => 

Você pode declarar uma string, assim:

"LogRocket"=> websiteName

Isso atribui o valor “LogRocket” à variável com o nome websiteName .

Da mesma forma, você pode declarar um inteiro e um booleano:

 9=> numeroNove
10> 3=> resultado

Primeiro, criamos uma variável com o nome numberNine e atribuímos a ela o valor 9 . Então, criamos uma variável chamada resultado . O número 10 é maior que 3? Em seguida, atribua a ele o valor false .

Para exibir essas constantes na linha de comando, escreva o seguinte código:

 export fn main: 9=> numeroNove 10> 3=> resultado "LogRocket"=> websiteName console.log numberNine resultado console.log console.log websiteName console.log f"O nome do site é: {websiteName}"

Nas linhas 5 a 7, exibimos os valores das variáveis ​​que declaramos anteriormente e, em seguida, exibimos uma string e acrescentamos o valor de websiteName no final. Este será o resultado:

Resultado do nome do site

Ótimo! Nosso código funciona.

Declarando funções no Clio

Para declarar uma função, use a seguinte sintaxe:

 fn    

Por exemplo, este trecho de código multiplica dois números e retorna um valor:

 fn multiplica a b: a * b

Aqui, declaramos uma função chamada multiply que recebe dois argumentos, a e b , e então multiplicamos a e b e retorna o resultado.

Você pode até usar console.log em suas funções.

 fn multiplica a b: console.log a * b

Isso desconecta o resultado de a * b .

Para chamar essas funções, escreva o seguinte código:

 fn multiplica a b: a * b export fn main: multiplique 4 8-> console.log

Agora, vamos usar nossa função multiplicar e registrar o resultado no console. Aprenderemos sobre a sintaxe do piping () mais tarde. Execute o código. Este será o resultado:

Multiply Function Result

Se a sua função não retornar um valor, você pode utilizar o seguinte snippet:

 fn multiplica a b: console.log a * b export fn main: multiplique 4 12

Isso invoca a função multiply , que fará logout do resultado no console.

Esta é a saída do código:

Código de saída

Voila! O resultado saiu conforme o esperado. Na próxima seção, aprenderemos sobre as instruções if e else .

Comparações entre vários valores

Esta é a sintaxe para instruções if/else .

 se : 
else if : 
senão: 

Como exemplo, vejamos o seguinte trecho de código:

 fn é igual a a b: se a> b: console.log f"{a} é maior que {b}" else if a=b: console.log f"{a} é igual a {b}" senão: console.log f"{a} é menor que {b}" export fn main: é igual a 40 10 é igual a 10 40 é igual a 10 10

Observe que primeiro criamos uma função chamada equals , que recebe dois argumentos, e depois comparamos se a é maior que b . Em caso afirmativo, envie uma mensagem adequada. Em seguida, execute uma instrução else if para verificar se a e b são iguais. Caso contrário, informe ao usuário que a é menor que b .

Finalmente, execute a função equals com conjuntos de dados diferentes. Este será o resultado:

Equals Function Output

Ótimo! Nosso código funciona. Agora vamos nos aprofundar em tópicos mais avançados.

Mergulhando cada vez mais no Clio

Usando fluxos

Anteriormente, usávamos a sintaxe de piping (). Nesta seção, aprenderemos sobre a sintaxe dos fluxos.
O operador de tubulação é usado para transferir os resultados de uma função para outra função.

Observe o seguinte snippet:

 fn isBigger a b: a> b
export fn main: isBigger 10 20-> console.log

Isso cria uma função chamada isBigger que informa se o primeiro número é maior do que o segundo número. Vá em frente e execute a função isBigger . O resultado de isBigger ( false ) é então transferido para o método console.log . Como resultado, false é exibido na tela

False Output

Você também pode encadear várias chamadas de função. Este código primeiro cria três funções, invoca a função add e transfere o resultado deste método para o método square . Finalmente, ele transfere o resultado de square para console.log .

Observe que você pode até aplicar sintaxe de piping com recuo para tornar seu código mais legível.

 fn add a b: a + b fn quadrado a: a * a fn subtrair a b: a-b export fn main: adicione 5 5-> quadrado-> console.log quadrado 5 -> subtrair 100 -> console.log

Obteve saída de 3,98ms

Declaração de matrizes no Clio

Para declarar uma matriz e imprimi-la, use a seguinte sintaxe:

 [  ]=> 
console.log 

Por exemplo:

 export fn main: ["LogRocket""FreeCodeCamp""YouTube"]=> sites [2 3 4]=> inteiros [true false false]=> booleanValues sites console.log console.log inteiros console.log booleanValues

Vamos criar uma matriz chamada sites que possui valores de string, criar uma matriz chamada inteiros , que recebe inteiros e, em seguida, criar uma matriz chamada booleanValues ​​, que contém valores booleanos.

Saída de valores booleanos

Ótimo! Agora vamos aprender como mapear valores em uma matriz.

Matrizes de mapeamento

No Clio, para mapear funções para matrizes, temos que usar os símbolos e * . Este trecho de código imprime todos os itens da matriz:

 export fn main: ["LogRocket""FreeCodeCamp""YouTube"]=> sites sites-> * console.log

Observe que isso usa o * para dizer ao Clio para aplicar a função em cada item do array. Na linha 4, efetuamos logout dos itens no console. Aqui está o resultado.

Sair de saída de itens
Vamos brincar mais com a sintaxe do piping. Podemos até adicionar várias funções, como:

 fn add a b: a + b
fn quadrado a: a * a export fn main: [2 3 4]=> inteiros inteiros-> * quadrado -> adicionar 1 -> console.log

Aqui, criamos duas funções chamadas a e b e uma matriz inteiros , e informamos ao Clio que a função será executada a cada item na matriz.

A partir da linha 10, aplicamos o método square nos itens e, em seguida, transferimos o resultado do método square para a função add . Isso aumentará o resultado.

Resultado incrementado

Declaração de mapas de hash

Eles são semelhantes aos objetos JavaScript. Para declarar um mapa hash, use a seguinte sintaxe:

 # :  : => 

Por exemplo:

 export fn main: # nome:"Hussain"idade: 19=> informações informações de console.log console.log information.name console.log information.age

Este bloco de código cria um mapa hash chamado informações que possui duas propriedades: nome e idade . Em seguida, ele efetua logout do valor do objeto information e de suas propriedades individuais. É assim que se parece:

Information Object Value

Agora terminamos esta seção.

Conclusão

Embora o Clio ainda esteja em beta no momento em que este livro foi escrito, ele tem um uso de sintaxe decente que incentiva o código limpo. Além disso, o fato de ele suportar operações multithread por padrão significa que ele será um candidato viável para aplicativos de desempenho crítico no futuro.

Clio parece ser uma linguagem de programação promissora e espero que a equipe de desenvolvimento lance uma compilação estável em um futuro próximo para que possa ser usada em ambientes de produção.

Muito obrigado por ler!

A postagem Introdução ao Clio lang: Envie JS de desempenho crítico com facilidade apareceu primeiro no LogRocket Blog .