Actor-programmering

Programmering som följer en modell där programmet är indelar i små separata delar som var och en beter sig lite som ett ”program i programmet”. Delarna kallas aktorer och kommunicerar med varandra genom att skicka meddelanden till varandra i stället för att göra funktionsanrop till varandra. Erlang är ett programspråk som följer aktor-modellen (det utvecklades av Ericsson för telefonväxlar och används nu i bla meddelandehanteringssystem, en av Erlangs styrkor är att man kan uppgradera utan att starta om programmen). Det flesta stora programspråken har tillägg som underlättar att bygga på aktor-modellen, t ex Akka i Scala eller Actor4J i java.

actor

1. Avgränsad del av ett program inom actor-programmering, som beter sig som ett ”program i programmet” och kan ta emot och skicka meddelanden. 2. En figur eller ett ting i ett spel eller en animation som kan visa sig på en scen och röra sig och/eller utföra saker.

anrop

När en del av ett program “kallar på” en annan del för att fråga något eller kommendera den att utföra en uppgift.

append

(här) Lägga till, t ex en text till en annan text eller nya element till en lista, på slutet.

Binära tal

Ett talsystem som bygger på basen 2, med andra ord finns bara två ”siffror”, noll och ett, i regel kallade bits. Det decimala talet 42 skrivs t ex 101010. Datorer räknar binärt (med några ytterst sällsynta undantag) eftersom det passar så bra att noll och ett kan representeras av en elektrisk krets som kan vara ”tänd” eller ”släckt”.

bygga

(allmänt inom programmering) Omvandla flera delar av kod programmeraren skrivit till en form en processorn förstår, och sedan sätta samman allt till ett enhetligt program. Ett ”bygge” även innefatta t ex automatisk testning, generering av dokumentation och installationsprogram.

datatyper

Information om vad en viss digital information (för datorn är det ju bara ettor och nollor) i datorns minne betyder, är det t ex ett siffervärde, en text eller en bild. Det är stor variation mellan programspråk hur pedantiska de är med datatyper (ofta kallat hur typsäkra de är).

decimaltal

Tal som består av en del med ental, tiotal hundratal osv, ett decimaltecken, och sedan en del med tiondelar, hundradelar osv. Varje siffra är värd tio gånger mer än sin granne närmast till höger. Inom programmering är decimaltecknet alltid en punkt, kommatecknet används till annat, t ex mellan parametrar.

drop

(i Scala) Ta bort ett givet antal element från början av en lista eller text. Motsatsen till take.

editor

Ett program där man ändra i något, i en text-editor kan man t ex skriva in och ändra i en text, t ex programkod. Det finns editorer för det mesta, i en bild-editor kan man t ex redigera en bild.

else

Frivilligt tillägg till en villkors-sats (if-sats) som innefattar kod som ska utföras om villkoret inte blev uppfyllt.

exekvera

När datorn utför instruktionerna i ett program. Att exekvera ett program är ett finare ord för att köra igång det.

float, flyttal

Ett tal som består av en mantissa (ett heltal eller decimaltal) och en exponent som talar om hur många gånger mantissan ska multipliceras eller divideras med basen (när man skriver ett flyttal i ett program basen för det mesta 10, men datorn omvandlar det sedan och räknar internt med basen 2). Flyttal kan anta allt emellan mycket små och mycket stora värden (ett 64-bits flyttal kan t ex ha motsvarande över 300 nollor före eller efter decimalpunkten), men ”priset man betalar” är att de inte alltid är exakta. I programkod skriver man t ex flyttalet en och en halv miljon (1500000) på samma sätt som på många miniräknare; 1.5E6 (mantissan är 1.5 och exponenten 6).

Funktionell programmering

Programmering inspirerad av matematik, där man bygger med funktioner som har in-värden in och ut-värden men inget definierat program-flöde och inga variabler. Funktioner kan även ha andra funktioner som in- och ut-värden, och de kan vara rekursiva (anropa sig själva). Haskell är ett exempel på ett ”renlärigt” funktionellt programmeringsspråk där inga funktioner har tillstånd eller ”sidoeffekter”. Haskell har inspirerat andra kombinerade språk som förespråkar funktionell programmering men inte kräver det, t ex F#, Rust och Scala.

