Od przekształcającego odkrycia penicyliny do teorii względności i mechaniki kwantowej nauka rozwijała się z zadziwiającą prędkością, zanim jeszcze pojawiły się komputery. Wiele z tego wynika z solidności metody naukowej: wyniki naukowe są zatwierdzane przez powielanie i rozszerzanie przez innych naukowców.
Zmienia się jednak sposób, w jaki robimy naukę - coraz bardziej polegamy na skomplikowanych modelach komputerowych, aby zrozumieć naturę. Okazuje się, że modele te mogą być prawie niemożliwe do odtworzenia, co oznacza, że ważny kamień milowy nauki jest kwestionowany. Jakie są zatem realne konsekwencje tej zmiany i co możemy z tym zrobić?
Przednowoczesna nauka - znana jako „filozofia naturalna” - była empiryczna. Nauki empiryczne wykorzystują obserwacje z przeszłości, aby przewidywać przyszłość, które następnie można przetestować. Tycho Brahe, duńskiemu astronomowi z 16 wieku, udało się w ten sposób dokładnie i kompleksowo obserwować niebo.
Współczesna nauka jest jednak teoretyczna. Nauki teoretyczne również przewidują, ale wywodzą je z modeli matematycznych, a nie z wcześniejszych obserwacji. Pomyśl o prawach ruchu Izaaka Newtona, takich jak odwrotne kwadratowe prawo grawitacji.
Na przykład istnieje równanie opisujące orbitę Ziemi wokół Słońca. To równanie można wykorzystać do zbudowania modelu komputerowego, w którym można po prostu podłączyć określone zmienne i zobaczyć, jak zmienia się rozwiązanie. Możesz po prostu podłączyć przyszłą datę i odczytać pozycję Ziemi w tym dniu. Możesz również użyć tego samego programu do modelowania innych układów planetarnych - wszystko oparte na tej samej matematyce. Wszystko, co musisz zrobić, to podłączyć różne masy i różne inne właściwości zaangażowanych ciał.
Takie równania matematyczne są świetne, gdy są dostępne - ale często nie są. Na przykład wiemy, że nie ma prostego równania, które rozwiązałoby tak zwane „problem trzech ciał”, Który opisuje trzy ciała krążące wokół siebie i wpływające na siebie siłami grawitacyjnymi - takimi jak księżyc, Ziemia i słońce.
Znaczna część współczesnej nauki dotyczy jeszcze bardziej skomplikowanych systemów i podobnie brakuje dokładnych rozwiązań. Takie modele muszą być „obliczeniowe” - opisujące, jak system zmienia się z jednej chwili na drugą. Nie ma jednak innego sposobu na określenie dokładnego stanu w przyszłości niż „symulowanie” jego ewolucji w ten sposób. Prognozowanie pogody jest znanym przykładem; aż do pojawienia się komputerów w 1950, niemożliwe było przewidzenie przyszłej pogody szybciej niż w rzeczywistości.
Obecna nauka zazwyczaj polega na opracowaniu modelu matematycznego opisującego skomplikowany system, a następnie przekształceniu go w symulację obliczeniową i uruchomieniu symulacji w celu wykonania prognoz w celu zweryfikowania modelu.
Gdy modelowanie nie powiedzie się
Modelowanie stosuje się w różnych dziedzinach nauki - od astrofizyki i prognoza klimatu do bioinformatyki i ekonomii. Ale tam jest rosnąca debata o tym, że nauka ta jest trudna do zweryfikowania poprzez rozmnażanie.
Okazuje się, że samo opisanie metod eksperymentalnych słowami nie wystarczy. Wynika to częściowo z tego, że języki naturalne, takie jak angielski, są po prostu zbyt niejasne, aby precyzyjnie opisywać obliczenia. Jest przecież powód, dla którego programiści używają języków programowania. Jednym z największych wyzwań w rozwoju oprogramowania jest przekształcenie niejasnych wymagań w precyzyjne specyfikacje zachowania.
Ludzie - nawet naukowcy - są w końcu omylni. Przekształcanie dowolnych informacji w program prawie zawsze wprowadza błędy po drodze. Na przykład wielu naukowców polega na narzędziach do eksploracji danych, takich jak arkusze kalkulacyjne, które zostały zaprojektowane z myślą o łatwości użytkowania, a nie odporności. Bardzo łatwo jest po prostu zsumować niewłaściwy zakres komórek w arkuszu kalkulacyjnym, bez otrzymywania ostrzeżeń. To był jeden z wady metodologiczne w dokumencie, na którym Partia Republikańska USA oparła swoją politykę pro-oszczędnościową.
Podobnie a Ostatnie badania na arkuszach kalkulacyjnych 15,770, które zostały upublicznione podczas dochodzenia w amerykańskiej korporacji Enron wykazało, że% 24 arkuszy kalkulacyjnych zawierających co najmniej jedną formułę zawiera oczywiste błędy, takie jak dodanie pustych komórek.
W naukach przyrodniczych Mars Climate Observer, sonda kosmiczna uruchomiona w 1998 w celu zbadania klimatu na Marsie, została utracona rok później, ponieważ jedna część oprogramowania sterującego błędnie zastosowała imperial zamiast jednostek metrycznych. W innym badaniu z dziewięciu niezależnych wdrożeń tego samego eksperymentu z geologii - przy użyciu tego samego zestawu danych, algorytmów i języka programowania - wykazał bardzo małą zgodność w uzyskanych wynikach.
Co więcej, nawet jeśli czytelnik artykułu badawczego będzie w stanie z powodzeniem zinterpretować dokładne intencje autora, a następnie bezbłędnie przełożyć je na program, w jego wykonaniu nadal występują pułapki. Jedna szczególnie skomplikowana klasa problemów wynika ze sposobu, w jaki komputery radzą sobie z liczbami: chociaż mogą manipulować liczbami całkowitymi, takimi jak 42 i -17, z doskonałą dokładnością, standardowe techniki manipulowania liczbami rzeczywistymi, takimi jak ?3.14 i ?2?1.414, pozwalają jedynie na przybliżoną dokładność. Przybliżenia te oznaczają, że pozornie równoważne sposoby obliczania tej samej wartości mogą dają różne wyniki.
Co można zrobić? Jeśli nawet eksperci tworzący oprogramowanie nie są w stanie w wiarygodny sposób stworzyć prawidłowego oprogramowania, to jaką nadzieję mają dla programistów amatorów, takich jak naukowcy?
Jedna linia pracy polega na opracowaniu narzędzi do projektowania „języków specyficznych dla domeny”, z których każdy jest dostosowany do konkretnej klasy problemu, takiego jak zachowanie agentów na rynkach ekonomicznych lub rozprzestrzenianie się leków w komórkach. Mają one na celu ułatwienie specjalistom opisywania obliczeń bezpośrednio znanymi terminami, zamiast pośredniego kodowania ich w języku programowania ogólnego.
Drugie podejście ma na celu zaprojektowanie bardziej wyrazistych, ale wciąż przyjaznych dla użytkownika „systemów typów” dla programów. Ułatwi to wychwycenie „głupich” błędów, takich jak puste komórki w arkuszach kalkulacyjnych lub pomieszanie wartości w różnych jednostkach. Nie może jednak wykluczyć wszystkich błędów logicznych. Trzecią linią jest opracowanie użytecznych bibliotek kodu dla dokładnej arytmetyki, unikając problemów z aproksymacją.
Istnieją wszelkie szanse, że takie podejście może pomóc w rozwiązaniu problemu lub przynajmniej wyeliminować część ryzyka. W końcu świat potrzebuje nauki, a naukowcy potrzebują komputerów - to raczej nie zmieni się w najbliższym czasie.
O autorze
Artykuł pierwotnie ukazał się w The Conversation
Powiązana książka:
at Rynek wewnętrzny i Amazon