Saya berpendapat bahwa struktur meta, modul, kerangka kerja, platform, dan layanan semuanya adalah pengelompokan fitur tingkat lebih tinggi daripada kelas. Hirarki abstraksi sistem pemrograman saya:
- jasa
- platform, tumpukan solusi
- kerangka kerja
- modul, paket
- struktur meta: metaclasses, fungsi tingkat tinggi, generik, templat, sifat, aspek, dekorator
- objek, kelas, tipe data
- fungsi, prosedur, subrutin
- struktur kontrol
- baris kode
Meta-structure seperti metaclasses ,
fungsi orde tinggi , dan
generik
jelas menambahkan abstraksi ke kelas dasar, fungsi, tipe data, dan instance data. Ciri, aspek, dan dekorator adalah mekanisme yang lebih baru untuk menggabungkan fitur kode, dan juga 'mempercepat' kelas dan fungsi lainnya.
Bahkan bahasa pra-objek memiliki modul dan paket, sehingga menempatkannya di atas kelas mungkin bisa diperdebatkan. Namun mereka berisi kelas-kelas dan struktur-meta, jadi saya peringkat mereka lebih tinggi.
Kerangka kerja adalah jawaban yang paling sederhana - mereka mengatur banyak kelas, meta-struktur, modul, fungsi, dan semacamnya untuk memberikan abstraksi tingkat tinggi yang canggih. Namun kerangka kerja masih beroperasi hampir seluruhnya di bidang pemrograman.
Tumpukan solusi atau platform umumnya menggabungkan banyak kerangka kerja, subsistem, atau komponen ke dalam lingkungan untuk menyelesaikan berbagai masalah.
Akhirnya, ada layanan - sering digunakan sebagai layanan Web atau jaringan. Ini adalah arsitektur, kerangka kerja, tumpukan solusi, atau kemampuan aplikasi yang dikirim sebagai bundel lengkap. Internal mereka seringkali buram, terutama mengekspos administrator, pemrograman, dan antarmuka pengguna. PaaS dan SaaS adalah contoh umum.
Sekarang, perkembangan ini mungkin tidak sepenuhnya memuaskan, karena beberapa alasan. Pertama, ia membuat perkembangan linear yang rapi atau hierarki hal-hal yang tidak linier sempurna atau hierarkis. Ini mencakup beberapa abstraksi seperti "tumpukan" dan layanan yang tidak sepenuhnya di bawah kendali pengembang. Dan itu tidak menempatkan debu peri sihir baru. (Spoiler: Tidak ada debu peri sihir. )
Saya pikir itu kesalahan untuk mencari level abstraksi baru . Semua yang saya sebutkan di atas telah ada selama bertahun - tahun , bahkan jika mereka belum pernah sama terkenal atau sepopuler sekarang. Dan selama bertahun-tahun itu, abstraksi yang mungkin terjadi pada setiap tingkat pengkodean telah meningkat. Kami sekarang memiliki koleksi umum dan umum, bukan hanya array. Kami mengulang koleksi, bukan hanya rentang indeks. Kami memiliki pemahaman daftar dan daftar filter dan operasi peta. Banyak fungsi bahasa dapat memiliki sejumlah argumen, dan / atau argumen default. Dan seterusnya. Kami meningkatkan abstraksi di setiap level, jadi menambahkan lebih banyak level bukanlah persyaratan untuk meningkatkan level abstraksi secara keseluruhan.