gränssnitt

De delar av programvaran och hårdvaran som är inblandade i kommunikation mellan dator och användare eller mellan datorn och andra tekniska saker, kan vara en annan dator eller t ex en maskin. Bildskärm och tangentbord med tillhörande drivrutiner är exempel på användargränssnitt.

heltal

Tal längs en linje där varje steg motsvarar en odelbar enhet, t ex -2, -1, 0, 1, 2 osv. Heltal har ingen decimal-del, men kan ha olika bas, inne i datorn är basen oftast 2 i stället för basen 10 som vi använder.

Hexadecimal

Ett talsystem som bygger på basen 16, ”siffrorna” är 0 till 9 med tilläggen A till F. Hex-kod (i vardagligt tal) är mycket vanligt inom allt som har med datorer att göra iom att det går jämnt upp med det binära systemet datorer använder internt (fyra binära bits blir ett hexadecimalt tecken). Det decimala talet 15, som är 1111 binärt, blir F hexadecimalt, nästa decimala tal, 16, som är 10000 binärt blir 10 hexadecimalt.

if

(inom programmering) Villkorssats. En del av ett program som består av ett villkor kopplat programkod som bara ska utföras om villkoret är uppfyllt. Alla programspråk har någon form av villkors-sats och den heter nästan alltid if, undantaget är mer ”maskinnära” språk som assembler. Domänspecifika språk, som i ordets rätta mening egentligen inte är programspråk, t ex HTML har oftast inga villkorssatser.

input

(inom programmering) vanligt samlingsnamn på de kanaler med vilka yttervärlden kan meddela sig till ett program. Om yttervärlden råkar vara ett annat program är det det ena programmets output som blir det andras input. (här) En del av programmet som anropas när användaren skrivit in en text.

instans

Unikt och identifierbart exemplar av data av en viss typ. Om t ex anka är en datatyp är Knatte, Fnatte och Tjatte tre st olika instanser av datatypen anka. Inom objektorienterad programmering benämner man i regel en instans av en klass som objekt.

instruktion

(här) Den mista beståndsdelen av det som talar om vad datorn ska utföra. Den programkod man skriver omvandlas i flera steg till en mängd instruktioner, ofta bara några byte långa, som datorns processor läser.

int

(här) Namnet på den datatyp som beskriver ett heltal (förkortning för integer, heltal). Det är, och har alltid varit, en av de absolut vanligast förekommande datatyperna när man programmerar.

klass

Begrepp i objektorienterad programmering som beskriver en avgränsad del av ett program som kapslar in variabler (källade fält) och saker som kan göras med dessa (metoder). Ofta kan en klass ärva egenskaper från en annan klass.

kompilator

Ett program vars uppgift är att översätta något en programmerare skrivit i något programspråk till maskininstruktioner som en processor kan förstå, eller något mellanformat som en virtuell maskin kan förstå. Många programspråk har ingen kompilator, de översätter programkoden till maskininstruktioner ”på plats” när man startar programmet i stället, då kallas den i regel interpretator.

konsol, console

(i datavärlden) Samlingsnamn för enheter som kommunicerar åt båda hållen med en användare. Härrör löst från begreppet konsol, ståbord där skrivare stod och skrev av texter innan tryckpressens dagar.

lists

(inom programmering) Samlingsnamn på datatyper som innehåller element i en bestämd ordning eller är tomma. Listor fyller an viktig funktion inom programmering, och finns i många olika specialiserade varianter.

loop

(inom programmering) När samma del av en programkod ska utföras gång på gång. En loop kan vara konstruerad att utföras ett given antal gånger, att utföras för varje element i en lista, att fortsätta till något villkor blir uppfyllt, eller vara det man inom programmering kallar ”oändlig”, d vs inget stoppar den annat än att man stoppar programmet eller stänger av datorn.

map

