Deklaratif. Imperatif. Intensional.
Para pengembang selalu membicarakan paradigma pemrograman.
Kita menggunakan pemrograman imperatif. Kita menggunakan pemrograman deklaratif. Kita menggunakan gaya fungsional atau berorientasi objek.
Namun, kita melewatkan satu lapisan.
Masa depan adalah intensional.
Pemrograman imperatif memberi tahu komputer dengan tepat apa yang harus dilakukan. Anda memberikan instruksi langkah demi langkah. Anda fokus pada proses. Anda mengontrol urutannya. Ini memberi Anda presisi, tetapi Anda memikul beban dari setiap langkahnya.
Pemrograman deklaratif mengubah hal ini. Anda mendeskripsikan apa yang Anda inginkan, bukan bagaimana cara melakukannya. SQL adalah contoh yang sempurna. Anda meminta data. Anda tidak menulis loop atau mengelola memori. Sistem yang menangani pekerjaannya. Ini meningkatkan produktivitas.
Namun, bahkan sistem deklaratif sering kali memaksa Anda untuk memikirkan implementasi.
Lihatlah desain web responsif. Anda menulis kode untuk kolom dan breakpoint. Anda masih mendeskripsikan mekanika. Anda mendeskripsikan bagaimana sebuah tata letak seharusnya bekerja.
Sistem tahu apa yang Anda lakukan, tetapi ia tidak tahu mengapa.
Pemrograman intensional mengubah tujuannya.
Alih-alih mendeskripsikan CSS, Anda mendeskripsikan perilaku yang diinginkan. Anda memberi tahu sistem untuk beradaptasi. Anda memberi tahu sistem untuk mengatur ulang berdasarkan konteks. Fokusnya berpindah dari mekanisme ke tujuan.
Perangkat lunak sedang bergerak ke arah ini.
- SQL: Anda mendeskripsikan data.
- Infrastructure as Code: Anda mendeskripsikan sumber daya.
- Nectarine: Anda mendeskripsikan skema dan API.
Sistem menangani sisanya.
Pustaka perangkat lunak terbaik melakukan lebih dari sekadar menyediakan fitur. Mereka menyediakan sebuah bahasa. Mereka mengajarkan Anda cara berpikir. Setiap API dan setiap nama membantu membangun sebuah filosofi.
Implementasi itu penting, tetapi tidak seharusnya merembes ke setiap lapisan. Pengembang tidak ingin mengekspresikan mekanika. Mereka ingin mengekspresikan maksud. Mereka tahu apa yang ingin mereka capai.
Abstraksi yang baik menyembunyikan kompleksitas. Abstraksi yang hebat membuat maksud menjadi jelas.
Gaya imperatif dan deklaratif akan tetap ada. Namun, kita sedang bergerak menuju sistem yang memahami tujuan. Kita membutuhkan sistem yang menerjemahkan maksud menjadi hasil.
Fokuslah pada apa yang Anda maksudkan, bukan hanya bagaimana cara kerjanya. Makna lebih penting daripada mekanika.
Sumber: https://dev.to/stinklewinks/declarative-imperative-intentional-4j60