Ciência se baseia em Modelagem Computacional - Assim que acontece quando se der errado?

Da descoberta transformadora da penicilina às teorias da relatividade e da mecânica quântica, a ciência progrediu com velocidade alucinante mesmo antes de haver computadores. Muito disso se deve à robustez do método científico: os resultados científicos são validados por serem replicados e ampliados por outros cientistas.

Mas a maneira como fazemos ciência está mudando - agora confiamos cada vez mais em modelos computacionais complexos para entender a natureza. E acontece que esses modelos podem ser quase impossíveis de reproduzir - o que significa que uma importante pedra de toque da ciência está sendo desafiada. Então, quais são as repercussões do mundo real dessa mudança e o que podemos fazer sobre isso?

A ciência pré-moderna - conhecida como "filosofia natural" - era empírica. A ciência empírica usa observações passadas para fazer previsões sobre o futuro, que podem então ser testadas. Tycho Brahe, um astrônomo dinamarquês do 16th Century, conseguiu fazer observações precisas e abrangentes do céu dessa maneira.

A ciência moderna, no entanto, é teórico. ciência teórica também faz previsões, mas deriva-los a partir de modelos matemáticos, em vez de a partir de observações anteriores. Pense em leis do movimento de Isaac Newton, como a lei do inverso do quadrado da gravitação.

Por exemplo, existe uma equação descrevendo a órbita da Terra ao redor do sol. Essa equação pode ser usada para criar um modelo de computador no qual você pode simplesmente conectar certas variáveis ​​e ver como a solução muda. Você poderia simplesmente inserir uma data futura e ler a posição da Terra naquela data. Você também pode usar o mesmo programa para modelar outros sistemas planetários - tudo é baseado na mesma matemática. Tudo o que você precisa fazer é conectar diferentes massas e várias outras propriedades dos corpos envolvidos.


innerself assinar gráfico


Essas equações matemáticas são ótimas quando estão disponíveis - mas muitas vezes não são. Por exemplo, sabemos que não existe uma equação simples que resolva o chamado “problema de três corpos", Que descreve três corpos que orbitam ao redor e influenciam uns aos outros por forças gravitacionais - como a Lua, a Terra eo sol.

Grande parte da ciência atual lida com sistemas ainda mais complicados e, da mesma forma, carece de soluções exatas. Tais modelos têm que ser “computacionais” - descrevendo como um sistema muda de um instante para o outro. Mas não há como determinar o estado exato em algum momento no futuro, a não ser “simulando” sua evolução dessa maneira. A previsão do tempo é um exemplo familiar; até o advento dos computadores nos 1950s, era impossível prever o tempo futuro mais rápido do que realmente aconteceu.

A ciência atual normalmente consiste em elaborar um modelo matemático que descreva um sistema complicado, transformando isso em uma simulação computacional e executando a simulação para fazer previsões a fim de validar o modelo.

Quando a modelagem falha

A modelagem é usada em campos científicos - variando de astrofísica e a previsão do clima a bioinformática e economia. Mas existe crescente debate sobre o fato de que esta ciência é difícil de validar através da reprodução.

Acontece que simplesmente descrever métodos experimentais em palavras não é suficiente. Isso ocorre em parte porque linguagens naturais, como o inglês, são simplesmente vagas demais para descrever cálculos com precisão. Existe, afinal, um motivo pelo qual os programadores usam linguagens de programação. Um dos maiores desafios no desenvolvimento de software é a conversão de requisitos vagos em especificações precisas de comportamento.

Humanos - até mesmo cientistas - são, afinal, falíveis. Transformar qualquer informação em um programa quase invariavelmente introduz erros ao longo do caminho. Por exemplo, muitos cientistas dependem de ferramentas de exploração de dados, como planilhas, que são projetadas para facilidade de uso e não para robustez. É muito fácil simplesmente resumir o intervalo errado de células em uma planilha, sem receber nenhum aviso. Este foi um dos falhas metodológicas em um documento que o Partido Republicano dos EUA usou para basear suas políticas pró-austeridade.

Da mesma forma um estudo recente nas planilhas 15,770 que foram divulgadas durante a investigação da empresa norte-americana Enron, mostrou que 24% das planilhas contendo pelo menos uma fórmula tinham erros óbvios, como a adição de células em branco.

Nas ciências naturais, o Mars Observer ClimaUma sonda espacial lançada em 1998 para estudar o clima em Marte foi perdida um ano depois, porque uma parte do software de controle usava erroneamente unidades imperiais em vez de unidades métricas. Outro estudo de nove implementações independentes do mesmo experimento geociências - usando o mesmo conjunto de dados, algoritmos e linguagem de programação - mostraram muito pouca concordância nos resultados obtidos.

Além do mais, mesmo que o leitor de um artigo de pesquisa consiga interpretar com sucesso o significado preciso do escritor e, em seguida, traduzi-lo perfeitamente em um programa, ainda existem armadilhas em sua execução. Uma classe de problemas particularmente complicada surge de como os computadores lidam com números: embora possam manipular números inteiros como 42 e -17 com precisão perfeita, técnicas padrão para manipulação de números reais como ??3.14 e ?2–1.414 permitem apenas uma precisão aproximada. Estas aproximações significam que formas aparentemente equivalentes de calcular o mesmo valor podem produzir resultados diferentes.

Então, o que pode ser feito? Se até mesmo os desenvolvedores de software especializados não podem produzir de forma confiável um software correto, que esperança existe para programadores amadores como os cientistas?

Uma linha de trabalho é produzir ferramentas para projetar linguagens de programação “específicas de domínio”, cada uma adaptada a uma classe particular de problema, como o comportamento de agentes em mercados econômicos ou a difusão de drogas através das células. Estes visam tornar muito mais fácil para especialistas descreverem computações diretamente em termos familiares, ao invés de codificá-los indiretamente em uma linguagem de programação de propósito geral.

Uma segunda abordagem procura projetar “sistemas de tipos” mais expressivos, mas ainda fáceis de usar, para programas. Isso tornaria mais fácil detectar erros “bobos”, como células em branco em planilhas, ou misturar valores em diferentes unidades. Não é possível descartar todos os erros lógicos. Uma terceira linha é desenvolver bibliotecas utilizáveis ​​de código para aritmética exata, evitando os problemas de aproximação.

Há todas as chances de que essas abordagens ajudem a corrigir o problema no futuro, ou pelo menos eliminem parte do risco. Afinal, o mundo precisa de ciência e os cientistas precisam de computadores - isso provavelmente não mudará tão cedo.

Sobre o autor

Jeremy Gibbons, professor de computação da Universidade de Oxford. Chefe do tema de pesquisa das Linguagens de Programação.

Este artigo foi publicado originalmente no The Conversation

Livro relacionados:

at InnerSelf Market e Amazon