(inom programmering) 1. Samlingsnamn på datatyper som unikt kopplar ett värde (sk nyckel) till ett annat värde. Kan t ex koppla ett unikt användar-id till namn och adress. 2. En funktion eller metod som anropar kod för varje element i en samling data (t ex en lista) i syfte att översätta elementets värde till något (t ex utföra någon beräkning).

match

(i Scala) Ett uttryck som utför mönsterigenkänning på ett värde baserat på t ex datatyp, innehåll i t ex ett objekt, en lista eller text, eller speciella villkor. Match plockar ut de delar av värdet man är intresserad av när ett mönster uppfylls, och utför programkod som beror på vilket mönster som uppfylldes.

max

(inom programmering) En funktion eller metod som tar ut det logiskt ”största” värdet ur en samling värden, t ex en lista. Med tal blir det största talet, med text blir det den sista texten i bokstavsordning. Man kan också själv definiera hur värden ska jämföras (t ex kan man ju med begreppet ”störst” för en tennisspelare mena vitt skilda saker, som längd eller rankning).

min

(inom programmering) En funktion eller metod som tar ut det logiskt minsta värdet ur en samling värden, i övrigt, se max.

minnen

Samlingsnamn för enheter som lagrar data. Man delar ofta in minne i primär (tillfällig lagring inne i datorn som försvinner när den stängs av), sekundär (permanent lagring på hårddisk eller i flashminne, det är här du har alla dina filer) och tertiär (långtidsbackup, t ex databand, skrivbar DVD eller tom glasskivor man gräver ner och hoppas på att nån framtida arkeolog kommer gräva upp).

mkString

(i Scala) metod som sammanställer en samling värden (t ex i en lista) till en enda text genom att (om nödvändigt) göra om varje värde till text-form, och sedan sätta ihop texterna med någon bindning, t ex kommatecken eller ny rad.

objekt

(inom programmering) En identifierbar avgränsad datastruktur, kan vara en t ex en variabel, programkod eller en referens till något utanför programmet som en fil eller en skrivare. Inom objektorienterad programmering menar man ofta en klass eller en instans av en klass.

Objektorienterad programmering

Programmering som följer en modell där man kapslar in data tillsammans med det man kan göra med datan, det som beskriver en inkapsling kallas klass. Det första objektorienterade programspråket hette Simula, i dag tillåter övervägande del av programspråken (Java, Ruby, Python) någon form av objektorientering. Exempel på ett språk som inte är objektorienterat är C (den objektorienterade släktingen heter C++).

operationer

Minsta beståndsdelarna i utförandet av ett program som var och en ger ett användbart resultat. Ett uttryck i ett programspråk resulterar i en eller flera operationer (om ett uttryck av en händelse är skrivet på ett sätt att det inte kan resultera i några operationer alls kan kompilatorn helt sonika besluta att kasta bort det för att spara lite tid och plats).

Operativsystem

Programvara som förser en dator med förväntade standardfunktioner som hantering av filer, nätverk och möjligheten att starta och stoppa program. På en PC-dator förväntar sig användaren ett användargränssnitt, vilket motsvarar en stor del av koden i t ex Windows, en Linux desktop, eller OSX. Många operativsystem har bara en textterminal som användargränssnitt (t ex i servrar) och väldigt många har inget allt (inbyggda i saker som jobbar för sig själva).

output

(inom programmering) vanligt samlingsnamn på de kanaler med vilka ett program kan meddela sig till yttervärlden. Om yttervärlden råkar vara ett annat program är det det ena programmets output som blir det andras input.

parameter

(inom programmering) beskriver ett av eventuellt flera ingångsvärden till t ex en funktion, metod, eller hela programmet.

prepend

(här) Lägga till, t ex en text till en annan text eller nya element till en lista, i början.

Processor

