S obzirom na to da je definicija računalnog programiranja tako široka i da je upotreba programa toliko sveobuhvatna, zapravo postoji mnogo vrsta računalnog programiranja, često definiranih na potpuno različite načine. Najosnovnije vrste računalnog programiranja mogu se raščlaniti prema programskom jeziku — kao što je C, Lisp ili Java® — koji programer koristi. U drugim kontekstima mogu postojati samo dvije vrste računalnog programiranja — sustav i aplikacija. Postoje neke razlike između mrežnog programiranja, web-based programiranja i desktop programiranja. Različite vrste programiranja ponekad se mogu odvojiti prema ciljnoj platformi, kao što je programiranje ugrađenih sustava, programiranje sustava u stvarnom vremenu (RTS) ili programiranje baze podataka.
Različite vrste računalnog programiranja često su definirane jezikom koji se koristi za pisanje softvera. Dostupni su mnogi jezici, ali oni uglavnom spadaju u strukturirane jezike kao što je C ili objektno orijentirane jezike kao što je Java®, pri čemu ih profesionalci obično koriste za različite zadatke. Jezici također mogu biti imperativni, poput prethodno spomenutih, ili funkcionalni, poput Lisp-a, u kojem se programi sastoje od niza funkcija umjesto naredbi. Neki računalni programi rade se isključivo s skriptnim jezicima, koji su interpretirani čovjeku čitljivi dokumenti koji obavljaju operacije unutar drugog okvira.
Tradicionalno postoji razlika između dvije široke vrste računalnog programiranja. Prvi je aplikacijsko programiranje i uključuje pisanje programa koji se mogu izravno koristiti za neku funkciju. Alternativno, postoji programiranje sustava, koje nastoji dizajnirati programe za upravljanje hardverom ili okvirima u kojima se aplikacije mogu izvoditi, kao što su operativni sustavi.
Kako se tehnologija umrežavanja i daljinske komunikacije sve više koristila, određene vrste programiranja počele su se razlikovati od ostalih područja računalnog programiranja. Mrežno programiranje smatra se drugačijim zbog potrebnog poznavanja mrežnih protokola i hardverskih sučelja. Programiranje web-baziranih aplikacija ili poslužitelja zahtijeva specifično poznavanje sigurnosnih ograničenja, internetskih protokola i jedinstvenih obrazaca programiranja.
Postoje i vrste računalnog programiranja koje su specifične za određeno područje ili ciljni hardver. Programiranje baze podataka uključuje korištenje posebnih jezika upita, skripti i drugih elemenata za interakciju s određenim infrastrukturama baze podataka. Programiranje igara uključuje poznavanje grafičkog hardvera, grafičkih algoritama i ponekad posebnih tehnika optimizacije. Ugrađeni sustavi, kao što su ručni uređaji ili konzole, mogu uključivati jedinstvene hardverske specifikacije i poznavanje knjižnica dobavljača. Naprednije programiranje sustava u stvarnom vremenu može uključivati pisanje sigurnog upravljačkog softvera za nuklearne elektrane ili vojni hardver.