Deterministic Fixed Point Arithmetic | Dweve Numerus
Numerus: deterministic fixed-point, decimal and integer arithmetic in Rust; same bits under a declared execution contract. Publishing in round two.
Zapis onoga što se dogodilo, čuvan da se može ponovno pročitati.
SMT rješavač, s potvrdom priloženom uz odgovor.
Pravila kao imenovani artefakti, s razlogom zašto je provjera pala.
Odaberite numerički ugovor prije prve računice, zadržite obrazloženje koje je uz njega išlo i dajte svakome tko pita zapis koji može ponovno pokrenuti na vlastitom računalu.
Ono što dobijete je zbroj napravljen točno, ista brojka svugdje, i zapis kako se do nje došlo.
Izgrađen je u Europi, pod europskim pravilima, a njegov izvorni kod objavljuje se pod uvjetima Apache-2.0 u drugoj rundi Dweveova programa temeljnih izdanja. Regulatori i organizacije za zaštitu potrošača moći će izravno pregledati aritmetiku, onog dana kad zaživi.
Je li pravilo ispravno ostaje pitanje za ljude i imate pravo to pokrenuti. Ono što vam ovo daje je nešto čvrsto s čime to možete pokrenuti: brojka koja ispadne ista kad je itko provjeri, pisani zapis kako se do nje došlo koji ne ovisi o ničijem sjećanju, i provjera koja kaže je li taj zapis naknadno mijenjan.
Ako je pravilo koje se primjenjuje na vas nepravedno, ovo će ga primijeniti točno, do centa, na svakoga, svaki put. Ne čini pravilo pravednim i ne može prepoznati da je pravilo nepravedno. Sve što čini jest osigurati da brojka također nije pogrešna, što je manje obećanje nego što ste se nadali i ono koje se zapravo održava.
Ništa od toga ne mijenja ono što biste trebali čuti bez uvijanja.
Dakle, ono što stigne do vas je brojka s vlastitom marginom priloženom, ili praznina tamo gdje bi izmišljeni broj stajao. Gdje stroj stoji također je važno, i više nego što ljudi očekuju. Isti posao obavljen u Francuskoj i u Njemačkoj daje vrlo različite ugljične brojke, jer se struja proizvodi drugačije.
Brojanje nije savršeno, i softver to kaže bez da ga se pita. Poslovi premali da bi se registrirali ne ostavljaju nikakav trag na njemu. Isti posao pokrenut dvaput vrati se malo drugačije ovisno o tome koliko je stroj bio topao. Na nekim unajmljenim računalima ne vidi ništa, i to kaže umjesto da pogađa.
Računala koriste struju za razmišljanje. Svi to znaju, i nitko vam nikad nije mogao reći koliko je toga otišlo na bilo koji pojedini posao. Procesori vode vlastito tekuće brojanje energije koju su potrošili, i to se brojanje može pročitati. Dakle, komad posla može se vratiti sa strujom koju je trebao zapisanom pokraj njega, a gdje stroj ne može reći, s ničim umjesto pogađanja.
Može odgovoriti i na nešto što nitko nije mogao pitati prije nekoliko godina: koliko je zbroj koštao u struji.
I ništa od toga ne treba telefonirati bilo kamo. Očitanje, doza, put kočenja: brojka se izračuna tamo gdje se mjeri, tako da nema kopije koja sjedi na tuđem računalu, i ništa ne čeka na vezu. To je važnije kad je broj o vašem tijelu nego kad je o vašoj vodi.
Brojilo je jeftino dijelom jer uopće ne može rukovati razlomcima, pa broji u cijelim brojevima. To je slučajno isto brojanje koje daje identičan odgovor na svakom stroju. Dakle, zbroj u vašem ormariću nije grublja verzija bankina zbroja zato što je kutija bila mala. To je isti zbroj.
Brojilo u vašem ormariću odlučuje koliko dugujete za vodu. Pumpa na bolničkom odjelu odlučuje koliko lijeka ulazi. Kutija iza volana automobila odlučuje koliko jako kočiti. Nitko ih ne gleda, i svaka radi istu vrstu aritmetike koju banka radi s vašim novcem. Može se napraviti na istoj razini, i odgovor nikad ne mora napustiti prostoriju u kojoj je izračunat.
organizacija koja je čuvala rad može ga predati istog popodneva
tražite izračun, i to je normalno što tražite
i u svakom slučaju, izračun, a ne njegov sažetak
vašeg dobavljača energije, za račun koji osporavate
Učinjeno na ovaj način, odgovor nije nečije najbolje sjećanje. Brojevi od kojih se krenulo su sačuvani, kao i ono što je s njima učinjeno i kojim redoslijedom. Pokrenite to ponovno i rezultat je identičan, a ne približan. Ako je zapis u međuvremenu izmijenjen, to se pokaže prvo, prije nego itko išta ponovno pokrene.
Vjerojatno ste to već pitali i dobili loš odgovor. Netko pogleda trenutnu verziju izračuna, pokrene je na današnjim brojevima i kaže vam da ispadne otprilike točno. Nitko ne izbjegava odgovor. Stvar koja je proizvela vaš iznos prošlog proljeća više ne postoji, pa nema ničega na što bi se moglo ukazati.
Ništa od toga ne odgovara na pitanje koje bi svatko sljedeće postavio.
Prošli ožujak iz novog sustava izlazi točno onako kako je izlazio iz starog, pa prijava koju ste podnijeli i dalje vrijedi i nema izgubljenog poslijepodneva. Pitajte kako je iznos dobiven i dobijete izračun umjesto slijeganja ramenima. Ne morate vjerovati na riječ da je izračun ostavljen na miru, jer sve što je naknadno izmijenjeno se pokaže.
Nijedan dio odgovora ne dolazi od stroja. Nema zaokruživanja koje ide jednako na jednom čipu, a drugačije na sljedećem, i nema prečaca koji brže računalo napravi, a sporije ne. Promijenite stroj i iznos se ne pomiče, a ni obrazac koji ste s njime podnijeli ni pismo koje ga je citiralo.
Negdje iza vaše banke, vašeg dobavljača energije ili porezne uprave, softver se zamijeni. Nitko vam ne kaže, i inače vam ne bi bilo stalo. Stalo vam je na dan kada novi sustav zbroji prošlu godinu i dobije drugačiji odgovor, jer obrazac koji ste već podnijeli više ne odgovara sustavu koji ga je proizveo, a osoba koja to mora objasniti ste vi.
Račun se podmiri u tjedan dana. Dokumentacija se ponovno pročita godinu dana kasnije.
Ovdje je točka zaokruživanja zapisana jednom, prije nego se išta zbroji, i svaka kopija vašeg računa slijedi je. Zato nema telefonskog poziva, nema blokade računa i nema tri tjedna. Kopije se podudaraju jer su izračunate na isti način, a ne zato što je netko naknadno sjeo i uskladio ih.
Razlog je manji nego što zvuči. Porez izlazi u dijelovima centa, i netko mora odlučiti gdje se ti dijelovi zaokružuju. Jedan sustav zaokružuje na svakoj liniji. Drugi zaokružuje jednom, na ukupnom iznosu. Oba su razumna, i mogu završiti cent različito, a da nijedno nije pogrešno.
Jedan račun, tri kopije: potvrda u vašoj ruci, blagajna trgovine i vaša banka. Ponekad dvije od njih završe na različitom centu. Ništa nije ukradeno i nitko nije bio nemaran, a opet vi preuzimate telefonski poziv i vi čekate tri tjedna dok netko odluči koja je kopija bila točna.
Dovoljno malo da se zanemari, sve dok iznos nije ono što dugujete.
Ovo broji u cijelim brojevima umjesto toga, onako kako biste brojali kovanice, pa ništa ne ostaje i ništa ne odstupa. Ono što time dobivate je dosadno i vrijedno imati. Vaš telefon, čitač kartica na šalteru i računalo u drugoj zemlji svi završe na istom iznosu, a najstariji od tri nije ništa manje točan od najnovijeg.
Računalo piše desetinku onako kako biste vi napisali trećinu kao decimalu, što znači ne sasvim. Sam po sebi razmak je daleko premali da se vidi. Ne ostaje sam: račun ima linije, godina ima dvanaest računa, i svaki od tih razmaka i dalje sjedi u ukupnom iznosu na dnu, što je iznos koji se od vas traži da platite.
Iznos koji ste dobili izašao je iz stroja, a drugačiji stroj mogao vam je dati malo drugačiji. Pitajte računalo za desetinku plus dvije desetinke i, ako mu date da pokaže svaku znamenku koju drži, odgovor završava na zalutaloj četvorci. Svaki stroj to radi, pa nitko ne primijeti. Svaki pospremi zalutalu četvorku na svoj način, i tako jedan zbroj, izračunat ovdje i izračunat u drugoj zemlji, završi na dva različita mjesta.
Ono što dobijete je iznos koji odgovara za sebe, i odluka o njemu s datumom.
Certifikacijski paket započinje razgovor s revizorom, a ono što ga zatvara je vaša prijava protiv vašeg vlastitog proizvoda, koju vam nitko ne može uručiti. I ako nijedan iznos koji vaša organizacija proizvede nikada ne mora biti branjen pred nekim izvan nje, iskren odgovor je da ništa od ovoga ne vrijedi promjene.
Mjerač energije pokriva jedan operacijski sustav na jednoj arhitekturi, a drugdje odbija umjesto da procjenjuje. Dokazivanje svojstva zahtijeva instaliran vanjski dokazivač, a bez njega dobivate granice i intervale, koji su korisni, ali nisu dokazi.
Ništa. Proizvodi dokaze, a dokaze procjenjuje osoba. Držat će se loše odabranog numeričkog ugovora s potpunom dosljednošću i proizvesti besprijekoran zapis o tome, a zapis je koristan dio, a ne obećanje točnosti, jer obećanje nije provjerljivo, a zapis jest.
I vrijedi biti jednako jasan o tome što vam ovo ne donosi.
Nijedna od te četiri stvari nije odbačena. One se ne primjenjuju, što je znatno jača pozicija od odbacivanja, i to je razlika između knjižnice i usluge prerušene u knjižnicu. Vaš objavljeni artefakt fiksira verziju i licencu, a poznata se građevina može zadržati za incident bez pitanja ikoga.
Nema ugovora o obradi za izračun, jer nema obraditelja. Nema procjene prijenosa, jer ništa ne napušta sustav. Nema ovisnosti o dostupnosti dobavljača, jer nijedna naša krajnja točka nije na putu. I nema verzije koja vam se podmeće prema tuđem rasporedu izdanja, jer vi odlučujete kada ćete prijeći.
To je knjižnica pod dopustivom licencom, koju je napisala nizozemska tvrtka, i postaje dio vašeg binarnog zapisa. Ništa ne stoji na putu izračuna, pa nema ničega što bi moglo biti nedostupno tijekom vašeg incidenta, nema cijene po pozivu, nema datuma obnove i nema ničega za ponovno pregovaranje kada se vaši volumeni promijene ili vaša politika nabave. Ovisnost je kod koji isporučujete, a ne krajnja točka koju unajmljujete. Vaš objavljeni artefakt može fiksirati verziju i licencu, dok vaš tim bira kada će ažurirati i može zadržati poznatu građevinu za incident. Nabava dobiva kontroliranu komponentu s izlaznim putem, a ne ponavljajući pristup dobavljaču.