*/>:i.5 (J é russo?)

Pensei em criar um novo blog, mas como o assunto será diretamente ligado com imagens, resolvi deixar por aqui mesmo.

As imagens que vemos são na realidade mapas de bits, isto é, uma estrutura retangular formada por pixels na horizontal e na vertical. Um arquivo jpg (ou outro formato) não será visível até ser convertido para um bitmap e jogado na tela do computador. Na maioria das linguagens de programação, é normal a utilização de laços para a interação entre cada pixel para a aplicação de tratamento desejado ou obtenção de outras informações. Como essa estrutura é uma matriz, pode ser lógico a utilização de uma linguagem orientada a matrizes para a interação com uma imagem. Como cada pixel é composto por cores primárias (vermelho:R, verde:G e azul:B), a estrutura mais racional seria uma matriz tridimensional.

Aí vem a brincadeira para escolher a linguagem de programação. A opção mais lógica seria APL. Como poderemos ter problemas para conseguir um interpretador gratuito e ainda temos o inconveniente do teclado utilizado qwert, a outra opção seria uma linguagem que pudesse utilizar o nosso teclado sem maiores problemas. A minha opção recaiu sobre J. Podemos utilizar no Linux, Windows e Mac sem maiores preocupações. A opção recaiu ainda sobre a versão j602 pois possui uma inteface gráfica que pode facilitar no aprendizado.

Para quem está acostumado com linguagens mais ‘convencionais‘, olhar um programa escrito em APL, J e outras parece Russo. Na realidade é. Se olharmos a palavra ‘Промежуточные‘ (não pergunte o que significa) também não teremos noção do seu significado (nem sei se pode ser utilizada isoladamente). Mas para quem conhece o idioma, ela possui um significado claro. Existem livros, filmes, música e tudo mais em Russo. Então, basta aprender russo que as coisas começam a fazer sentido e vão ficando claras. Para alguém que não conhece, uma expressão do tipo ‘b,(c,d),e=1,2,3,4‘ também não fará o menor sentido. Qual o resultado de ‘b,(c,d),e=1,2,3,4‘ e ‘*/>:i.5‘ , considerando que o primeiro exemplo é em Ruby e o segundo em J? Se você conhece, os dois são perfeitamente legíveis e não é necessário mais do que alguns segundos para dizer o resultado. Caso contrário, não terá respostas para nenhuma das duas proposições.

A primeira coisa para começar com J é baixar a versão j602 para o seu sistema e efetuar a instalação. Depois é só executar o programa ‘jwd‘ e começar a brincar. Mas antes, vamos ver a expressão ‘*/>:i.5‘ :

  • Primeiro devemos saber que a avaliação das expressões se dá da direita para a esquerda, então
  • 5 é um número (números não iniciam com ‘.’)
  • i.y retorna os inteiros entre 0 e y como uma matriz de uma dimensão (lembre tudo é matriz), portanto i.5 retorna 0 1 2 3 4
  • >: irá incrementar os valores a sua direita(>:1 = 2) e é aplicado a lista retornando 1 2 3 4 5
  • / indica para inserir o verbo que está a esquerda entre os elementos da matriz (lista). Como o verbo é * (multiplicação), o resultado será: 1*2*3*4*5
  • Então, o resultado será 120. É possível associar com o fatorial de 5 (5!). Em lisp poderia ser (* 1 2 3 4 5). Como em qualquer linguagem, é possível obter o mesmo resultado de outas formas e, se eu desejasse o fatorial de 5, eu escreveria !5 que seria mais simples.

Algumas linguagens são interessantes aprender pois induzem a pensar de forma diferente e, consequentemente, novas soluções para os problemas são potencializadas. Certamente J é uma delas. Da mesma forma, o ambiente pode ser utilizado para a prototipação e/ou como suporte para o seu programa, pela sua concisão. Aquela arma secreta.

Executando o jwd (j.exe no Windows), uma das primeiras coisas a fazer seria acessar pelo menu a opção Studio/Labs, que dá uma visão geral da linguagem (basta pressionar Ctrl+J para ir avançando as lições e ainda permite efetuar testes diretamente no ambiente de trabalho). A opção Studio/Demos possui alguns exemplos que também devem ser vistos.

Por enquanto, fico por aqui.

Anúncios

3 opiniões sobre “*/>:i.5 (J é russo?)

  1. Pingback: Utilizando J em imagens (parte 2 de n) « Fotomix’s Weblog

  2. Pingback: Mais um pouco de J « Fotomix’s Weblog

  3. Pingback: Utilizando J em imagens (parte 3 de n) « Fotomix’s Weblog

Os comentários estão desativados.