J ou K?

Introdução

Depois que eu algumas formas de calcular o fatorial usando K , alguns amigos do Facebook queriam desesperadamente saber qual das duas linguagens eu preferia. Na realidade, não era desesperadamente. Apenas uma curiosidade. E também não eram todos os meu amigos, apenas os que trabalhavam com TI. Bem, nem todos que trabalhavam com TI. Só um pouquinho. Vou lá no face para saber quantos amigos queria a minha opinião. Tec, tec, tec…. Pô, nenhum. Acho que foi um sonho.

Então tá. Como ninguém queria saber, vou escrever mesmo assim. Quem sabe …. algum dia ….

Bem, K é comercializado pela Kx Systems  e foi feita uma versão aberta de K conhecida como kona. Mas é só uma parte do todo. A empresa Kx permite baixar a versão de 32bits do sistema que não pode ser utilizada em sistemas comerciais. Baseado apenas nisso, já posso dizer que a minha preferência é por J, que é uma versão completa, foi desenvolvida por Kenneth E. Iverson (desenvolvedor da APL), tem a versão GPL (inclusive é possível baixar os fontes).

A linguagem

Existem diferenças entre uma e outra linguagens, mas nada de muito anormal. No exemplo do fatorial em K foram usados dois exemplos para gerar a lista. Um era 1+!5 (gera a lista 0 1 2 3 4) e adiciona 1 e o exemplo 1_!6 (gera a lista 0 1 2 3 4 5 6), retira o primeiro elemento e fica com os restantes. Em J, os equivalentes seriam 1+i.5 (1 + 0 1 2 3 4 = 1 2 3 4 5) e }.i.6 (0 1 2 3 4 5 = 1 2 3 4 5). Existem outras variantes possíveis como, por exemplo, >:i.5 (gera a lista e incrementa os elementos). Em qualquer caso de J, precede-se */ para inserir a multiplicação entre os elementos da lista (*/>:i.5 => 0 1 2 3 4 5 => 1 2 3 4 5 => 1 * 2 * 3 * 4 * 5).

Já vem com diversas bibliotecas para facilitar o trabalho e ainda podemos instalar outras tantas, facilitando tarefas como a geração dos mais diversos tipos de gráficos, trabalhar com web, arquivos, sgbds, etc..

Ambiente.

Existem três ambientes onde podemos trabalhar com J.

Console

É o mais básico e é possível fazer de tudo mas, provavelmente, não será utilizado para muita coisa. Só para executar algum programa em J ou pequenos testes. Para não causar conflito com o jconsole do java, uma opção é criar um link simbólico. Aqui, /usr/bin/jc aponta para /home/zilog/j64-804/bin/jconsole. Não é necessário ser administrador para instalar o J.

jqt

Muito bom para você fazer testes, administrar o sistema e criar projetos. Inicialmente apresenta uma janela como o do terminal (jconsole) porém, existem diversos programas e funções que podem ser acessadas pelo menu para facilitar o desenvolvimento e consulta. É uma janela mais ou menos assim:

jqt

Em Tools/Package Manager, existe um utilitário para gerenciar os pacotes. Você poderá instalar/atualizar os diversos pacotes existentes para a linguagem. Como não ocupam muito espaço, pode instalar todos (até porque alguns exemplos necessitam).

package

Em File, além de outras coisas como imprimir, é possível editar arquivos. Com Ctrl+N ou File/New Temp, você pode digitar e executar linhas, blocos ou todo o arquivo e salvar para uso posterior.

qeditNo menu Help, temos toda uma gama de informações para auxiliar o usuário no desenvolvimento e ainda uma série de exemplos que podem servir de base para outros programas. Em Help/Studio/Labs, existe uma série de tutoriais interativos. O usuário pode selecionar um assunto e, ao executar, os diversos capítulos e seções serão executados no terminal. Após mostrar uma seção, o usuário deverá pressionar Ctrl+J para prosseguir depois de ler e entender (bem, não é necessário nem possível entender tudo). Antes de pressionar Ctrl+J, é possível entrar com comandos com valores diferentes para melhorar o entendimento. A janela para escolher entre oa diversos tutoriais:

lab1

Exemplo da execução do tutorial (note que também é possível avançar utilizando o menu mas Ctrl+j é muito mais simples).

lab2Outra opção interessante é Help/Studio/Showcase…, que possui diversos programas que podem ser executados e podem ser vistos os fontes para análise.

demojO programa plot é um bom começo para mostrar a grande quantidade de gráficos bi e tri dimensionais que o J permite.

demoj1Também temos a opção Help/Studio/Qt Demos… que possui exemplos de como utilizar os diversos controles do QT com os programas, entregando uma interface gráfica para facilitar a vida do usuário.

demoqt

jhs

É um servidor que possibilita a interação com J por um navegador. Vem configurado para aceitar apenas conexões de localhost (127.0.0.1) mas é possível editar o arquivo j64-804/addons/ide/jhs/config/jhs_default.ijs (troque o j64-804 pelo caminho da sua instalação) e alterar a variável BIND de localhost para any para aceitar de qualquer dispositivo (neste caso, por motivos de segurança, é necessário especificar senha para acesso). Após executar ./j64-804/bin/jhs, temos um resultado como o que segue:

jhs1

Agora é só usar o seu navegador, abrir o endereço especificado e brincar. Para encerrar o servidor, digite exit”.

jhs2

jupyter

Mas não eram três? Sim, mas este não conta. Ainda está em desenvolvimento e está muito relacionado com python. Interessante por permitir gravar a sessão para visualização futura. Outras informações em jkernel.

Anúncios