Harap pertimbangkan, bahwa kebutuhan Harper untuk mengajar kelas kurikulum CS pengantar sangat berbeda dari kebutuhan proyek kehidupan nyata . Tugasnya adalah mengajarkan konsep-konsep dasar (misalnya modularitas, paralelisme, induksi) kepada mahasiswa baru. Karena itu sangat penting, bahwa bahasa (dan paradigma) yang dipilih dapat mengekspresikan konsep-konsep ini dengan sesedikit mungkin upacara (sintaksis dan konseptual). Keakraban, dukungan alat, perpustakaan yang tersedia, kinerja eksekusi, dll. Sepenuhnya tidak relevan dalam konteks ini. Jadi harap ingat ini ketika mempertimbangkan yang berikut ...
Pandangan bahwa OO adalah anti-modular hasil dari sejumlah besar dependensi ke kelas lain bahkan objek kelas yang dirancang dengan baik cenderung berakhir dengan. Bahwa ini adalah masalah - bahkan di mata para pendukung OO - menjadi jelas ketika Anda melihat proliferasi kerangka Ketergantungan Injeksi , artikel, buku dan posting blog dalam beberapa tahun terakhir (juga munculnya ejekan dan rintisan yang menarik).
Petunjuk lain adalah pentingnya Pola Desain dan kompleksitas penerapannya - dibandingkan dengan beberapa paradigma pemrograman lainnya - misalnya Pabrik, Pembangun, Adaptor, Jembatan, Dekorator, Penglihatan, Komando, Iterator, Mediator, Pengamat, Strategi dan Metode Templat, dan mungkin semua Komposit dalam beberapa hal terkait dengan meningkatkan modularitas kode OO.
Warisan juga bermasalah (misalnya Fragile Base Class Problem ) dan (subtype) polimorfisme menggoda seseorang untuk menumpahkan implementasi algoritma antara beberapa kelas, di mana perubahan dapat beriak melalui seluruh rantai pewarisan (atas dan ke bawah!).
Tuduhan menjadi anti-paralel terkait dengan penekanan negara dibandingkan dengan perhitungan (alias. Mutability vs immutability). Yang pertama membuatnya lebih terlibat untuk mengekspresikan dependensi subkomputasi (yang merupakan Harper's mengambil paralelisme!) Karena Anda biasanya tidak dapat menyimpulkan dari lokasi negara dikelola (alias file, di mana variabel instance dideklarasikan) yang aktor luar akan mengubahnya pada titik waktu berapa.
Penekanan pada kekekalan dan komputasi membuat mengekspresikan dependensi subkomputasi menjadi lebih mudah, karena tidak ada manajemen negara, hanya fungsi / komputasi yang digabungkan di tempat di mana Anda ingin mengekspresikan dependensi subkomputasi.