Vad är programmering egentligen?

Som jag indikerar i videon om programmering så är ”programmering” ett ganska vitt begrepp. Det många menar med ”programmering” är det som jag i videon kallar för ”implementation”, själv vill jag ta en vidare syn och definiera det som ”problemlösning”.
Som programmerare så får jag ett problem som jag ska förstå och hitta en lösning till. När jag har hittat en lösning så ska jag skriva – ‘skriva’ som ett generellt begrepp – ner lösningen på ett sådant sätt att en dator kan tolka lösningen och praktiskt applicera den på problemet.
Ett sätt att beskriva programmeringsprocessen är följande lista (en kortare variant på det som jag säger i videon)

  1. Förstå problemet
  2. Kom fram till en lösning på problemet
  3. Skriv ner lösningen i någon notation, dvs i något programspråk.
  4. Verifiera att programmet löser rätt problem och genererar rätt resultat.

Problemlösning

När vi löser programmeringsproblem så använder vi oss ofta av en gammal klassisk teknik: ”söndra och härska”.

Med detta menas att programmet ska lösa ett specifikt problem men ofta så är det så pass stort och komplext att det blir svårt att göra en lösning direkt. Det vanliga är då att problemet delas upp i del-problem som vi försöker lösa var för sig, när vi sedan försöker lösa dessa del-problem kan vi bli tvungna att dela upp varje del-problem i del-del-problem, osv. Till slut så har vi delat upp ursprungsproblemet i så små delar att det är möjligt att lösa varje litet del-problem. Vi kan då kombinera del-del-problem för att lösa ett del-problem och sedan del-problemen för att lösa problemet.

Med andra ord så gör vi en hierarkisk uppdelning av problemet tills varje del-problem kan lösas och sedan kombinerar vi dem för att komma fram till en helhetslösning.

Vad är ett program?

Ett program är en notation för att beskriva en lösning till ett problem. Notationen har en bestämd syntax som gör det möjligt för datorn att med hjälp av en kompilator översätta texten till maskinkod så att datorn senare kan utföra de instruktioner som programmet innehåller.

Ett program beskriver varje steg som behövs för att lösa ett problem, ofta så innehåller varje program flera delar där varje del löser ett delproblem av det stora problemet. Ibland så använder vi ordet ”algoritm” för att beskriva de steg som behövs för att lösa ett problem – t.ex. när vi pratar om vilka steg som behövs för att sortera en lista med värden.