Datorns ”hjärna”, den som tolkar instruktionerna i den programkod du skrivit och styr alla delar i datorn. Huvudprocessorn i en dator kallas i regel CPU (Central Processing Unit), och den har ”underhuggare”, t ex GPU (Graphics Processing Unit) som hanterar grafiken. Få saker har utvecklats lika mycket som processorer, på 70-talet pratande man om hundratusentals instruktioner per sekund medan många processorer i dag klarar av hundratals miljarder instruktioner per sekund. Dessutom klämmer man in många även i små utrymmen, en modern mobiltelefon har tiotals processorer, som är specialiserade på olika saker.

programsprak

Ett skriftspråk som följer en överenskommen standard som en programmerare och en dator förstår. Det finns hundratals programspråk som används, bland de vanligaste finns Java, Ecmascript, Python, PHP, Ruby, Scala, C m fl. Vissa språk används inte för att göra hela program utan är specialiserade på en uppgift, t ex är SQL specialiserat på att söka och ändra data i en databas och CSS specialiserat på att få till utseende (färger layout mm) på webbsidor. Dessa benämns ibland kort som programspråk (den mera korrekta termen är domänspecifika språk är jobbigare att säga och komma ihåg). En annan underkategori är visuella programspråk, t ex modellen som används i Scratch, man ska tänka på att ”Scratch” (som många andra) är ett varumärke som tillhör en specifik webb-tjänst och (än så länge) inte namnet på någon officiell standard.

scene

(här) En lista eller ett ”träd” av ordnade objekt som syns eller kan komma att målas upp på skärmen. Begreppet används mest inom spel och animering och innefattar då också ofta fiktiva kameror och lampor eller abstrakta saker som ”dimma”.

sekvens

En kedja av händelser eller data-element i en given ordning med en definierad slutpunkt. Vet man inte när kedjan tar slut kallar man den i regel stream (ström).

size

(i många programspråk) En funktion eller metod som ger tillbaka antalet element i en samling data, t ex en lista, eller antal tecken i en text.

string

Den datatyp som i övervägande delen av programspråk används för ett värde bestående av text och andra skrivbara tecken (siffror, mellanslag, specialtecken mm) samt ett litet antal sk kontrolltecken, t ex ny rad (LF), ny sida (FF), ny kolumn (TAB).

take

(Scala, i listor, texter) Behåll ett given antal element från början av en lista eller text. Motsatsen till drop.

textsträng

En text, från datorns synvinkel, som betraktar den som en lång lina (sträng) av tecken. I det flesta moderna programspråk behöver man inte bekymra sig om hur tecknen ligger lagrade utan kan betrakta sin text som vilket värde som helst, men begreppet textsträng (String) har hängt med sedan programspråkens barndom och kommer nog att stanna.

uttryck

En fristående del av programkod, kan närmast liknas med vid en mening i vårt språk. Ett uttryck kan t ex utföra beräkningar, göra anrop, tilldela värden till variabler eller vara ett villkor.

Virtuell maskin

Programvara (och ev hårdvara) som agerar mellanhand mellan maskininstruktioner och processorn. En virtuell maskin kan agera på systemnivå så att både operativsystemet och alla programvaror ”tror” att de är installerade direkt i en dator. När man pratar om ”molnet” menar man ofta tjänster där man hyr en virtuell maskin som utåt sett beter ut som en fristående ”egen” dator (exempel är Amazon EC2 och Microsoft Azure). Det stora antalet virtuella maskiner är dock av en typ som agerar småskaligt på applikationsnivå och omvandlar specialgjorda maskininstruktioner (t ex Java byte-kod) till de instruktioner processorn utför.

Visuell programmering

En modell där man definierar den övergripande programlogiken med bild-element (figurer, rektanglar, pilar) i stället för text, detaljarbetet i regel med parametrar i textform. Är sällan standardiserade, utan ofta specialiserade och kopplade till speciella produkter eller plattformar, t ex inom industrin. Ett exempel är LabVIEW från National Instruments, med vilken man grafiskt bygger styr- och mät-processer (en förenklad variant av LabVIEW levereras med Legos robot-kit Mindstorms). Scratch och Blockly är tjänster/bibliotek som är vanliga första steg mot programmering inom småskolan, också de har många kopplingar till enkla robotar.