La scienza si basa su Computer Modelling - Che cosa succede quando le cose vanno male?

Dalla scoperta trasformante della penicillina alle teorie della relatività e della meccanica quantistica, la scienza progredì con una velocità da capogiro prima ancora che esistessero i computer. Gran parte di ciò dipende dalla solidità del metodo scientifico: i risultati scientifici sono convalidati dall'essere replicati ed estesi da altri scienziati.

Ma il modo in cui la scienza sta cambiando - ora ci affidiamo sempre più a modelli informatici complessi per comprendere la natura. E si scopre che questi modelli possono essere quasi impossibili da riprodurre - il che significa che una pietra di paragone importante della scienza viene messa in discussione. Quindi quali sono le ripercussioni sul mondo reale di questo cambiamento e cosa possiamo fare al riguardo?

La scienza premoderna - conosciuta come "filosofia naturale" - era empirica. La scienza empirica usa le osservazioni del passato per fare previsioni sul futuro, che possono essere testate. Tycho Brahe, un astronomo danese dell'16esimo secolo, riuscì a fare osservazioni accurate e complete dei cieli in questo modo.

La scienza moderna, tuttavia, è teorico. scienza teorica rende anche previsioni, ma li deriva da modelli matematici piuttosto che dalle osservazioni precedenti. Pensate a leggi del moto di Newton, come ad esempio la legge della gravitazione del quadrato inverso.

Ad esempio, esiste un'equazione che descrive l'orbita della Terra attorno al sole. Questa equazione può essere utilizzata per costruire un modello di computer in cui è possibile semplicemente inserire determinate variabili e vedere come cambia la soluzione. Potresti semplicemente inserire una data futura e leggere la posizione della Terra in quella data. Puoi anche usare lo stesso programma per modellare altri sistemi planetari - è tutto basato sulla stessa matematica. Tutto quello che devi fare è collegare diverse masse e varie altre proprietà dei corpi coinvolti.


innerself iscriviti alla grafica


Tali equazioni matematiche sono grandi quando sono disponibili - ma spesso non lo sono. Ad esempio, sappiamo che non esiste un'equazione semplice che risolva il cosiddetto "problema di tre corpi", Che descrive tre corpi orbitanti intorno e che influenzano l'un l'altro da forze gravitazionali - come la Luna, Terra e sole.

Gran parte della scienza attuale si occupa di sistemi ancora più complicati e allo stesso modo manca di soluzioni esatte. Tali modelli devono essere "computazionali" - descrivendo come un sistema cambia da un istante all'altro. Ma non c'è modo di determinare lo stato esatto in un qualche momento del futuro se non "simulando" la sua evoluzione in questo modo. Le previsioni del tempo sono un esempio familiare; fino all'avvento dei computer negli 1950, era impossibile prevedere il tempo futuro più rapidamente di quanto non fosse realmente accaduto.

La scienza corrente consiste tipicamente nell'elaborazione di un modello matematico che descrive un sistema complicato, trasformandolo in una simulazione computazionale e eseguendo la simulazione per fare previsioni al fine di convalidare il modello.

Quando la modellazione fallisce

La modellizzazione è utilizzata in tutti i campi scientifici, dall'astrofisica e previsione del clima alla bioinformatica e all'economia. Ma c'è crescente dibattito sul fatto che questa scienza è difficile da convalidare attraverso la riproduzione.

Risulta che non basta descrivere semplicemente i metodi sperimentali in parole. Ciò è in parte dovuto al fatto che le lingue naturali come l'inglese sono semplicemente troppo vaghe per descrivere con precisione i calcoli. Dopo tutto, c'è un motivo per cui i programmatori usano i linguaggi di programmazione. Una delle maggiori sfide nello sviluppo del software consiste nel convertire requisiti vaghi in precise specifiche di comportamento.

Gli esseri umani - persino gli scienziati - sono dopotutto fallibili. Trasformare qualsiasi informazione in un programma introduce quasi invariabilmente bug lungo il percorso. Ad esempio, molti scienziati dipendono da strumenti di esplorazione dei dati come i fogli di calcolo, progettati per la facilità d'uso e non per la robustezza. È molto semplice riassumere l'intervallo di celle errato in un foglio di calcolo, senza ricevere alcun avviso. Questo era uno dei difetti metodologici in un articolo che il Partito Repubblicano degli Stati Uniti usava per basare le loro politiche di austerità.

Allo stesso modo a recente studio sui fogli di calcolo 15,770 resi pubblici durante l'indagine sulla società statunitense Enron ha mostrato che 24% dei fogli di calcolo contenenti almeno una formula presentava bug evidenti, come l'aggiunta di celle vuote.

Nelle scienze naturali, il Mars Climate Observer, una sonda spaziale lanciata in 1998 per studiare il clima su Marte, è stata persa un anno dopo perché una parte del software di controllo utilizzava erroneamente unità imperiali anziché unità metriche. Un altro studio di nove implementazioni indipendenti dello stesso esperimento geoscienza - utilizzando lo stesso insieme di dati, algoritmi, e il linguaggio di programmazione - ha mostrato molto poco accordo nei risultati ottenuti.

Inoltre, anche se il lettore di un documento di ricerca riesce a interpretare con successo il significato preciso di chi lo scrive e quindi a tradurlo in modo impeccabile in un programma, ci sono ancora delle insidie ​​​​nell'esecuzione di esso. Una classe di problemi particolarmente complicata nasce dal modo in cui i computer gestiscono i numeri: sebbene possano manipolare numeri interi come 42 e -17 con perfetta precisione, le tecniche standard per manipolare numeri reali come ??3.14 e ?2?1.414 consentono solo una precisione approssimativa. Queste approssimazioni significano che metodi apparentemente equivalenti per calcolare lo stesso valore possono farlo dare risultati diversi.

Quindi, cosa si può fare? Se anche gli sviluppatori di software esperti non riescono a produrre in modo affidabile un software corretto, che speranza c'è per i programmatori dilettanti come gli scienziati?

Una linea di lavoro è quella di produrre strumenti per la progettazione di linguaggi di programmazione "specifici per dominio", ciascuno adattato a una particolare classe di problemi, come il comportamento degli agenti nei mercati economici o la diffusione di farmaci attraverso le cellule. Questi mirano a rendere molto più facile per gli specialisti descrivere i calcoli direttamente in termini familiari, piuttosto che doverli codificare indirettamente in un linguaggio di programmazione generico.

Un secondo approccio cerca di progettare "sistemi di tipi" più espressivi ma ancora facili da usare per i programmi. Ciò renderebbe più facile catturare errori "stupidi", come celle vuote in fogli di calcolo o mischiare valori in unità diverse. Tuttavia non può escludere tutti gli errori logici. Una terza linea è quella di sviluppare librerie di codice utilizzabili per l'aritmetica esatta, evitando i problemi di approssimazione.

Ci sono tutte le possibilità che questi approcci possano aiutare a risolvere il problema andando avanti, o almeno a eliminare parte del rischio. Dopo tutto, il mondo ha bisogno di scienza e gli scienziati hanno bisogno di computer - non è probabile che cambi presto.

Circa l'autore

Jeremy Gibbons, professore di informatica, Università di Oxford. Responsabile del tema di ricerca sui linguaggi di programmazione.

Questo articolo è originariamente apparso su The Conversation

Libro correlati:

at InnerSelf Market e Amazon