Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 14, 2022 09:43 pm GMT

Voc conhece APL?

AVISO! Esse artigo contm exemplos de cdigo. Se voc quiser rod-los, copie e cole as linhas identadas direita (as linhas identadas esquerda so os resultados) nesse site: https://tryapl.org

APL uma linguagem com certeza mais velha que muitos dos desenvolvedores de hoje em dia. Criada em 1966 por Kenneth E. Iverson, uma das linguagens mais antigas ainda em uso hoje (mais velha que C, a propsito, e do que B tambm!).
Olhando um cdigo APL, no entanto, voc pode ter vrias sensaes. Uma comum de que existe algum problema de encoding te impedindo de ler o que est escrito. De qualquer maneira, sua sintaxe no se parece nada com as linguagens de sua poca, ou de hoje em dia.
Exemplo de programa em APL:

 mdia aritmtica de uma lista(+/)w

Esse um programa que te retorna a mdia aritmtica de uma lista (w a lista).
Mas, cad o loop para somar todos os elementos? E a diviso dessa soma pelo tamanho da lista?

Essa a magia de APL. Originalmente significando "A Programming Language", nome inspirado no livro que a introduziu, teve seu nome ressignificado para "Array Programming Language", justamente porque suas construes funcionam com dados de qualquer dimenso.

Opa, pera, mas como assim dimenso? Vem comigo!

Mas antes, um porm sobre a interpretao dos smbolos. Ao contrrio da maior parte das linguagens de programao, APL interpretada da direita para a esquerda.

Ou seja, a expresso 10 - 5 - 2, em matemtica tradicional, resultaria em 3. Mas em APL

      10 - 7 - 25

Porque primeiro foi computado 7 - 2, resultando em 5, e depois 10 - 5, resultando tambm em 5.

Agora sobre as dimenses.

Dimenses

Vejamos uma varivel aqui

       definindo uma varivel      a2      a2

(ah, sim, variveis no recebem seu valor usando =, mas sim usando . Voc acostuma rpido)

A varivel a tem uma dimenso de 0, porque um valor nico. Voc pode verificar a dimenso de uma varivel usando (no so duas letras 'p', mas sim duas letras gregas r).

       nmero de dimenses de uma varivel escalar      a0

Se fosse uma lista, a dimenso seria 1.

       nmero de dimenses de uma lista      a1 2 3 4 5      a1

Beleza. Agora vamos somar dois valores escalares, nome de valores de dimenso 0, e duas listas (dimenso 1).

       soma entre dois escalares e duas listas      a1      b2      a+b3      a1 2 3 4 5      b6 7 8 9 10      a+b7 9 11 13 15

Note que a sintaxe a mesma para somar escalares ou listas.
sobre isso que falo quando digo que as construes de APL so feitas para funcionar com diferentes dimenses. Por isso o exemplo da mdia aritmtica acima no precisa de loop. O loop intrnseco linguagem.

T, mas e da?

Claro, muito legal isso, mas e da? Por que eu usaria essa linguagem quando eu poderia fazer a mesma coisa com outra?

H uma srie de vantagens em usar APL, principalmente se voc precisa lidar com muitos dados (arrays).

Vamos pegar um exemplo do Advent of Code de 2021.
Se voc quiser ler todo o problema, accesse aqui

Problema
H uma lista de leituras de profundidade do oceano e voc precisa contar quantas vezes a profundidade aumenta. Ou seja, das leituras, deve-se contar toda vez que uma leitura maior que a anterior.

Vamos fazer uma soluo em Java (sem todo o boilerplate, embora ele exista)

public int contarDescidas(int[] leituras) {    int leituraAnterior = 0;    int totalDescidas = 0;    for(int i = 0; i < leituras.length; i++) {        if(leituras[i] > leituraAnterior) {            totalDescidas++;        }        leituraAnterior = leituras[i];    }    return totalDescidas;}

Agora em APL

{+/0>2-/}leituras

Isso que eu nem me preocupei em como os dados seriam de fato lidos, o que toda uma parada complicada no Java, e em APL isso aqui

leituras1NGET'arquivo'1

Parece complicado mas muito claro quando se conhece o que cada smbolo faz.

Concluso

O objetivo desse artigo foi dar um gostinho do que APL capaz. Eu no tenho nem de longe a expertise de outras pessoas que podem falar mais sobre essa linguagem.

Uma delas o Rodrigo Giro Serro. Ele um desenvolvedor portugus que est trabalhando para reescrever o livro "Mastering Dyalog APL" (Dyalog APL uma implementao da linguagem). O canal dele no YouTube esse aqui
O canal code_report tambm faz vdeos comparando APL com outras linguagens. Link aqui.

Se voc quiser j mergulhar no mundo da APL, pode ler online de maneira gratuita o livro "Mastering Dyalog APL", a verso antiga ou a verso nova (ainda em fase de desenvolvimento).

isso ento. Espero que vocs tenham gostado. At mais!


Original Link: https://dev.to/patriciavillela/voce-conhece-apl-24b6

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To