Vilka är de olika typerna av datorprogrammering?
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å skarpt 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 finns det kanske bara två typer av datorprogrammering - system och applikation. Vissa skillnader görs mellan nätverksprogrammering, webbaserad programmering och stationär programmering. De olika typerna av datorprogrammering kan ibland separeras av målplattformen, såsom inbäddade systemprogrammering, realtidssystemprogrammering (RTS) eller databasprogrammering.
De olika typerna av datorprogrammering definieras ofta av det språk som används för att skriva programvara. Det finns många språk tillgängliga, men de faller i stort sett på antingen strukturerade språk som C eller objektorienterade språk som Java®, där båda ofta används av proffs för olika uppgifter. Språk kan också vara nödvändiga, som de tidigare nämnda, eller funktionella, som Lisp, där program består av en serie funktioner istället för kommandon. Vissa datorprogrammering görs bara med skriptspråk, som tolkas mänskliga läsbara dokument som utför operationer inom en annan ram.
Det har traditionellt varit en åtskillnad mellan två breda typer av datorprogrammering. Den första är applikationsprogrammering och handlar om att skriva program som kan användas direkt för någon funktion. Alternativt finns det systemprogrammering, som syftar till att utforma program för hantering av hårdvara eller ramverk där applikationer kan köras, till exempel operativsystem.
När tekniken för nätverk och fjärrkommunikation blev mer utbredd började vissa typer av datorprogrammering skilja sig från de andra områdena 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 programmeringsmönster för programmering.
Det finns också typer av datorprogrammering som är specifika för ett visst fält eller målhårdvara. Databasprogrammering innebär att använda 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, t.ex. handhållna enheter eller konsoler, kan innebära unika hårdvarespecifikationer och kunskap om leverantörsbibliotek. Mer avancerad realtidssystemprogrammering kan innebära att man skriver felkontrollprogramvara för kärnkraftverk eller militär hårdvara.