La programmazione orientata agli oggetti (OOP) e la programmazione funzionale (FP) sono due paradigmi di programmazione distinti che hanno approcci diversi allo sviluppo e alla struttura dei programmi software. In OOP, l'obiettivo è creare oggetti, che sono interfacce per entità del mondo reale e dati strutturati. OOP incoraggia il riutilizzo e l'estensibilità del codice con un'enfasi sull'organizzazione e la modularità del codice. Si basa anche pesantemente sulle classi, che definiscono come dovrebbero comportarsi gli oggetti, e sugli oggetti che seguono le regole definite dalle classi. La programmazione funzionale si concentra sulla valutazione di espressioni e funzioni che accettano input e restituiscono output. Evita di utilizzare lo stato condiviso o dati mutabili, optando invece per l'utilizzo di funzioni pure. L'enfasi sulla programmazione dichiarativa e sulle funzioni senza stato rende il codice FP più facile da eseguire il debug, il test e il riutilizzo. In OOP, la metodologia di base della programmazione ruota attorno a oggetti e metodi. Considerando che, nella programmazione funzionale, la metodologia sottostante ruota attorno alle funzioni matematiche. OOP utilizza le classi come modelli per oggetti che rappresentano entità del mondo reale, mentre FP fa molto affidamento sulla composizione per creare funzioni da quelle più semplici. Infine, OOP sottolinea i dati mutabili, mentre FP sottolinea i dati immutabili.
Confronta e contrasta la programmazione orientata agli oggetti e la programmazione funzionale.