Wetenskap berus op Computer Modellering - So wat gebeur as dit verkeerd gaan?

Van die transformerende ontdekking van penisillien na die teorieë van relatiwiteit en kwantummeganika, het die wetenskap met vernuftige spoed gevorder, selfs voordat daar rekenaars was. Baie hiervan val neer op die robuustheid van die wetenskaplike metode: wetenskaplike resultate word gevalideer deur replikasie en uitbreiding deur ander wetenskaplikes.

Maar die manier waarop ons wetenskap doen, verander - ons vertrou nou meer op komplekse rekenaarmodelle om die natuur te verstaan. En dit blyk dat hierdie modelle byna onmoontlik kan wees om voort te plant - wat beteken dat 'n belangrike raakpunt van die wetenskap uitgedaag word. So, wat is die real-world gevolge van hierdie verandering en wat kan ons daaraan doen?

Voor-moderne wetenskap - bekend as "natuurlike filosofie" - was empiries. Empiriese wetenskap gebruik vorige waarnemings om voorspellings oor die toekoms te maak, wat dan getoets kan word. Tycho Brahe, 'n 16-eeuse Deense sterrekundige, het daarin geslaag om akkurate en omvattende observasies van die hemele te maak.

Die moderne wetenskap is egter teoretiese. Teoretiese wetenskap maak ook voorspellings, maar dit is afgelei hulle uit wiskundige modelle eerder as uit vorige waarnemings. Dink aan bewegingswette Isaac Newton se, soos die inverse vierkantige gravitasiewet.

Byvoorbeeld, daar is 'n vergelyking wat die baan van die Aarde om die son beskryf. Hierdie vergelyking kan gebruik word om 'n rekenaarmodel te bou waarin jy sekere veranderlikes kan koppel en sien hoe die oplossing verander. U kan net 'n toekomstige datum invoeg en die posisie van die Aarde op daardie datum aflees. Jy kan ook dieselfde program gebruik om ander planeetstelsels te modelleer - dit is alles op dieselfde wiskunde gebaseer. Al wat jy hoef te doen is om verskillende massas en verskillende ander eienskappe van die betrokke liggame in te prop.


innerself teken grafiese in


Sulke wiskundige vergelykings is wonderlik wanneer hulle beskikbaar is - maar dikwels is dit nie. Byvoorbeeld, ons weet dat daar geen eenvoudige vergelyking is wat die sogenaamde "drie-liggaam probleem", Wat beskryf drie liggame wentel rondom en beïnvloed mekaar deur gravitasiekragte - soos die maan, aarde en son.

Baie van die huidige wetenskap handel oor selfs meer ingewikkelde stelsels, en het ook nie presiese oplossings nie. Sulke modelle moet "berekenings" wees - beskryf hoe 'n stelsel van een oomblik na die volgende verander. Maar daar is geen manier om die presiese toestand op 'n sekere tyd in die toekoms te bepaal nie, behalwe deur die evolusie só te simuleer. Weervoorspelling is 'n bekende voorbeeld; Tot die koms van rekenaars in die 1950's, was dit onmoontlik om toekomstige weer vinniger te voorspel as wat dit eintlik gebeur het.

Huidige wetenskap bestaan ​​gewoonlik uit die ontwerp van 'n wiskundige model wat 'n ingewikkelde stelsel beskryf, dan omskep in 'n rekenaar simulasie, en die simulasie uitvoer om voorspellings te maak om die model te valideer.

Wanneer modellering misluk

Modellering word oor wetenskaplike velde gebruik - wat wissel van astrofisika en Climate Prediction tot bioinformatika en ekonomie. Maar daar is toenemende debat oor die feit dat hierdie wetenskap moeilik is om deur middel van voortplanting te valideer.

Dit blyk dat die blootstelling van eksperimentele metodes in woorde nie genoeg is nie. Dit is deels omdat natuurlike tale soos Engels net te vaag is om die berekeninge presies te beskryf. Daar is immers 'n rede waarom programmeerders programmeertale gebruik. Een van die grootste uitdagings in sagteware-ontwikkeling is om vae vereistes te omskep in presiese spesifikasies van gedrag.

