Hvad er de forskellige typer af programmering af computere?
I betragtning af, at definitionen af computerprogrammering er så bred, og brugen af programmer så gennemgribende, er der faktisk mange typer computerprogrammering, ofte defineret på skarp forskellige måder. De mest basale typer af programmering af computere kan opdeles efter programmeringssprog - som C, Lisp eller Java® - brugt af programmereren. I andre sammenhænge er der muligvis kun to typer computerprogrammering - system og applikation. Der sondres mellem netværksprogrammering, webbaseret programmering og desktopprogrammering. De forskellige typer af programmering af computere kan undertiden adskilles af målplatformen, såsom indlejrede systemprogrammering, realtidssystemprogrammering (RTS) eller databaseprogrammering.
De forskellige typer computerprogrammering defineres ofte af det sprog, der bruges til at skrive software. Der er mange tilgængelige sprog, men de falder stort set i enten strukturerede sprog som C eller objektorienterede sprog som Java®, hvor begge ofte bruges af fagfolk til forskellige opgaver. Sprog kan også være bydende, ligesom de tidligere nævnte, eller funktionelle som Lisp, hvor programmer består af en række funktioner i stedet for kommandoer. Nogle computerprogrammering udføres rent med scripting-sprog, der tolkes menneskelige læsbare dokumenter, der udfører operationer inden for en anden ramme.
Der har traditionelt været en sondring mellem to brede typer af programmering af computere. Den første er applikationsprogrammering og involverer skrivning af programmer, der direkte kan bruges til en eller anden funktion. Alternativt findes der systemprogrammering, der søger at designe programmer til styring af hardware eller rammer, hvor applikationer kan køre, f.eks. Operativsystemer.
Efterhånden som teknologien til netværk og fjernkommunikation blev mere udbredt, begyndte visse typer computerprogrammering at adskille sig fra de andre felter inden for computerprogrammering. Netværksprogrammering betragtes som anderledes på grund af den krævede viden om netværksprotokoller og hardware-grænseflader. Programmering af webbaserede applikationer eller servere kræver specifik viden om sikkerhedsbegrænsninger, internetprotokoller og unikke programmeringsmønstre for programmering.
Der er også typer af computerprogrammering, der er specifikke for et bestemt felt eller målhardware. Databaseprogrammering involverer brug af specielle forespørgsler, scripts og andre elementer til at interagere med specifikke databaseinfrastrukturer. Spilprogrammering involverer kendskab til grafikhardware, grafikalgoritmer og undertiden specielle optimeringsteknikker. Indbyggede systemer, såsom håndholdte enheder eller konsoller, kan involvere unikke hardwarespecifikationer og viden om leverandørbiblioteker. Mere avanceret realtidssystemprogrammering kan involvere skrivning af fejlsikker styringssoftware til atomkraftværker eller militær hardware.