Binäärijärjestelmälaskut pääsivät Python-perusteissa vähän yllättämään. Jos olisin kurssilla joutunut oikeasti opettelemaan kaiken sivussa uuden lukujärjestelmän, olisin ollut hyvin vetelällä maaperällä. Miksi binäärilukuja pitää edes käyttää?
Python-kurssilla käytiin läpi bitwise-koodauksen perusoperaattorit eli binääriluvut ja perusjutut, joita niillä voi tehdä. Kurssilla ei kuitenkaan käsitelty sitä, miksi binäärilukuja käytetään ja miksi ne liittyvät tietokoneisiin. Se jäi kiinnostamaan. Selvisi, että binäärien maailma vaikuttaa n00bin silmiin suurin piirtein noituudelta tai ainakin fysiikan ja informaation ontologian hähmäiseltä rajankäynniltä. Ymmärrän binäärien toimintaperiaatteen, mutta en kyllä tunne oloani niiden kanssa kotoisaksi.
Binääriluvuthan ovat siis niitä ykkös-nollaketjuja, joissa ”kympin raja” eli kantaluvun ”täyttyminen” tulee vastaan heti ykkösen jälkeen, ja pitää ottaa uusi numero mukaan ketjuun. Niinpä binääriluvuista tulee merkkimäärässä laskettuna helposti tosi paljon pidempiä kuin kymmenjärjestelmän luvuista. Ne tuntuvat epäkäytännöllisiltä. Miksi ne ovat sitten niin tärkeitä, että ne nostetaan esiin Python-alkeiskurssilla?
Tietokoneet toimivat binääreillä
Googlailujen tulos: tietokoneiden fyysiset, elektroniset osat toimivat binääreillä. Se lukion fyssankurssilla kerrottu 0 = virta ei kulje ja 1 = virta kulkee pitää siis karkeasti ottaen paikkansa. Binääreillä hallitaan virran kulkua ja tämä on kai se kohta, jossa informaatio ”muuttuu fyysiseksi”. Huima juttu.
Tietokoneella tieto on siis pohjimmiltaan nollina ja ykkösinä, joten tietokonetta käskeäkseen kaikki tietokoneella käsiteltävä informaatio pitää jotenkin saada muutettua nolliksi ja ykkösiksi, käytännössä kai koodaamalla. Tämä ei kuitenkaan vissiin merkittävissä määrin tapahdu Pythonilla tai Javalla, vaikka Python-kurssilla asiaa sivuttiinkin.
N00b-tasoista Python- tai Java-koodaria informaation perimmäinen binäärisyys ei siis käytännössä juuri kosketa, koska Python- tai Java-koodaus tapahtuu ohjelmissa, joissa ohjelman tekijä on jo miettinyt tämän asian. (Tai ei kai oikeasti edes ohjelman tekijä vaan ohjelman tekijä on tehnyt ohjelman käyttöjärjestelmässä jonka tekijä on miettinyt tämän asian, mutta kuitenkin.)
Python-kurssi avasi pelottavan maailman, jossa luvutkaan eivät ole mitä luulin
Codeacademyn kurssilla binääreille tehtiin alkeistasolla binäärikoodaustoimituksia. Niillä ei nähdäkseni ole tekemistä perinteisten laskutoimitusten kanssa. Binäärioperaattoreilla (kuten AND, &; OR, |; XOR, ^ tai NOT, ~) naksutellaan ykkösiä ja nollia päälle ja pois, ja nämä eivät toimi yhtään samoin kuin ”tavalliset” matemaattiset operaattorit. Tämä on ihan oma uusi maailmansa. Apuva.
Codeacademyssa myös ohitettiin mainintana, että tietokoneihmisillä käytössä ovat myös kahdeksan- ja kuusitoistakantaiset järjestelmät (kun binäärijärjestelmä on kaksikantainen ja yleensä meillä on käytössä kymmenkantainen). Selvä. Sitä, miksi on näin, ei selitetty. Ajatus etenkin 16-kantaisesta järjestelmästä tuntuu hankalalta, kun minun maailmassani numeromerkkejäkin on tähän saakka ollut vain 10 (0–9). 16-kantaisessa luvussa siis kaiken järjen mukaan pitää jotenkin ryhmitellä lukuja vielä senkin mukaan, montako lukua muodostaa yhden yksikön, jos käytössä ovat arabialaiset numerot? Eikö vain? Vai onko käytössä jotain lisäsymboleita? Onko joku keksinyt uusia numeromerkkejä? Wäää!
Voi ei, onneksi minun koodaustasollani (perusohjelmointikielet) nämä asiat eivät ole olennaisia. Hirveä suo.