AXIOM ja liikuv punkt
Punkt liikus, leping mitte
Fikseeritud punktiga aritmeetika on atraktiivne, sest see on aus. Valite skaala, ütlete, kus punkt asub, ja masin lõpetab teesklemise, et iga arv on pisike ilmaennustus. See muudab taasesituse rahulikumaks, manussüsteemide kohta arutlemise lihtsamaks ja auditid vähem sõltuvaks väljenditest nagu piisavalt lähedal. Tore. Aga ka puudulik.
Üks fikseeritud skaala võib olla liiga jäme. Valige skaala, mis haldab väga väikseid väärtusi, ja suurematele väärtustele jääb ruumi väheks. Valige skaala, mis haldab suuremaid väärtusi, ja väikesed väärtused kaotavad kasuliku detailsuse. Võite töökoormuse jagada mitmeks tüübiks, kuid nüüd on koodibaasis teistmoodi segadus. Õnnitleme, koma on nüüd personaliprobleem.
AXIOM on loodud juhtudeks, kus punkt peab liikuma ilma numbrilist kihti uuesti ujukoma-supiks muutmata. Dweve koodibaasis on see adaptiivne muutuva punktiga perekond: iga konkreetne väärtus kannab märki, eksponendi loendi indeksit ja mantissi pakitud 32-bitises esituses. Eksponent ei ole riistvara meeleolu. See valitakse selgesõnalisest loendist. Mantiss on täisarvuline koormis. Esitatud väärtus on märk korda mantiss korda kaks astmel miinus valitud eksponent. See lause pole armas, kuid see on kogu nipp.
Oluline pole see, et punkt liigub. Ujukoma liigutab punkti juba niigi. Oluline on see, et AXIOM liigutab seda läbi deklareeritud loendi, mida saab üle vaadata, testida, spetsialiseerida ja deterministlikuna hoida. Kood ei palu platvormil improviseerida numbrilist isiksust. See annab väärtusele kompaktse lepingu ja paneb aritmeetika pärast iga tehet selle lepingu juurde tagasi pöörduma.
Lähtekoodis on konkreetne kuju Axiom<M, E>. Mantissi laius peab mahtuma esitusse, praktiliste aliastega nagu Adp4, Adp8, Adp16, Adp23, AdpNN4 ja AdpNN8. Need nimed pole kaunistused. Need ütlevad teile, kui palju koormist ja millist eksponendi profiili väärtus peaks kasutama. NN-kujulise eksponendi loendiga väärtus ei ole sama lubadus kui laiema üldloendiga väärtus. Nende samana kohtlemine, sest mõlemad näevad numbrilised välja, on see, kuidas tõsised koodibaasid hakkavad folkloori koguma.
Muutuv punkt ei ole meeleolu
Väljend adaptiivne muutuv punkt võib kõlada nagu keegi oleks ujukoma ümber nimetanud, et hange koosolekust läbi saada. See pole see, mis toimub. AXIOM ei muuda eksponenti nähtamatuks kõrvalmõjuks. Eksponent valitakse loendist, mis on kinnitatud tüübi või strateegia külge. Praeguses lähtekoodis on konkreetsed eksponendi loendid standardne [16, 8, 4, 0], tihe [12, 8, 4, 0], närvivõrgu kaalud [8, 6, 4, 0] ja peen loend [16, 14, 12, 10, 8, 6, 4, 0]. Need on praegused lähtekoodi väärtused ja see eristus on oluline, sest lähtekood on aja jooksul muutunud; praegused väited peaksid järgima praegust koodi, mitte aegunud eksponendi loendeid.
Loend on tooteotsus. Standardne loend annab mõned laiad ribad. Tihe loend muudab ribade asukohta. NN-loend on kujundatud kaalulaadsete andmete jaoks. Peen loend pakub rohkem lähedasi valikuid. Ükski sellest ei eemalda otsustusvõimet. See viib otsustusvõime kohta, kus koodiülevaade seda näha saab.
See on vahe kontrollitud adaptiivse esituse ja üldise vabanduse vahel. Fikseeritud punkti tüüp ütleb, et iga siinne väärtus kasutab seda skaalat. AXIOM ütleb, et iga siinne väärtus valib selle deklareeritud skaalade hulgast. See on laiem leping, mitte puuduv leping. Punkt liigub, kuid liigub rööbastel. Väga hollandlik, tõesti. Isegi koma on infrastruktuuriga varustatud.
Tasub olla täpne selle osas, mis AXIOM ei ole. See ei ole täpne ratsionaalne aritmeetika. See ei ole luba vahemikuanalüüsi ignoreerida. See ei ole jõudlusväide. See ei ole garantii, et valitud eksponendiloend sobib sinu töökoormusega, sest akronüüm tundus energiline. Sa pead ikkagi mõistma väärtusi, dünaamilist vahemikku, lubatavat viga, juurutamise sihtmärki ja taasesituse nõudeid. AXIOM muudab need valikud paremini kontrollitavaks. See ei pane neid kaduma. Kui midagi, muudab see laisa numbrilise mõtlemise raskemini peidetavaks, mis on tavaliselt koht, kus karjumine algab.
Aritmeetika peab koju jõudma
Arvuvormingut on lihtne joonistada ja raskem kasulikuks muuta. Kasulik osa on aritmeetika. Liitmine ja lahutamine peavad tegelema väärtustega, mis võivad asuda erinevatel eksponendiribadel. Korrutamine ja jagamine peavad tegema laiemat täisarvulist mantissitööd enne tulemuse tagastamist sihtkujule. Pärast tehet tuleb väärtus normaliseerida tagasi saadaolevasse eksponendivalikusse. See viimane samm on oluline, sest esitus, mis ei suuda koju jõuda, on lihtsalt puhkus välismaal parema brändinguga.
AXIOM aritmeetikal on seetõttu rütm. Too sisse pakitud väärtused. Joonda või laienda vastavalt vajadusele. Teosta täisarvule orienteeritud tehe. Normaliseeri. Salvesta tulemus tagasi deklareeritud kujusse. Kui see ei sobi, peaks see olema nähtav esitusprobleemina, mitte vaikselt masina meeleolu hooleks jäetud. Leping on kasulik, sest sellel on servad.
See on sama põhjus, miks Numerus selle ümber oluline on. Laiem virn ei püüa koguda arvuvorminguid nagu marke. See tahab aritmeetikat, mis suudab üle elada taasesituse, manustatud juurutuse, simulatsiooni, mudeli tihendamise, testid ja auditijäljed. AXIOM on üks perekond selles loos. See tegeleb konkreetse probleemiga: väärtused, mille kasulik skaala muutub, kuid mille käitumine peab siiski olema deterministlik.
See on igav lause, mis päästab meeskonnad hiljem: normaliseeri tagasi kujusse. See kõlab nagu rakenduse üksikasjadeni, kuni taasesitus erineb, lävi pöördub või tihendatud mudel käitub väiksemal sihtmärgil teisiti. Siis saab sellest lause, mida kõik sooviksid, et oleks arhitektuuridokumendis olnud.
Miks AXIOM asub Numeruse all
Avalik Numeruse lugu on tahtlikult lihtsam kui lähtepuu. Enamik lugejaid tahab teada, kas numbriline kiht suudab anda deterministliku aritmeetika, fikseeritud punkti perekonnad, kümnendkäitumise, no_std hoiaku, täisarvule orienteeritud manustatud profiilid, valideerimise ja sama vastuse kaks korda. Nad ei vaja igat sisemist tüüpi esimesel lehel. See ei ole saladuslikkus. See on halastus.
Allpool on ühine numbriline kiht laiem. See kannab kahend-, kolmend-, natiiv- ja alambaidiseid täisarvutüüpe, fikseeritud punkti aliaseid, ühilduvustööks mõeldud ujukomatüüpe ning kohanduvat AXIOMi. Ühised tunnused annavad neile perekondadele ühise pinna. Numerus mähib seejärel kokku osad, mis peaksid olema tootesuunalised: kahend- ja kümnendfikseeritud punkt, AXIOM, täisarvud, tehted, DSL-pinnad ja kontrollimise hoiak. See eraldus on tervislik. Alus võib olla lai, ilma et avalik leht näeks välja nagu menüü restoranist, mis on enesekindluse kaotanud.
AXIOM väärib oma artiklit, sest see pole lihtsalt veel üks kirje selles loendis. Fikseeritud punkt seisneb punkti paigutamises ühte kohta. Kümnendfikseeritud punkt seisneb täpsetes kümnendkohtades. Kahend- ja kolmendvormid seisnevad kompaktsetes madala bitilaiusega radades. AXIOM seisneb selles, et punkt muudetakse väärtuse juhitud osaks. See muudab seda, kuidas mõelda esitusest, aritmeetikast, testidest ja juurutamisest.
See muudab ka seda, kuidas avalikke väiteid tuleks piiritleda. AXIOMi jõudlus kuulub praegustele mõõtmistulemustele praeguse koodi kohta, mitte päritud folkloorile. Laiemat virna ei tohiks kirjeldada kui null ujukomatehtega, sest teisendus- ja kuvamispinnad võivad selle piiri ületada. Ohutum ja täpsem väide on, et põhiline fikseeritud ja kohanduv aritmeetika on täisarvupõhine ning loodud deterministliku käitumise jaoks. See lause on vähem efektsem. Hea. Efektsed numbrilised väited on see, kuidas armatuurlaudadest saavad vabanduste generaatorid.
Mitu arvutusteed, üks perekond
Konkreetne pakitud väärtus on alles algus. Lähtekood sisaldab rohkem kui ühte viisi AXIOMi kasutamiseks, sest töökoormused pole piisavalt viisakad, et ühte paigutusse igavesti mahtuda. On pakitud konkreetne tee kompileerimisaja eksponendiloendite jaoks. On Flex<S> käitusaja eksponendisalvestuse jaoks täisarvuliste salvestusmahtude kohal. On tensor- ja plokivormid, kus jagatud eksponendistruktuur võib olla kasulik. On kihistatud töötlus. On APoT, kus väärtusi saab esitada märgiga kahe astmete summana, nii et korrutamine võib muutuda niheteks ja liitmisteks. Selle ümber on profiilianalüüsi ja õpitud eksponendi uurimiskood.
See laius pole põhjus metsikute väidete tegemiseks. See on põhjus olla töökoormuse suhtes ettevaatlik. Skalaarse taasesituse tee, partiipõhise kvantimise tee, tensorilaadne tee ja APoT-kaalude tee on erinevate surve all. Mälu paigutus, eksponendi taaskasutus, vahemik, normaliseerimine ja riistvara kuju loevad kõik. AXIOM annab sõnavara nende valikute jaoks. See ei vabasta kedagi nende tegemisest.
Siin muutub inseneritöö huvitavaks. APoT pole pelgalt armas tihendustrikk. Sobivate väärtuste korral muudab see korrutamise nihke- ja liitmisülesandeks. Tensor- ja plokiteed saavad jagada eksponendistruktuuri, kui töökoormusel on piisavalt kuju. Flex hoiab käitusaja eksponendisalvestuse kättesaadavana, kui tüübitasandi loendid on liiga jäigad. Ühtegi neist ei tohiks valida sellepärast, et diagramm nägi kena välja. Töökoormus valib, või veateade valib hiljem ja on selle juures palju vähem võluv.
Kuidas AXIOMi valikut üle vaadata
Esimene ülevaateküsimus on igav ja seetõttu kasulik: miks mitte lihtsam arvutüüp? Kui väärtus on raha või reguleeritud kümnendkogus, võib Decimal olla õige vastus. Kui vahemik on väike ja hästi piiritletud, võib Q-formaadis fikseeritud punktiga tüüp olla rahulikum. Kui arv eksisteerib ainult selleks, et suhelda failivormingu või välise API-ga, võib ujukomaga seotud tüüp olla aus servaadapter. AXIOM õigustab oma olemasolu siis, kui töökoormuse suurusjärk muutub, on siiski vaja deterministlikku lepingut ja kasu on selgesõnalisest eksponendikomplektist.
Teine küsimus on, kas eksponendiloend kirjeldab andmeid või ainult meelitab inseneri. Neli laia vahemikku hõlmav loend on teistsugune kompromiss kui peeneteraline kaheksa kirjega loend. NN-kujuline loend ei ole dekoratiivne silt. See ütleb, et väärtuste puhul eeldatakse, et need käituvad nagu kaaluandmed. Kui jaotus ei ühti loendiga, töötab esitus ikkagi. Tarkvara on sageli valmis tegema valet asja muljetavaldava kiirusega. See ei tee sellest veel kujundust.
Kolmas küsimus on, kus normaliseerimissurve ilmneb. Liitmine kaugel asuvate eksponendivahemike vahel võib detaili kaotada. Korrutamine võib luua tulemuse, mis vajab teistsugust vahemikku. Korduvad toimingud võivad koguda survet täpselt nendesse kohtadesse, mida demo ei külastanud. Ülevaade peaks küsima piiriteste nulli ümber, märgivahetuste, eksponendisiirete, suurte mantisside ja korduvate toimingute jaoks. Kui need juhtumid tunduvad tüütud, on see hea. Need on ilmselt juhtumid, mis tegelikult loevad.
Viimane küsimus on, kuidas esitus tõendeid maha jätab. Millise tüübiteise me valisime? Millise eksponendiloendi? Millise mantissilaiuse? Millise teisendustee? Milline oraakel või omadustest toetab väidet? Kui vastus on laiali kommentaarides ja optimismis, on süsteem juba osa kasust kaotanud. AXIOM on kõige kasulikum siis, kui numbriline valik saab osaks arhitektuuriregistrist, mitte nutikast lokaalsest nipist, mis on peidetud kolm moodulit sügavamale.
Kontrollimine võidab kangelasnumbrid
Numbrilised vormingud tõmbavad ligi kangelasnumbreid. Väiksem. Kiirem. Tõhusam. Parem. Sõnad on odavad ja saabuvad tavaliselt enne testiraamistikku, mis on täpselt vale järjekord. AXIOMi puhul on vastutustundlik hoiak kohelda võrdlusnäitajaid kui versioonipõhist tõendusmaterjali, mitte mütoloogiat. Kui võrdlusnäitajat ei ole uuesti käitatud praegusel lähtekoodil, praegusel kompilaatoril, praeguste lippudega ja praegusel riistvaral, ei ole see avalik väide. See on postkaart eelmisest pärastlõunast.
Rohkem loeb kontrollimise tee. Kas kodeerimine ja dekodeerimine jääb deklareeritud lepingu piiresse? Kas toimingud normaliseeruvad seaduslikku kujusse? Kas eksponendipiiride äärejuhtumid käituvad tahtlikult? Kas omadustestid katavad tüütuid väärtusi, mida inimesed unustavad, sest inimestel on hobid? Kas kõrge täpsusega oraakel on olemas seal, kus võrdlus on mõttekas? Kas taasesitus suudab sama väärtusetee uuesti üles ehitada?
See viimane küsimus on põhjus, miks see meie virna kuulub. Dweve ehitab jätkuvalt süsteemide poole, kus arvutus jätab tõendeid: parserid kviitungitega, pearaamatud tüpiseeritud sündmustega, otsing deterministlike teedega, andmevormingud, mis ei vea korduvate võtmete vankrit, simulatsiooni- ja numbrilised kihid, mida saab taasesitada. AXIOM sobib, sest punkti liigutamine ei tohiks tähendada kviitungi kaotamist.
Õppetund
AXIOMi õppetund ei ole see, et fikseeritud punkt oli vale. Fikseeritud punkt on endiselt üks puhtamaid tööriistu, mis meil on. Õppetund on see, et üks fikseeritud skaala ei ole alati piisav ja alternatiiv ei pea olema läbipaistmatu ujukomakäitumine. Väärtus võib kanda kontrollitud eksponendivalikut. Punkt võib liikuda, samal ajal kui leping jääb nähtavaks.
See on avalik lugu, mida tasub rääkida. Dweve AXIOM pakib kokku märgi, astendaja indeksi ja mantissi. See valib etteantud astendajate loenditest. See kasutab täisarvupõhist aritmeetikat ja normaliseerib tulemused tagasi deklareeritud kujudesse. Koodibaasis on sellel konkreetsed, paindlikud, tensor-, plokk-, kihilised, APoT- ja uurimistee rajad. See kuulub Numeruse alla, sest deterministlik aritmeetika ei ole kõrvaline kõrvalepõige. See on osa sellest, kuidas tõsised süsteemid annavad sama vastuse kaks korda.
Punkt liigub. Vastutus ei liigu. See ongi kasulik osa.