Pular para o conteúdo

Scilab diz: “Hello Cantor!”

…e também faz cálculos!

Nestas últimas semanas, trabalhei basicamente com a comunicação entre o Cantor e o Scilab, via o backend que estou desenvolvendo. A tarefa foi bem interessante pois houve mudanças no projeto, na tecnologia escolhida para a implementação.

Antes eu havia proposto o uso da API call_scilab, que faz a comunicação entre código C/C++ com o Scilab. Mas, estudando o código do Cantor, percebi que os demais backends utilizam a classe KProcess (ou QProcess), que permite que código em Qt inicialize uma thread de outro software e faça a comunicação com ele via os streams padrões stdout, stderr e stdin.

Entretanto, o Scilab originalmente não usava esses streams. Então, conversando com meu mentor Ledru, resolvemos implementar essa funcionalidade.

Após alguns dias e mais estudos, consegui prover o suporte a estas saídas no Scilab! E, voilá, Scilab diz “Hello Cantor!” via backend! Clique nas imagens para ampliar:

O backend está de fato funcional, apesar de, claro, faltarem alguns detalhes. Agora teremos muitas screenshots. 🙂

Backend do Cantor para o Scilab faz cálculos:

Adiciona variáveis, usa funções pré-definidas e permite vários cálculos em um mesmo workspace:

Trabalha com vários workspaces simultaneamente:

Emite as mensagens de erro no workspace:

É isso! Bem, vamos agora a um resumão com informações rápidas sobre este projeto:

O que falta?

  • Gerenciamento de criação de gráficos. Atualmente, o backend gera o gráfico do Scilab em outra janela. Será adicionada a possibilidade de geração do gráfico dentro do workspace do Cantor;
  • Destaque de sintaxe;
  • Alto-complete de funções nativas do Scilab;
  • Trabalhar a codificação dos caracteres da saída;
  • Gerenciar saídas grandes. Quando Scilab faz um cálculo e vai imprimir muitas informações na tela, o ambiente mostra apenas uma parte da saída e pergunta se o usuário quer ver mais. No backend isto não funciona, pois quando a primeira parte da saída é mostrada, não há mais como enviar outra entrada para o Scilab. Veja abaixo, na imagem:

É possível testar este backend?

O código do backend que está no branch scilab-backend do repositório do Cantor realiza todas as funções aqui descritas. Entretanto, ela precisa da nova versão do Scilab para funcionar, pois tive que implementar o suporte aos streams padrões – ou seja, é necessário baixar o código do Scilab e compilá-lo. Em outro momento, irei escrever um post com algumas dicas sobre a compilação do Scilab.

Para quem não quer se aventurar no processo de compilação do Scilab, o jeito é esperar a próxima versão do Scilab que deve ser lançada em setembro. Apenas a partir dela é que o backend para Scilab no Cantor funcionará.

Então é isso amigos, obrigados a aqueles que leram o texto até aqui e fiquem atentos para maiores novidades. E não deixe de fazer um comentário aqui sobre o que você está achando desse projeto. 😉

2 comentários em “Scilab diz: “Hello Cantor!””

    1. Opa @Wagner, valeu cara!

      A ideia é essa mesmo, vou fazer com que o Scilab crie arquivos .png ou outra extensão e, em seguida, carregue no workspace. Já fiz o teste da criação e por enquanto tudo ok.

      Grande abraço parceiro!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *