J (linguagem de programação)
J é uma linguagem de programação, desenvolvida no início dos anos 90 por Kenneth E. Iverson e Roger Hui.[1][2][3]
| 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 |
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
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:
y + 0 = 2 | y
Para dobrar todos os elementos de y que forem pares:
y * 1 + 0 = 2 | y
Uma de diversas 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
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
- WHITNEY, Arthur. (Código-fonte do primeiro interpretador de J, escrito em linguagem C.) 1989.
- HUI, Roger K.W. An Implementation of J. Presented at the Jsoftware Conference 2012, 2012-07-23.
- 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