An Interest In:
Web News this Week
- April 19, 2024
- April 18, 2024
- April 17, 2024
- April 16, 2024
- April 15, 2024
- April 14, 2024
- April 13, 2024
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
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To