Zašto Curiosity ima tako slabašnu opremu i nije li bilo bolje na Mars poslati neki pametni telefon koji ima kameru s više megapixela i više memorije?
Koliko linija koda je potrebno napisati da bi došli na Mars?
Curiosity rover je sletio na Mars, a većina ljudi koji znaju koliko im megapiksela ima digitalni fotoaparat te koliko im memorije ima pametni telefon (ili barem koji je kapacitet SD kartice koju su ubacili u njega) glasno su se razmetali kako eto oni imaju uređaju koji imaju bolje kamere, više memorije te jači procesor od te mašinerije koju je NASA poslala tamo gore. To je istina, a postoje opravdani razlozi zašto je to tako.
U vrijeme kad je počelo konstruiranje računala za rover (2004.) tehnologija nije bila na današnjem stupnju razvoja, a razvoj je zaključen 2008. kada počinju testiranja. Ali ni tada nisu uzimani najnoviji i najjači procesori već oni koji su dovoljno provjereni i pouzdani. NASA nije baš u mogućnosti da pošalje servis ako nešto na Marsu na bude radilo kako treba.
Curiosity ima dva identična računala čija memorija je otporna na radijaciju, a za razliku od obične RAM memorije neće izgubiti svoj sadržaj za slučaj nestanka napajanja. Procesor RAD750 radi na samo 200 MHz. Naizgled malo, ali dovoljno. Rover je projektiran i optimiziran za zadatak koji treba obaviti isto kao i softver koji se pokreće u njegovim računalima. Ono od čega boluju današnje moderne aplikacije na računalima, tabletima i pametnim telefonima je neoptimiziranost. Tijekom svih ovih godina se pokazalo da je jednostavnije pojačati hardver nego optimizirati softver. Razvojni alati imaju sve više slojeva od onoga što stvaraju oni koji razvijaju aplikacije i zovu izvornim kodom do onoga što je razumljivo računalo i što se zove strojni jezik.
NASA razvija softver temeljitije nego oni koji razvijaju aplikacije za vaš mobitel. Aplikacije koje koristite na računalima i mobitelima možda imaju pokoju stranicu specifikacija, neke uopće nemaju. Veliki broj aplikacija se isporučuje, a da nisu detaljno istestirane. Jedno istraživanje kaže da se kod današnjih aplikacija 80% sredstava namijenjenih za njihov razvoj potroši nakon što se one prvi put pokrenu. Prva verzija obično ne zadovoljava zahtjeve, puna je grešaka, pa nakon nje slijedi ‘peglanje’, a često i ponovno pisanje pojedinih funkcionalnosti od samog početka. Aplikacije koje pišu u Nasi moraju raditi od prve, ništa se ne radi bez specifikacije, pa se događa da se za 6000 linija koda napiše dokumentacija od 2500 stranica.
Grupa koja je razvijala softver za Space Shuttle je otkrila 85% grešaka prije prvog testa i 99.9% prije isporuke. U takvim uvjetima, čak i s Nasinim budžetom, ne piše se suvišan kod već baš onoliko koliko treba i ništa više.
Izvorni kod koji pokreće računalo rovera na Marsu ima oko 2.5 milijuna redova koda. Uglavnom je riječ o kodu u programskom jeziku C koji je pisan po vrlo strogim pravilima (npr. zabranjeno je korištenje rekurzija). Američki lovac F-22 ima softver od 1.7 milijuna redova koda napisanog u programskom jeziku Ada. Za F-35 (Lockheed Martin F-35 Lightning) potrebno je oko 6 milijuna redova koda, dok se u slučaju novog Boeinga 787 govori o 8 milijuna linija koda.
Kod Windowsa XP spominje se 45 milijuna linija koda, a kod Windows 7 procjene idu od 50 do čak 80 milijuna redova koda. Kod Debian Linux distribucije (verzija 5.0, na njoj se temelji i popularni Ubuntu) taj broj ide do 323 milijuna redova koda, ali ona sadrži oko 29.000 aplikacija i ne može se samo tako uspoređivati s Windowsima. Ekvivalent tome bi bilo kad bi kod njih uključili i broj linija koda najčešćih aplikacija. Sam Linux kernel ima preko 15 milijuna redova koda.
Ali rekordere po broju linija koda nećete naći u svemiru, među satelitima, avionima nego na cesti. Neki stručnjaci govore da se u automobilima visoke klase može naći i do 100 milijuna redova koda. Informatičar iz Mercedesa tvrdi da se u S klasi samo za radio i navigacijski sustav troši 20 milijuna redova koda. Drugi opet predviđaju da će se u budućim automobilima nalaziti od 200 do 300 milijuna redova koda. Kod današnjih automobila visoke klase od 35-40% čine troškovi softvera i elektronike.
Ja predviđam da će se u budućnosti početi proizvoditi automobili koji neće imati elektroniku u sebi već samo čistu mehaniku. Samo što oni neće biti namijenjeni širokim narodnim masama već će biti čista ezoterija za bogataše.
Ali više ne znači i bolje. Da Nasa radi aplikacije poput drugih i rover bi se dičio sa sto milijuna redova koda, ali vjerojatno bi se izgubio negdje do Marsa jer bi se pojavio kritični bug ili bi se cijeli sistem jednostavno zaglavio.