Mitä koodi tekee, kun se käskee tietokonetta? Mikä edes on tietokone?
Minä käytän tietokonetta joka päivä, mutta vasta koodaamisen myötä minulle on herännyt olennaisia kysymyksiä: Mihin koodi vaikuttaa? Mikä saa koodin muuttumaan vaikka näytön valoksi? Mistä tietokone tietää, että mitä mistäkin klikkauksesta pitää tapahtua? Mitä kieltä tietokone puhuu, jos siinä ei ole käyttöjärjestelmää? Kokosin aiheesta itselleni sanaston!
Vastuuvapauslauseke: Tämä on vain minun yritykseni tajuta, mitä koodaus oikeasti tekee. Olen keräillyt tietoa sieltä täältä, enkä ole aiheen asiantuntija, vaan n00b. Jos tiedon laadulla on väliä, kannattaa tarkistaa jostain muualta. Jos huomaatte, että olen käsittänyt jotain väärin, selventäkää pliis.
Sallan suuri tietokonesanasto
Assembly on ohjelmointikieli, joka on melkein konekieltä. Assembly on usein käyttöjärjestelmäkehittäjien kieli ja niin vaikeaa, että se on todella varattu vain HC-koodareille. N00bin ei siis tarvitse vaivata sillä päätään. Ks. myös konekieli ja käyttöjärjestelmä.
Back end on tietokoneohjelmisto, joka ei näy käyttäjälle. Se on siis se koodi ja ohjelma, joka määrittää käyttäjälle näkyvää informaatiota ja kertoo, mitä informaatiolle eri tilanteissa tapahtuu, mutta se ei näy käyttäjälle. Eli se on se osa ohjelmistoa, joka pyörii palvelimen päässä, ei näytöllä. Back end toteutetaan jollain ohjelmointikielellä. Ks. myös front end.
Front end on käyttäjälle esimerkiksi selaimessa näkyvä osa ohjelmaa, eli graafiset ominaisuudet ja se kaikki, mitä loppukäyttäjä näkee. Front endiä muotoillaan sitä varten tarkoitetuilla kielillä, kuten vaikka HTML:n, CSS:n ja SASS:n avulla. Ks. myös back end.
Graafinen käyttöjärjestelmä ks. Käyttöjärjestelmä
Konekieli on kieli, jota tietokone ymmärtää mutta ihminen ei juurikaan. Konekieli on ykkösiä ja nollia, ja sillä päästään ohjaamaan suoraan tietokoneen fyysisiä laitteita. Konekielellä ohjelmoiminen on pirullisen hankalaa ja hidasta (en ole ihan varma, onko se edes oikeasti mahdollista), joten avuksi on kehitetty ihmisen ymmärtämiä ohjelmointikieliä. Ohjelmointikieli, siis vaikka Python tai Java, käännetään konekielelle erilaisilla kääntäjillä. Ks. myös Assembly, kääntäjä ja tulkki.
Käyttöjärjestelmä on ohjelma, joka on tietokoneessa oikeastaan välttämätön. Ilman käyttöjärjestelmää tietokoneen eri laitteita pitäisi ohjailla suoraan ja erikseen, ja mistä vaan vähänkään monimutkaisemmasta toiminnosta tulisi ylitsepääsemätön. Käyttöjärjestelmä on siis ohjelma, joka yhdistää tietokoneen fyysiset laitteet ja jonka kautta niille annetaan komentoja.
- Graafinen käyttöjärjestelmä on se, mitä n00b on tottunut käyttämään, eli missä on työpöytä ja kuvakkeita ja tehtäväpalkki ja kursori eli hiiren nuoli ja muuta sellaista. Windows on graafinen käyttöjärjestelmä.
- Käyttöjärjestelmä voi olla myös tekstipohjainen, jolloin näytöllä näkyy vain tekstiä. (Myös graafista eli ”tavallista” Windowsia voi näköjään käyttää myös tekstipohjaisesti etsimällä päävalikosta cmd-ikkunan ja alkamalla kirjoittaa siihen oikeita käskyjä, jos tietää oikeita käskyjä. Cmd tarkoittaa command.)
Kääntäjä on ohjelma, joka kääntää jollain ohjelmointikielellä kirjoitetun koodin konekieleksi. Kääntäjä kääntää koko koodin kerralla mutta ei suorita sitä. Suoritus voidaan hoitaa myöhemmin. Ks. myös konekieli ja tulkki.
Palvelin on tietokone, jossa ei ole näyttöä. Sen sijaan se varastoi tietoa ja vissiin myös laskee ja prosessoi koko ajan. Valtavat palvelinsalit joita telkkarissa näkee ja joita mm. Googlella on ja joita pitää jäähdyttää on siis täynnä tällaiseen käyttöön varattuja palvelintietsikoita.
Tulkki on ohjelma, joka kääntää pätkän ohjelmointikieltä konekielelle ja suorittaa sen heti. Olennaisesti tulkki-ohjelma toimii samoissa paikoissa kuin kääntäjäkin, mutta usein toinen on jostain syystä tietyssä tilanteessa näppärämpi. En tiedä miksi. Ks. myös konekieli ja kääntäjä.
Huh! No niin! Tämä selkiyttää jo tosi paljon, ja ymmärrän nyt vähän paremmin, missä ympäristössä koodi toimii ja mihin millaisellakin koodilla on mahdollista vaikuttaa. Nykyinen, moderni tietokone on hirveän monimutkainen systeemi.
Päättelin tästä kaikesta seuraavaa:
Tietokone on kasa laitteita, jotka käsittelevät informaatiota eri tavoin. Ohjelmointikieli on ihmisen ymmärtämä kieli, joka käännetään ohjelmalla konekieleksi, jolla näitä laitteita voi hallinnoida. Kun opettelen koodaamaan Pythonia ja Javaa, opettelen käskemään tietokonetta, mutta en niin konkreettisesti kuin vaikka käyttöjärjestelmäkoodarit tekevät. Minun koodini ei siis vaikuta suoraan laitteiden toimintaan, vaan se suodattuu monien eri HC-koodarien tekemien ohjelmien läpi ennen kuin sen seuraukset näkyvät näytöllä.
Selvä juttu!