Med tanke på att definitionen av datorprogrammering är så bred och användningen av program så genomgripande, finns det faktiskt många typer av datorprogrammering, ofta definierade på helt olika sätt. De mest grundläggande typerna av datorprogrammering kan delas upp av programmeringsspråket – som C, Lisp eller Java® – som används av programmeraren. I andra sammanhang kan det bara finnas två typer av datorprogrammering – system och applikation. Vissa skillnader görs mellan nätverksprogrammering, webbaserad programmering och skrivbordsprogrammering. De olika typerna av programmering kan ibland separeras av målplattformen, såsom programmering av inbyggda system, programmering i realtidssystem (RTS) eller databasprogrammering.
De olika typerna av datorprogrammering definieras ofta av språket som används för att skriva programvara. Det finns många tillgängliga språk, men de faller i stort sett in i antingen strukturerade språk som C eller objektorienterade språk som Java®, och båda används ofta av proffs för olika uppgifter. Språk kan också vara imperativa, som de tidigare nämnda, eller funktionella, som Lisp, där program består av en serie funktioner istället för kommandon. Viss datorprogrammering görs enbart med skriptspråk, som är tolkade mänskliga läsbara dokument som utför operationer inom ett annat ramverk.
Det har traditionellt funnits en skillnad mellan två breda typer av datorprogrammering. Den första är applikationsprogrammering och innebär att skriva program som direkt kan användas för någon funktion. Alternativt finns systemprogrammering, som syftar till att designa program för hantering av hårdvara eller ramverk där applikationer kan köras, såsom operativsystem.
När tekniken för nätverk och fjärrkommunikation blev mer allmänt använd, började vissa typer av programmering att särskilja sig från de andra områdena av datorprogrammering. Nätverksprogrammering anses annorlunda på grund av den nödvändiga kunskapen om nätverksprotokoll och hårdvarugränssnitt. Programmering av webbaserade applikationer eller servrar kräver specifik kunskap om säkerhetsbegränsningar, internetprotokoll och unika designmönster för programmering.
Det finns också typer av datorprogrammering som är specifika för ett visst område eller målhårdvara. Databasprogrammering innebär att man använder speciella frågespråk, skript och andra element för att interagera med specifika databasinfrastrukturer. Spelprogrammering innebär kunskap om grafikhårdvara, grafikalgoritmer och ibland speciella optimeringstekniker. Inbyggda system, såsom handhållna enheter eller konsoler, kan involvera unika hårdvaruspecifikationer och kunskap om leverantörsbibliotek. Mer avancerad systemprogrammering i realtid kan innebära att skriva felsäker kontrollmjukvara för kärnkraftverk eller militär hårdvara.