programming paradigm

21 Jan 2022 • viridi | history

Istilah paradigma pemrograman terkait dengan suatu gaya dalam memrogram dan tidak terkait dengan suatu bahasa pemrograman tertentu [1]. Suatu bahasa pemrograman dapat diklasifikasikan dalam lebih dari satu paradima [2], yang sebagai contohnya adalah JavaScript yang mengijinkan untuk membuat kode dalam berbagai paradima berbeda atau mengombinasikannya dalam suatu pendekatan multi-paradigma [3]. Saat berbicara mengenai empat paradigma utama pemrograman, terdapat imperatif, logikal, fungsional, dan berorientasi-obyek [4] ataupun prosedural, berorientasi-obyek, fungsional, dan logikal [5], di mana pada pembagian lain paradigma prosedural dan berorientasi-obyek merupakan bagian dari paradigma imperatif, sedangkan paradigma logikal dan fungsional merupakan bagian dari paradigma deklaratif [6]. Selain itu terdapat juga pembagian yang lebih menerus yang sampai menggunakan istilah paradigma yang lebih deklaratif dan paradigma yang lebih imperatif dan terdapat satu kelompok paradigma di antara keduanya [2]. Di sini akan dibahas dua kelompok paradigma, yaitu yang termasuk imperatif dan deklaratif serta beberapa contoh yang termasuk di dalamnya.

languages

Berapa bahasa pemrograman secara alamiah termasuk dalam paradigma deklaratif dan lainnya dalam imperatif, serta terdapat pula yang dapat mengakomodasi keduanya [7].

Tabel 1. Paradigma dan contoh bahasa pemrogramannya.

Paradigma Bahasa [6] Bahasa [7]
Imperatif C, Fortran, Basic
Prosedural:
C, C++, Java,
ColdFusion, Pascal
Berorientasi obyek:
Simula, Java, C++,
Objective-C,
Visual Basic .NET,
Python, Ruby,
SmallTalk
C, C++, Java
Deklaratif Logikal:
Prolog
Fungsional:
JavaScript,
Haskwell, Scala,
Erlang, Lisp, ML,
Clojure
SQL, HTML
Mix   JavaScript, C#,
Python

Termasuk ke dalam paradigma mana suatu bahasa pemrograman, kelihatannya masih dapat diperdebatkan, seperti disajikan dalam Tabel 1, di mana dua rujukan menggolongkan dalam kategori yang berbeda.

features

Paradigma pemrograman imperatif dan deklaratif memiliki fitur-fitur yang dapat dibandingkan, kekurangan dan kelebihannya [8].

Tabel 2. Paradigma pemrograman dan fiturnya.

Paradigma Imperatif Deklaratif
Operasi Mendefiniskan
bagaimana
pekerjaan
diselesaikan
Mendefinisikan
apa tugas yang
diselesaikan
Komputasi Mendefinisikan
aliran kendali dan
perubahan
keadaan
Hanya
mendefinisikan
logika
Mutating
Variables
Sangat biasa Tidak biasa
dan tidak
disarankan
Kekuatan Notasi mudah
dipelajari; Sesuai
arsitektur mesin
Kode mudah
dioptimasi; Tingkat
abstraksi tinggi
Kelemahan Debugging sulit;
Rentan untuk
data pacu
Notasi tidak akrab;
Kode kurang dapat
disesuaikan
Paradima
Turunan
Populer
Prosedural;
Berorientasi
obyek
Fungsional;
Logikal

Programer dapat memilih paradigma pemrograman mana yang lebih cocok pada permasalahan yang akan diselesaikan.

illustration

Salah satu cara untuk membayangkan kedua kelompok besar paradigma pemrograman, imperatif dan deklaratif adalah dengan analogi contoh pada kehidupan sehari-hari [5, 9].

ordering a cup of coffee [5]

Pendekatan imperatif akan seperti

Masuk ke toko minuman kopi,
Antri dan tunggu barista melayani,
Pesan,
Sampaikan bahwa untuk dibawa,
Bayar,
Tunjungan kartu anggota untuk mengumpulkan poin,
Ambil pesanan dan pergi,

sedangkan pendekatan deklaratif

Tolong satu porsi besar latte untuk dibawa.

drawing a landscape [9]

Pendekatan imperatif akan seperti

