APL

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa
Question book-4.svg
Esta página ou secção cita fontes confiáveis e independentes, mas que não cobrem todo o conteúdo, o que compromete a verificabilidade (desde janeiro de 2014). Por favor, insira mais referências no texto. Material sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)
APL
Surgido em 1964
Criado por Kenneth Iverson
Estilo de tipagem: dinâmica
Compiladores IBM APL2
Influenciada por Notação matemática
Influenciou A+, J, K, MATLAB, entre outras

APL é uma linguagem de programação destinada a operações matemáticas.

Ela nasceu do trabalho do professor de matemática canadense Kenneth Iverson. A linguagem APL foi formalmente definida e introduzida por Iverson em seu livro A Programming Language de 1962.[1] [2] Sua proposta original era a de produzir uma nova notação matemática, menos sujeita às ambigüidades da notação convencional. Segundo Iverson, foi projetada com o objetivo de ser matematicamente concisa.

Na década de 1960, trabalhando na IBM em conjunto com Adin Falcoff, ambos produziram a primeira versão de APL, quando um interpretador da linguagem ficou disponível.

APL tem diversos dialetos, mas há uma versão padronizada pela ISO/IEC 13751:2001.[3]

Programas em APL em geral sempre são muito pequenos, embora poderosos. A linguagem está preparada para tratar arranjos de grandes dimensões. Por exemplo, quando em APL se escreve A+B, se A e B forem escalares (isto é um número único), a resposta também o será. Se A e B são vetores de 100 números, a resposta também o será. Idem para matrizes e até arrays-nd. Em algumas versões de APL este n chega a 256 dimensões.

O Conjunto de Caracteres APL[editar | editar código-fonte]

A principal característica de APL é o uso de um conjunto especial de caracteres que incluem algumas letras gregas (rho, iota…), símbolos matemáticos convencionais (o sinal de vezes, o de dividido…) e alguns símbolos especialmente inventados. Este fato sempre limitou a disseminação da linguagem. Até o advento das interfaces gráficas (windows, por exemplo), exigia-se um hardware especial para poder programar em APL.

A linguagem APL recebeu muitas críticas pelo fato de usar este conjunto de caracteres não padronizado. Tal número de caracteres adicionais pode levar a um grau de complexidade alto resultando em uma baixa legibilidade. Por outro lado, o conjunto adicional de caracteres dá a linguagem uma elegância e a tornam concisa, o que é mais difícil de se conseguir em linguagens com um conjunto de caracteres reduzido.

A dificuldade criada pelos caracteres especiais de APL foi um dos motivos para que, ao conceber a linguagem J no início dos anos 1990, Kenneth E. Iverson (criador de APL), decidisse nela usar apenas caracteres convencionais ASCII.[4]

O padrão Unicode contém os símbolos de APL (códigos de u2336 a u237A e u2395) no bloco Miscellaneous Technical.[5]

Expressões idiomáticas[editar | editar código-fonte]

Ao estudar os processos de leitura e escrita de programas em APL, Alan J. Perlis e Spencer Rugaber notaram que certas expressões se repetiam em diversos contextos. Tais expressões são chamadas em inglês de 'idioms' (expressões idiomáticas). Uma vez aprendidas, essas expressões passam a ser reconhecidas como uma unidade, dispensando a necessidade de se analizá-las caracter por caracter. Por isso, os autores defendem que expressões idiomáticas em APL devem ser ensinadas desde o início da experiência com essa linguagem.[6] [7] [8]

Símbolos APL e os Layouts de Teclado[editar | editar código-fonte]

Para solucionar o problema da falta de caracteres especiais nos conjuntos padrão (como o ASCII, por exemplo) alguns interpretadores APL tem mapeamentos ou conjuntos de teclas simultâneas para a entrada destes. Uma das associações que se procurou fazer, para facilitar a busca, é relacionar os símbolos com as suas respectivas letras iniciais como no caso do símbolo de interrogação '?' em cima da letra 'Q' (Em inglês question mark) ou o símbolo '∇' em cima da letra 'G' (Em inglês: gradient). As figuras abaixos ilustram dois exemplos de teclados com os símbolos APL e APL2:

APL-keybd2.svg
APL2-nappaimisto.png

Exemplos de código[editar | editar código-fonte]

Função Fatorial[editar | editar código-fonte]

Este código é apenas para exemplo, pois APL já contém em si a função fatorial (!).

Versão longa:

      ∇ FATORIAL [⎕]∇
    ∇ Z ← FATORIAL N
[1]   → (N ≠ 0) / A
[2]   → 0,Z ← 1
[3]  A:Z←N×FATORIAL(N-1)
    ∇

Versão curta:

∇ Y ← FATORIAL X
  Y ← ×/ ⍳X
∇

Exemplo usando função direta (GNU APL):

 FATORIAL ← { ×/⍳⍵ }

Soma dos Elementos de um Vetor[editar | editar código-fonte]

Versão longa:

[10]  VETOR ← 10 ⍴ 1 2 3 4 5 6 7 8 9 10
[11]  SOMA ← 0
[12]  I ← 1
[13] VOLTA: → (I > ⍴VETOR) / SAI
[14]  SOMA ← SOMA + VETOR[I]
[15]  I ← I + 1
[16]  → VOLTA
[17] SAI:

Versão curta:

SV ← {+/⍵}    ⍝ define função ''inline''

SV 1 2 5 6    ⍝ executa-a com o vetor [1, 2, 5, 6] (deve retornar 14)

Soma dos Elementos de um Vetor e Calculo da média sem loop[editar | editar código-fonte]

[10]  VETOR ← ⍳10
[11]  SOMA ← +/VETOR
[12]  MEDIA ← SOMA ÷ ⍴VETOR

Média dos elementos de um vetor com qualquer número de elementos, inseridos via teclado em tempo de execução[editar | editar código-fonte]



[1]  (+/x)÷⍴x←⎕

Implementações[editar | editar código-fonte]


Referências

  1. Iverson, Kenneth (1962). A Programming Language. [S.l.: s.n.] 
  2. TUCKER Jr., Allen B. (1986). Programming Languages 2ª ed. New York: McGraw-Hill. 590 páginas. ISBN 0-07-065416-6 
  3. http://www.math.uwaterloo.ca/~ljdickey/apl-rep/docs/is13751.pdf
  4. [1]
  5. [2]
  6. [3]
  7. [4]
  8. [5]

Bibliografia[editar | editar código-fonte]

  • IVERSON, Kenneth E. (1962). A Programming Language. New York: John Wiley and Sons. 286 páginas. ISBN 0-47143014-5 
  • TUCKER Jr., Allen B. (1986). Programming Languages 2ª ed. New York: McGraw-Hill. 590 páginas. ISBN 0-07-065416-6 
  • ZIMMERMANN, Carlos Jorge (1981). Processamento Interativo: a Linguagem de Programação APL. Rio de Janeiro: LTC. ISBN 85-216-0138-7