În programarea procedurală, un program este împărțit în porțiuni numite funcții, în timp ce în programarea orientată obiect, programul este împărțit în porțiuni numite obiecte. O altă diferență esențială este că programarea orientată pe obiecte urmează abordarea "de jos în sus", în timp ce programarea procedurală urmează abordarea "de sus în jos".
Programarea procedurală comandă computerul pas cu pas printr-o listă de instrucțiuni. Se bazează pe subrutine sau rutine. O rutină poate avea o serie de etape de calcul. Procedurile de programare sunt denumite uneori programe de programare imperative. Programarea orientată pe obiecte, după cum sugerează și numele, se bazează pe obiecte. Obiectele sunt componente ale unui program care știe să execute anumite sarcini și să interacționeze cu celelalte elemente ale programului.
Deoarece obiectele sunt mai versatile, programarea orientată obiect poate fi folosită pentru a dezvolta programe complexe cu un cod mai mic. Utilizarea obiectelor facilitează și reutilizarea codurilor. În programarea procedurală, accentul se pune pe funcțiile și secvența acțiunilor care trebuie efectuate și nu pe date. În programarea orientată pe obiecte, totuși, accentul se pune pe date și nu pe proceduri sau pe funcții.
Scopul principal al celor două metode de programare este de a face programarea mai eficientă. Ele fac procesul de scriere a programelor complicate mai simplu, modificabil, extensibil, ușor de înțeles și fără bug-uri.