Datamaskiner og databehandling

Husker du forkortelsen «EDB»? Den står for elektronisk databehandling. I dag går det inn i det vi kaller IT eller IKT (informasjons- og kommunikasjonsteknologi). Det eldre begrepet sier imidlertid mye om hva vi egentlig snakker om her: det er nettopp elektronisk behandling av data.
Før vi går videre, la oss gi et overblikk over hvordan datamaskiner fungerer, og hvordan de behandler data elektronisk. Det vil nemlig gjøre det enklere å se hva som er mulig med data – og hvordan vi kan gå frem for å gripe disse mulighetene.

Maskinvare: Prosessorer og minne

Vi sa tidligere at maskinvaren i datamaskinen grovt sett kan deles inn i prosessor og minne. I tillegg er inn- og utenheter relevant når det gjelder data. La oss se på disse i tur og orden.

Prosessorer

En prosessor er en enhet som nettopp prosesserer, eller behandler data, etter instruks fra et program. (NB: Her bruker vi prosessering i en mer generell betydning enn da vi tidligere snakket om dataenes livssyklus). Instruksjonene hentes fra minnet. En prosessor kan bare prosessere bits.

Minne

Når det gjelder minne skiller vi dette i to:
  • Primærminne – betegnes også som internminne og arbeidsminne. Dette holder data når de behandles. Vi snakker typisk om RAM som primærminne. RAM står for Random Access Memory. RAM tømmes når datamaskinen slås helt av.
  • Sekundærminne – lagrer data etter prosessering, for eksempel på en Solid State Drive (SSD) eller harddisk. Disse tåler i utgangspunktet at strømmen slås av og vil da fortsatt beholde dataene.

Inn- og utenheter

En innenhet er en enhet som kan hente inn, fange eller registrere data. Det kan for eksempel dreie seg om en sensor, et lydkort eller – som sagt – et tastatur.
En utenhet er en enhet som kan presentere informasjon til en bruker, for eksempel en skjerm, en printer eller et lydkort. Som vi ser her, kan noen ting, som et lydkort, være både en innenhet og en utenhet.

Programvare: Algoritmer, programmer og programmering

Datamaskiner kan ikke tolke nyanser eller lese mellom linjene, eller gjøre noe på eget initiativ. Uten nøyaktige og presise instruksjoner, kan de ikke gjøre noe som helst. Maskinen gjør nøyaktig det den får beskjed om – hverken mer eller mindre.
Vi som gir disse instruksjonene må derfor være helt presise i beskrivelsene våre.

Algoritmer

Slike instruksjoner kalles algoritmer. Som du allerede har lært tidligere i kurset, er det gjennom algoritmer at vi forteller maskinen hvordan den skal løse en gitt oppgave. Algoritmen er i praksis en trinnvis oppskrift som sier steg for steg hva maskinen skal gjøre.
Alt en maskin gjør er bygd opp av en rekke slike logiske instrukser. Når du trykker på tastaturet er det algoritmer som sier til maskinen at den skal lage bokstaver i dokumentet ditt. Når du skriver inn et søk i Google, er det algoritmer som finner relevante resultater.
Et sett med algoritmer som en datamaskin kan bruke til å utføre bestemte funksjoner og oppgaver, kalles et program. Å skrive kode for å lage disse programmene, heter å programmere.

Programmering

Programmeringens historie er eldre enn datamaskiner. Allerede ved inngangen til 1800-tallet hadde en for eksempel automatiske vevemaskiner, som var programmert ved hjelp av såkalte «hullkort».
Disse kortene er akkurat det det høres ut som: Kort – av papp eller lignende – som har masse hull i seg. Her brukes binærsystemet: Hvorvidt det er hull eller ikke på en bestemt posisjon, avgjør om posisjonen leses som 0 eller 1, og dermed også hvilken instruksjon som blir gitt. Det var også hullkort som ble brukt i de første digitale datamaskinene.
I dag har vi heldigvis langt mer effektive måter å programmere på enn å trykke ut fysiske hull med instruksjoner i binærtall – selv om instruksjonene fortsatt til syvende og sist koker ned til 0 og 1.

Programmeringsspråk

Maskinkode er ikke spesielt intuitivt for mennesker når vi skal gi komplekse instruksjoner. Derfor brukes som regel ulike programmeringsspråk,som er forståelig for mennesker, og som automatisk oversettes til maskinkode.
Noen språk er tettere på maskinkodespråk, altså 0 og 1 (lavnivåspråk), mens andre er mer abstrakte og mer intuitive for mennesker (høynivåspråk). Selv om språkene er ulike, følger de til syvende og sist de samme logiske prinsippene, og de vil alle oversettes til maskinkode når de behandles av datamaskinen.
Noen kjente eksempler på programmeringsspråk er Python, Java, C, C++, og JavaScript.
Grunnen til at vi i det hele tatt har mer enn ett språk, er først og fremst fordi de er laget for å gjøre ulike ting. Noen språk er som multiverktøy som kan brukes til det meste, mens andre er som en stikksag som er perfekt for en helt spesifikk oppgave.
Hvilket språk du velger å jobbe med er avhengig av hva du skal gjøre, men det som er viktig å vite er at alle programmeringsspråk har noen felles logiske grunnprinsipper. Hvis du lærer et språk, blir det enklere å lære et til.

Programmeringsspråk – og andre datamaskinspråk

Det finnes mange ulike programmeringsspråk, med kryptiske navn som Python, Java, C, C++, JavaScript, C#, SQL og R.
Det finnes også andre typer datamaskinspråk, som er mer begrenset i sitt bruksområde enn et programmeringsspråk. For eksempel markeringsspråk som HTML og spørrespråk som SQL.
Noen av datamaskinspråkene egner seg til en rekke oppgaver (alt fra å lage apper til å gjøre dataanalyse), mens andre har spesifike bruksområder som å jobbe med databaser eller til å lage nettsider.
Du kan lese litt mer om noen utvalgte språk i boksene nedenfor.

Fun fact

Objektorientert programmering – en norsk oppfinnelse!

Java – som du møtte på ovenfor – er et eksempel på et såkalt objektorientert programmeringsspråk. Selv om du ikke skulle ha hørt dette uttrykket før, er det likevel noe du møter overalt i appene og programmene du bruker hver dag.
Dette startet faktisk her i Norge med programmeringsspråket Simula, som ble funnet opp på Universitetet i Oslo, Norsk Regnesentral og SINTEF på 1960-tallet. Simula introduserte konsepter som klasser og objekter i programmering, som er helt sentralt i moderne programmeringsspråk som Java og C++.
Vi skal straks se littegrann nærmere på koding og programmering. Men først skal vi bli enda litt bedre kjent med digitale data.