J (linguagem de programação)
J | |
---|---|
Criado por | Kenneth E. Iverson, Roger Hui |
Influenciada por | APL |
Plataforma | Multiplataforma (Windows, GNU/Linux, Mac OS X) |
Licença | GPLv3 |
Página oficial | www.jsoftware.com |
J é uma linguagem de programação, desenvolvida no início dos anos 90 por Kenneth E. Iverson e Roger Hui.[1][2][3]
Após se aposentar, Iverson voltou-se a seu principal objetivo com APL: desenvolver uma notação simples, precisa e executável para o ensino de um ampla gama de assuntos. Determinou que a ferramenta essencial deveria ser um dialeto de APL com quatro requerimentos:[4]
- Estar disponível como shareware e ter custo acessível a estudantes e escolas;
- Poder ser impressa em impressoras comuns;
- Rodar em uma ampla variedade de computadores; e
- Proporcionar a simplicidade e generalidade do mais recente pensamento em APL.
Com basicamente os mesmos objetivos de APL e o mesmo idealizador, J usa um teclado e sistema de caracteres comum.
Diferentemente da maioria das linguagens de programação que têm suporte para orientação a objeto, o esquema flexível de namespaces do J (em que todo nome existe em um local específico) pode ser usado efetivamente como um framework para as programações orientadas a objeto baseadas tanto em classes quanto em protótipos.
Desde de Março de 2011, J tornou-se um software livre e de código aberto sob a licença GPLv3. Também se pode comprar o código fonte para uso comercial sob uma licença negociada.[5]
Exemplos
[editar | editar código-fonte]O Programa Olá Mundo em J é:
'Olá, mundo!'
O exemplo seguinte calcula a média aritmética dos elementos de um vetor.
A função media
é definida =:
como o somatório +/
dividido %
pelo número de elementos #
:
media =: +/%#
media 2 2 3 3 NB. retorna 2.5
Para somar 1 aos elementos do vetor y
que forem pares:[4]
y + 0 = 2 | y
Para dobrar todos os elementos de y
que forem pares:
y * 1 + 0 = 2 | y
Uma de diversas[5] maneiras de se gerar uma matriz identidade:
MI =: e. @ i. NB. Define função MI
MI 5 NB. Gera matriz identidade 5×5
Estrutura de controle
[editar | editar código-fonte]J fornece estruturas de controle similares às de outras linguagens procedurais. Algumas instruções proeminentes em cada categoria incluem:[6]
assert.
break.
continue.
for.
goto_label.
if. else. elseif.
return.
select. case.
throw.
try. catch.
while. whilst.
Referências
- ↑ Iverson, K.E. «A Personal View of APL» (em inglês). Consultado em 5 de Março de 2016. Arquivado do original em 12 de agosto de 2004
- ↑ [1] WHITNEY, Arthur. (Código-fonte do primeiro interpretador de J, escrito em linguagem C.) 1989.
- ↑ [2] HUI, Roger K.W. An Implementation of J. Presented at the Jsoftware Conference 2012, 2012-07-23.
- ↑ [3] Iverson. A Personal View of APL. Introduction.
- ↑ «J Source» (em inglês). J Software. Consultado em 5 de Março de 2016
- ↑ «Control Structures» (em inglês). J Software. Consultado em 5 de Março de 2016