Når alt det ovenstående er overstået: når domænet og kravene er afklarede, når arkitekturen og programmelstrukturen er fastlagt, ja da er det på tide at begynde den egentlige programmering.
Forskellige problemstillinger kræver forskellige værktøj og det bør derfor ikke undre os, at der er flere bud på disse værktøj. En kort gennemgang kan være belærende.
For de der er mere fortrolige med Fortran's subrutiner eller C++'s procedyrer kan vi vel nemmest forklare funktionsprogrammering ved dets fokusering på funtioner (f,g): deres definition (), sammensætning (), og brug (f(a)). Almindelige -- f.eks. aritmetiske -- udtryk opfattes som funktionsudtryk.
Det første funktions-lignende sprog var LISP (ca. 1962). Fra omkring midten af 1970rne skete der en renæsance. Der er idag flere udmærkede -- ja nærmest intellektuelt spændende, elegante og inspirererende -- funktionsprogrammeringssprog: Standard ML, Russell, Haskell, Miranda, etc.
Funktionssprog er især velegnede til beskrivelse af beregninger over strukturerede data. Specifikations- og bevisførelsesværktøj kan typisk med fordel udvikles i et funktionssprog. Alle almindelige, simple beregninger ligeledes: sortering, søgning, etc.
Da funktionssprog knytter sig tæt til den rekursive funktionsteori under meta-matematikken, dvs.\ til de vigtige begreber som -kalkyle og fikspunktlæren, egner funktionssprog sig også som et generelt første programmeringssprog i undervisning af dataloger.
Lektor Jørgen Steensgaard Madsen er blandt de, der forsker i funktionsprogrammering ved IT/DTU.
I Danmark har vi en endog meget sløj tradition indenfor matematik hvad emnet matematisk logik angår. Og blandt ledende skolekredse er det vel nærmest et fyord om man nævner logik som noget allerede børn bør blive fortrolige med. Dansk matematik er, som svensk, domineret af analysen. Selv diskret matematik, grafteori og kombinatorik, synes at være stedbørn -- trods det at vi her på DTU har en af verdens så absolut førende graf- & kombinatorik-teoretikere.
Hvorom alting er, så spiller logikprogrammering en alt vigtigere rolle i dagens datamatik. Det bør være med nogen stolthed at vi kan erkende at vi i PDC, Prolog Development Center, har et verdensfirma indenfor logikprogrammering -- som udsprang fra ID/DTH. Historien herom er nævnt i afsnit 1 side .
Det første logiksprog var Prolog. Senere er tilkommet såkaldte ``constraint'' (dvs. begrænsnings) -baserede logiksprog.
I logikprogrammering beskriver vi løsning af et beregningsproblem primært ved de matematisk logiske egenskaber et svar bør have. En fortolker af logikprogrammer finder nu alle de løsninger som opfylder de specificerede egenskaber ved en form for matematisk bevis.
Logikprogrammering er en ligeledes fascinerende teknik til formulering af programmer. I logikprogrammer kan man ``vende beregningerne om'': det man troede var inddata-parametre kan opfattes som uddata, og omvendt. Herved kan man finde alle de inddata som svarer til hvad man før troede var en løsning!
Ved IT/DTU er der forsket meget omkring logikprogrammering -- jævnfør professor Jørgen Fischer Nilssons og docent Tom Østerbys arbejde nævnt i afsnit 1 side .
Klassisk programmering: fra Fortran, over Cobol, Algol 60 og Pascal til vore dages C, C++ og Java er i det væsentlige imperativ programmering. Vi kalder det imperativ da programmer kan siges at foreskrive: gør hint, siden gør dette -- imperativ bydemåde.
Imperative programmeringssprog bygger på at datamatens lager tillader programmer at indeholde såkaldte variable, dvs. navngivne størrelser hvor navnet står for en fast lagercelle hvis indhold, ved gentagne tilskrivninger kan variere. Hermed tillades at også lagercellernes adresse kan bruges som værdi, dvs.\ at vi kan søge langs en kæde af peger-lænkede data, at vi kan ændre en f.eks. graf-lignende datastruktur: indsætte og fjerne ``nye'', hhv. ``gamle'' data, mv.
Hvor funktionsprogrammeringens basale størrelser var funktioner, og hvor de i logikprogrammering var logiske udsagn og sandhedsværdier (herunder afbildninger fra identifikatorer til sådanne), ja der er pegere og lagertilstande (relationer mellem variabel navne, deres tyd og disses værdi), de basale størrelser.
Såfremt man, som forøvrigt i al programmering, omhyggeligt iagttager en række basale love, ja da vil imperative programmer ligeså elegant som f.eks. funktions- og logikprogrammering kunne beskrive mange beregninger.
Studiet af bevislogikker for imperative programmer begyndte med C.A.R. Hoare's banebrydende arbejde i 1969. Hoare's arbejde byggede bl.a. på danskeren Peter Naur's (og amerikaneren Robert Floyd's) idéer.
Der henvises, nok engang, til afsnit 3.1.2 side .
I parallelprogrammering er de centrale størrelser: processer, deres sammensætning, på forskellig vis, og deres indbyrdes synkronisering og udveksling af data (kommunikation).
Ved IT/DTU varetager lektor Hans Henrik Løvengreen et centralt kursus i parallelprogrammering ligesom han udforsker hvorledes man praktisk og teoretisk udvikler parallelle programmer.
Store mammut-sprog som CCITT's CHILL og US DoD's Ada, se afsnit 1 side , indeholder faciliteter for parallelprogrammering. Vigtige teori-dannelser omkring disse bygger på de mere ``teoretiske'' sprog: CSP (C.A.R. Hoare) og CCS (A.J.R. Milner). CSP udgør basis for det praktiske, ``lille'' og elegante sprog `occam' -- som også er det sprog der bruges ved IT/DTU i forbindelse med parallelprogrammering.