J é uma linguagem de programação, desenvolvida no início dos anos 90 por Kenneth E. Iverson e Roger Hui. 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.
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: Iverson. A Personal View of APL. Introduction. 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.
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: assert. break. continue. for. goto_label. if. else. elseif. return. select. case. throw. try. catch. while. whilst.
Categoria:Linguagens de programação