Având în vedere că definiția programării computerelor este atât de largă și utilizarea programelor atât de răspândită, există de fapt multe tipuri de programare pentru computer, adesea definite în moduri total diferite. Cele mai de bază tipuri de programare pentru computere pot fi defalcate în funcție de limbajul de programare – cum ar fi C, Lisp sau Java® – folosit de programator. În alte contexte, s-ar putea să existe doar două tipuri de programare pentru computer – sistem și aplicație. Se fac unele distincții între programarea în rețea, programarea bazată pe web și programarea desktop. Diferitele tipuri de programare pot fi uneori separate de platforma țintă, cum ar fi programarea sistemelor încorporate, programarea sistemului în timp real (RTS) sau programarea bazelor de date.
Diferitele tipuri de programare a calculatorului sunt adesea definite de limbajul folosit pentru a scrie software. Există multe limbaje disponibile, dar acestea se încadrează în limbaje structurate, cum ar fi C, sau limbaje orientate pe obiecte, cum ar fi Java®, ambele fiind utilizate în mod obișnuit de profesioniști pentru diferite sarcini. De asemenea, limbajele pot fi imperative, precum cele menționate anterior, sau funcționale, precum Lisp, în care programele constau dintr-o serie de funcții în loc de comenzi. O parte din programarea computerelor se realizează exclusiv cu limbaje de scripting, care sunt documente interpretate lizibile de om care efectuează operațiuni în alt cadru.
În mod tradițional, a existat o distincție între două tipuri largi de programare pentru computer. Prima este programarea aplicațiilor și implică scrierea de programe care pot fi utilizate direct pentru o anumită funcție. Alternativ, există programarea de sistem, care urmărește să proiecteze programe pentru managementul hardware-ului sau cadrelor în care pot rula aplicațiile, cum ar fi sistemele de operare.
Pe măsură ce tehnologia pentru rețele și comunicațiile de la distanță a devenit mai larg utilizată, anumite tipuri de programare au început să se distingă de celelalte domenii ale programării computerelor. Programarea în rețea este considerată diferită din cauza cunoștințelor necesare privind protocoalele de rețea și interfețele hardware. Programarea aplicațiilor sau a serverelor bazate pe web necesită cunoștințe specifice privind restricțiile de securitate, protocoalele Internet și modelele unice de proiectare de programare.
Există, de asemenea, tipuri de programare de computer care sunt specifice unui anumit domeniu sau hardware-țintă. Programarea bazelor de date presupune utilizarea unor limbaje speciale de interogare, script-uri și alte elemente pentru a interacționa cu infrastructuri specifice de baze de date. Programarea jocurilor implică cunoașterea hardware-ului grafic, a algoritmilor grafici și uneori a tehnicilor speciale de optimizare. Sistemele încorporate, cum ar fi dispozitivele portabile sau consolele, pot implica specificații hardware unice și cunoaștere a bibliotecilor furnizorilor. Programarea mai avansată a sistemului în timp real poate implica scrierea de software de control sigur pentru centralele nucleare sau hardware-ul militar.