Complexidade: As ferramentas do ofício

Sea Tools - a13

Todas as áreas científicas tem as suas ferramentas. Muitas vezes em relação aos sistemas complexos me é perguntado “o que devo saber/utilizar/escolher?”em termos de ferramentas computacionais. A lista seguinte de ferramentas para o investigador é apenas uma pequena lista com as minhas opiniões no seguimento de uma outra lista que fiz sobre as plataformas de agentes para simulação há cerca de um ano.

Linux

Conhecer o sistema operativo open source é meio caminho para conseguir ser produtivo de forma uniforme. Mesmo trabalhando em Windows ou Mac penso que qualquer pessoa que precise de realmente colocar as mãos na massa deve ter uma máquina virtual de Linux instalada para permitir a implementação de algoritmos e scripts que possam ser transferidos para outras máquinas e colaboradores (se não quiser pagar por um software de virtualização, pode utilizar o VirtualBox que é gratuito). Não é preciso ser-se um sysadmin para conhecer os mínimos do sistema, saber mexer numa shell e compilar um programa.

Java

A linguagem é muito versátil e a base para muitas bibliotecas de simulação. A grande vantagem de saber Java é que o número de investigadores capaz de perceber o que fez e que já desenvolveu bibliotecas úteis é enorme.

Python

Apesar do Java ser muito prático, há coisas que são uma “chatice” para implementar. A elegância e rapidez com que se processam ficheiros de dados com um simples for é um exemplo, sem ter que andar a lidar com streams ou scanners ou o diabo a quatro. Utilizo python principalmente na aquisição de dados experimentais, pre-processamento, experimentação de modelos e testes rápidos.

Matlab

Muitos problemas prestam-se a ser representados por matrizes (principalmente no estudo de redes). Nesta situação não há como utilizar o Matlab… a facilidade de programar em matlab e a quantidade de bibliotecas de funções existentes fazem dele algo muito potente para qualquer engenheiro a precisar de resultados rapidamente. Para além disso a produção de gráficos para documentos científicos é extremamente fácil com este software.

gawk

é o canivete suíço do processamento de ficheiros de texto com dados. Uma das vantagens de utilizar um ambiente linux é que o gawk vai estar lá pronto a ser utilizado. Durante a minha tese de  mestrado, o gawk foi a ferramenta essencial para extrair dados de cerca de 10GB de ficheiros de Logs de servidores de email. Rápido e simples de utilizar é talvez uma das ferramentas desta lista que não prescindiria em caso algum.

bash

Muito do trabalho que se efectua passa pela repetição de simulações para obter médias ou tendências. Automatizar este trabalho é essencial. O bash (ou outras shells semelhantes) tem o poder para controlar todo este trabalho. Automatizam-se cálculos durante a noite, de dia analisam-se os resultados. O Bash é a cola que junta isto tudo e torna cada um dos scripts ou comandos que “inventamos” úteis e poderosos.

MASONRepast

Qualquer cientista deve escolher um ambiente de simulação para conhecer a fundo. As razões da escolha são pessoais e variadas, mas é preciso explorar as diversas alternativas de plataformas de simulação para por fim escolher uma. Eu particularmente sou adepto do MASON depois de ter trabalhado algum tempo com o Repast. No entanto a separação entre Modelo e Visualização do Mason e o facto do Repast 3.1 estar sem desenvolvimento há alguns anos para ter dado lugar ao Simphony (sic?) fazem, para mim, do MASON a plataforma ideal.