Știința se bazează pe modelarea computerizată - Ce se întâmplă atunci când nu merge bine?

De la transformarea descoperirii penicilinei la teoriile relativității și mecanicii cuantice, știința a progresat cu o viteză uluitoare, chiar înainte de a exista computere. O mare parte din aceasta se datorează robusteții metodei științifice: rezultatele științifice sunt validate prin reproducerea și extinderea de către alți oameni de știință.

Dar modul în care facem știința se schimbă - ne bazăm acum pe modele computerizate complexe pentru a înțelege natura. Și se pare că aceste modele pot fi aproape imposibil de reprodus - ceea ce înseamnă că o piatră de temelie importantă a științei este contestată. Deci, care sunt repercusiunile lumii reale ale acestei schimbări și ce putem face în legătură cu aceasta?

Știința premodernă - cunoscută sub numele de „filozofie naturală” - era empirică. Știința empirică folosește observațiile din trecut pentru a face predicții despre viitor, care pot fi apoi testate. Tycho brahe, un astronom danez din secolul al XVI-lea, a reușit să facă astfel de observații exacte și cuprinzătoare asupra cerurilor.

Știința modernă este însă teoretică. Știința teoretică face și predicții, dar le derivă mai degrabă din modele matematice decât din observații anterioare. Gândiți-vă la legile mișcării lui Isaac Newton, cum ar fi legea pătrată inversă a gravitației.

De exemplu, există o ecuație care descrie orbita Pământului în jurul soarelui. Această ecuație poate fi utilizată pentru a construi un model de computer în care puteți conecta anumite variabile și puteți vedea cum se schimbă soluția. Puteți doar să conectați o dată viitoare și să citiți poziția Pământului la acea dată. De asemenea, ați putea folosi același program pentru a modela alte sisteme planetare - totul se bazează pe aceeași matematică. Tot ce trebuie să faceți este să conectați diferite mase și diferite alte proprietăți ale corpurilor implicate.


innerself abonare grafică


Astfel de ecuații matematice sunt grozave atunci când sunt disponibile - dar adesea nu sunt. De exemplu, știm că nu există o ecuație simplă care să rezolve așa-numitul „problemă cu trei corpuri”, Care descrie trei corpuri care orbitează în jurul și se influențează reciproc de forțele gravitaționale - cum ar fi luna, Pământul și soarele.

O mare parte din știința actuală se ocupă de sisteme și mai complicate și, în mod similar, nu are soluții exacte. Astfel de modele trebuie să fie „computaționale” - descriind modul în care un sistem se schimbă de la un moment la altul. Dar nu există nici o modalitate de a determina starea exactă la un moment dat în viitor, decât prin „simularea” evoluției sale în acest fel. Prognoza meteo este un exemplu familiar; până la apariția computerelor în anii 1950, a fost imposibil să se prevadă vremea viitoare mai repede decât s-a întâmplat de fapt.

Știința actuală constă de obicei în conceperea unui model matematic care descrie un sistem complicat, apoi transformarea acestuia într-o simulare computațională și rularea simulării pentru a face predicții pentru a valida modelul.

Când modelarea eșuează

Modelarea este utilizată în toate domeniile științifice - variind de la astrofizică și predicție climatică la bioinformatică și economie. Dar acolo este dezbateri crescânde despre faptul că această știință este dificil de validat prin reproducere.

Se pare că simpla descriere a metodelor experimentale în cuvinte nu este suficientă. Acest lucru se datorează în parte faptului că limbajele naturale precum engleza sunt pur și simplu prea vagi pentru a descrie calculele cu precizie. Există, la urma urmei, un motiv pentru care programatorii folosesc limbaje de programare. Una dintre cele mai mari provocări în dezvoltarea de software este convertirea cerințelor vagi în specificații precise de comportament.

Oamenii - chiar și oamenii de știință - sunt, la urma urmei, falibili. Transformarea oricărei informații într-un program introduce aproape invariabil erori pe parcurs. De exemplu, mulți oameni de știință depind de instrumentele de explorare a datelor, cum ar fi foile de calcul, care sunt concepute pentru a fi ușor de utilizat și nu pentru robustețe. Este foarte ușor să rezumați intervalul greșit de celule dintr-o foaie de calcul, fără a primi avertismente. Acesta a fost unul dintre defecte metodologice într-o lucrare pe care Partidul Republican SUA a folosit-o pentru a-și baza politicile pro-austeritate.

În mod similar a studiu recent pe cele 15,770 de foi de calcul care au fost făcute publice în timpul investigației asupra corporației americane Enron a arătat că 24% din foile de calcul care conțin cel puțin o formulă aveau erori evidente, cum ar fi adăugarea de celule goale.

În științele naturii, Mars Climate Observer, o sondă spațială lansată în 1998 pentru a studia clima de pe Marte, a fost pierdută un an mai târziu, deoarece o parte a software-ului de control a folosit greșit unități imperiale în loc de unități metrice. Un alt studiu din nouă implementări independente ale aceluiași experiment de geoștiință - folosind același set de date, algoritmi și limbaj de programare - au arătat foarte puțin acord în rezultatele obținute.

Mai mult, chiar dacă cititorul unei lucrări de cercetare poate interpreta cu succes sensul exact al scriitorului și apoi îl poate traduce fără greșeală într-un program, există încă capcane în executarea lui. O clasă de probleme deosebit de complicată apare din modul în care computerele manipulează numerele: deși pot manipula numere întregi precum 42 și -17 cu o acuratețe perfectă, tehnicile standard de manipulare a numerelor reale precum ??3.14 și ?2?1.414 permit doar o precizie aproximativă. Aceste aproximări înseamnă că modalitățile aparent echivalente de a calcula aceeași valoare pot da rezultate diferite.

Deci, ce se poate face? Dacă nici dezvoltatorii de software experți nu pot produce în mod fiabil software corect, ce speranță există pentru programatorii amatori precum oamenii de știință?

O linie de lucru este de a produce instrumente pentru proiectarea limbajelor de programare „specifice domeniului”, fiecare adaptat la o anumită clasă de probleme, cum ar fi comportamentul agenților pe piețele economice sau difuzarea medicamentelor între celule. Acestea urmăresc să faciliteze mult mai ușor pentru specialiști descrierea calculelor direct în termeni familiari, mai degrabă decât să fie nevoie să le codifice indirect într-un limbaj de programare cu scop general.

O a doua abordare urmărește să proiecteze „sisteme de tip” mai expresive, dar ușor de utilizat, pentru programe. Acestea ar face mai ușor să prindă erori „stupide”, cum ar fi celulele goale din foile de calcul sau amestecarea valorilor în diferite unități. Totuși, nu poate exclude toate erorile logice. O a treia linie este de a dezvolta biblioteci de cod utilizabile pentru aritmetica exactă, evitând problemele de aproximare.

Există toate șansele ca aceste abordări să ajute la rezolvarea problemei în viitor sau cel puțin să elimine o parte din risc. La urma urmei, lumea are nevoie de știință, iar oamenii de știință au nevoie de computere - ceea ce nu se va schimba în curând.

Despre autor

Jeremy Gibbons, profesor de informatică, Universitatea din Oxford. Șef al temei de cercetare Limbaje de programare.

Acest articol a apărut inițial în The Conversation

Carte înrudită:

at InnerSelf Market și Amazon