Pada halaman 839 edisi kedua, Steve McConnell sedang mendiskusikan semua cara yang bisa dilakukan "programmer menaklukkan kompleksitas" dalam program besar. Kiatnya berujung pada pernyataan ini:
"Pemrograman berorientasi objek menyediakan tingkat abstraksi yang berlaku untuk algoritma dan data pada saat yang sama , semacam abstraksi yang tidak disediakan oleh dekomposisi fungsional."
Ditambah dengan kesimpulannya bahwa "mengurangi kompleksitas bisa dibilang kunci terpenting untuk menjadi programmer yang efektif" (halaman yang sama), ini tampaknya cukup banyak tantangan untuk pemrograman fungsional.
Perdebatan antara FP dan OO sering dibingkai oleh para pendukung FP tentang masalah kompleksitas yang berasal secara khusus dari tantangan konkurensi atau paralelisasi. Tetapi concurrency tentu saja bukan satu-satunya jenis kerumitan yang perlu ditaklukkan oleh pemrogram perangkat lunak. Mungkin berfokus pada pengurangan satu jenis kompleksitas akan sangat meningkatkannya di dimensi lain, sehingga bagi banyak kasus, keuntungannya tidak sebanding dengan biayanya.
Jika kita menggeser ketentuan perbandingan antara FP dan OO dari isu-isu tertentu seperti konkurensi atau penggunaan kembali ke pengelolaan kompleksitas global, bagaimana perdebatan itu terlihat?
EDIT
Kontras yang ingin saya soroti adalah bahwa OO tampaknya merangkum dan abstrak jauh dari kompleksitas data dan algoritma, sedangkan pemrograman fungsional tampaknya mendorong meninggalkan detail implementasi struktur data yang lebih "terbuka" di seluruh program.
Lihat, misalnya, Stuart Halloway (pendukung Clojure FP) di sini mengatakan bahwa "spesifikasi berlebih dari tipe data" adalah "konsekuensi negatif dari gaya OO idiomatik" dan lebih memilih untuk mengonseptualisasikan Buku Alamat sebagai vektor atau peta sederhana alih-alih objek OO yang lebih kaya. dengan properti dan metode tambahan (non-vektor & non-maplike). (Juga, para pendukung OO dan Desain Berbasis Domain dapat mengatakan bahwa mengekspos Buku Alamat sebagai vektor atau peta mengekspos data enkapsulasi dengan metode yang tidak relevan atau bahkan berbahaya dari sudut pandang domain).