Mense - selfs wetenskaplikes - is onmoontlik. Die omskakeling van enige inligting in 'n program stel byna altyd foute op die pad. Byvoorbeeld, baie wetenskaplikes is afhanklik van data-eksplorasie-gereedskap soos sigblaaie, wat ontwerp is vir gemak en nie vir robuustheid nie. Dit is baie maklik om die verkeerde reeks selle in 'n sigblad op te som, sonder om enige waarskuwings te kry. Dit was een van die metodologiese gebreke in 'n koerant wat die Amerikaanse Republikeinse Party gebruik het om hul beleidsmaatreëls op te stel.

Net so a onlangse studie Op die 15,770-sigblaaie wat tydens die ondersoek na die Amerikaanse korporasie Enron bekend gemaak is, het 24% van die sigblaaie wat ten minste een formule bevat, duidelike foute gehad, soos die optel van leë selle.

In die natuurwetenskappe, die Mars Klimaat Observer, 'n ruimtestudie wat in 1998 geloods is om die klimaat op Mars te bestudeer, is 'n jaar later verlore geraak omdat een deel van die kontrolesoftware verkeerdelik imperiale in plaas van metrieke eenhede gebruik het. Nog 'n studie van nege onafhanklike implementering van dieselfde Geowetenskap eksperiment - met behulp van dieselfde dataset, algoritmes, en programmeertaal - het baie min ooreenkoms in die resultate wat verkry is.

Wat meer is, selfs al kan die leser van 'n navorsingsartikel die skrywer se presiese betekenis suksesvol interpreteer, en dit dan foutloos in 'n program vertaal, is daar steeds slaggate in die uitvoering daarvan. Een besonder moeilike klas probleme spruit voort uit hoe rekenaars getalle hanteer: alhoewel hulle heelgetalle soos 42 en -17 met perfekte akkuraatheid kan manipuleer, laat standaardtegnieke vir die manipulering van reële getalle soos ??3.14 en ?2?1.414 slegs benaderde akkuraatheid toe. Hierdie benaderings beteken dat oënskynlik ekwivalente maniere om dieselfde waarde te bereken, kan lewer verskillende resultate op.

So, wat kan gedoen word? As selfs kundige sagteware-ontwikkelaars nie betroubare sagteware kan lewer nie, watter hoop is daar vir amateurprogrammeerders soos wetenskaplikes?

Een reël van die werk is om gereedskap te produseer vir die ontwerp van "domein spesifieke" programmeringstale, elkeen wat aangepas is vir 'n spesifieke klas probleem, soos die gedrag van agente in ekonomiese markte of die verspreiding van dwelms oor selle. Hierdie doelwitte stel dit baie makliker vir spesialiste om berekeninge direk in bekende terme te beskryf, eerder as om hulle indirek te kodeer in 'n algemene doelprogrammeertaal.

'N Tweede benadering beoog om meer ekspressiewe, maar steeds gebruikersvriendelike "tipe stelsels" vir programme te ontwerp. Dit sal dit makliker maak om "dom" foute, soos leë selle in sigblaaie, te gebruik of waardes in verskillende eenhede op te tel. Dit kan egter nie alle logiese foute uitsluit nie. 'N Derde lyn is om bruikbare biblioteke van kode vir presiese rekenkunde te ontwikkel en die probleme van benadering te vermy.

Daar is elke kans dat hierdie benaderings kan help om die probleem vorentoe te herstel, of ten minste 'n deel van die risiko uit te skakel. Die wêreld het immers wetenskap en wetenskaplikes benodig rekenaars. Dit sal waarskynlik nie binnekort verander nie.

Oor Die Skrywer

Jeremy Gibbons, professor in rekenaarwetenskap, Universiteit van Oxford. Hoof van die Programmeringstale-navorsings tema.

Hierdie artikel het oorspronklik verskyn op Die gesprek

Verwante Book:

at InnerSelf Market en Amazon