Teman mendengarkan saran pelukis bagaimana melukis pemandangan,
Pelukis yang baik tidak benar-benar memerintah,
Pelukis hanya memberikan arahan langkah per langkah untuk mendapatkan hasil yang diinginkan,

sedangkan pendekatan deklaratif

Minta teman untuk menggambar pemandangan.

Dengan demikian dapat disarikan, sebagaimana juga telah ditegaskan dalam Tabel 2 bahwa

Penting untuk disadari bahwa banyak pendekatan deklaratif yang telah memiliki sejumlah layer abstraksi imperatif [7]. Dapat terjadi bahwa asumsi ini kadang diambil tanpa sadar dan bila asumsi ini salah maka pendekatan menjadi kurang tepat. Sebagai contoh pendekatan deklaratif seperti

Sampai bertemu di toko buku sore ini jam 1530,

mengasumsikan bahwa Anda telah mempunyai layer abstraksi interaktif tentang bagaimana mencapai toko buku dengan kendaraan umum dan menentukan waktu perjalanan yang tepat. Bila tidak mungkin langkah-langkah berikut

Jam 14 keluar dari rumah,
Berjalan menuju halte bus terdekat,
Tunggu bus menuju pusat kota,
Turun di halte taman kota,
Berjalan ke utara selama 15 menit sampai sebelum perempatan,
Menyeberang jalan ke barat dan belok ke kiri sejauh 20 meter,
Masuk ke gedung sebelah kiri berwarna biru,
Naik ke tingkat dua dan sampai ke toko buku,

diperlukan sebagai pendekatan deklaratif.

exer

  1. Untuk memakan mie dengan menggunakan sumpit, apakah termasuk pendekatan deklaratif atau imperatif? Apa syaratnya?
  2. Orang pertama belum pernah menggunakan komputer dan orang kedua sudah pernah dengan sistem operasi Windows. Bila keduanya diminta menggunakan komputer bersistem operasi Linux untuk mengirimkan email, bagaimana pendekatan yang perlu diberikan pada masing-masing?

note

  1. Thanoshan MV, “What exactly is a programming paradigm?”, freeCodeCamp, 12 Nov 2019, url https://www.freecodecamp.org/news/what-exactly-is-a-programming-paradigm/ [20220121].
  2. Wikipedia contributors, “Programming paradigm”, Wikipedia, The Free Encyclopedia, 19 December 2021, 16:33 UTC, url https://en.wikipedia.org/w/index.php?oldid=1061094136 [20220121].
  3. Martin Novak, “Imperative vs Declarative programming in JavaScript”, Medium, 22 Jun 2021, url https://medium.com/weekly-webtips/imperative-vs-declarative-programming-in-javascript-25511b90cdb7 [20220121].
  4. Gary T. Leavens, “Major Programming Paradigms”, Com S 541 Programming Languages 1, Fall 1997, url http://www.cs.ucf.edu/~leavens/ComS541Fall97/hw-pages/paradigms/major.html [20220121].
  5. Sindhuja Hari, “Programming Paradigms: A must know for all Programmers”, Hackr.io (Venture Kite), 7 Jan 2022, url https://hackr.io/blog/programming-paradigms [20220121].
  6. Bhumika_Rani, ultralordps, “Introduction of Programming Paradigms”, GeeksforGeeks, 6 Jul 2021, url https://www.geeksforgeeks.org/introduction-of-programming-paradigms/ [20220121].
  7. Tyler McGinnis, “Imperative vs Declarative Programming”, ui.dev, 13 Jul 2016, url https://ui.dev/imperative-vs-declarative-programming/ [20220121].
  8. Vinicius Fulber Garcia, “Imperative and Declarative Programming Paradigms”, Baeldung, 2 Nov 2021, url https://www.baeldung.com/cs/imperative-vs-declarative-programming [20220121].
  9. Ian Mundy, “Declarative vs Imperative Programming: Or wrong ways I was thinking about React”, codeburst, 21 Feb 2017, url https://codeburst.io/declarative-vs-imperative-programming-a8a7c93d9ad2 [20220121].

comments

#bug0384

— Sparisoma Viridi (@6unpnp) January 21, 2022

 

1) pendekatan deklaratif bila telah memiliki sejumlah layer abstraksi imperatif bagaimana menggunakan sumpit, bila belum perlu pendekatan imperatif langkah-langkah menggunakan sumpit;   2) pendekatan imperatif untuk orang pertama, pendekatan deklaratif untuk orang kedua;