Paradigma Pemrograman

Paradigma Pemrograman

Definisi

Paradigma pemrograman adalah gaya, atau “cara,” pemrograman.

Beberapa bahasa memudahkan untuk menulis dalam beberapa paradigma tetapi tidak yang lain.

 

Jangan pernah menggunakan frasa ” paradigma bahasa pemrograman.”

 

Paradigma adalah cara melakukan sesuatu (seperti pemrograman), bukan hal yang konkret (seperti bahasa). Nah, memang benar bahwa jika bahasa pemrograman L kebetulan membuat paradigma pemrograman tertentu P mudah untuk diungkapkan, maka kita sering mengatakan “L adalah bahasa P” (misalnya “Haskell adalah bahasa pemrograman fungsional”) tetapi itu tidak berarti ada adalah hal seperti “paradigma bahasa fungsional”.

 

Beberapa Paradigma Umum

Anda harus tahu ini:

  • Imperatif : Pemrograman dengan urutan perintah eksplisit yang memperbarui status.
  • Declarative : Pemrograman dengan menentukan hasil yang diinginkan, bukan bagaimana cara mendapatkannya.
  • Terstruktur : Pemrograman dengan struktur kontrol bersarang yang bersih, bebas goto.
  • Prosedural : Pemrograman imperatif dengan pemanggilan prosedur.
  • Fungsional (Aplikatif): Pemrograman dengan panggilan fungsi yang menghindari keadaan global apa pun.
  • Tingkat Fungsi (Kombinator): Pemrograman tanpa variabel sama sekali.
  • Berorientasi Objek : Pemrograman dengan mendefinisikan objek yang mengirim pesan satu sama lain. Objek memiliki antarmuka publik dan status internal (terenkapsulasi) mereka sendiri. Orientasi objek dapat berupa:
    • Berbasis kelas : Objek mendapatkan status dan perilaku berdasarkan keanggotaan di kelas.
    • Berbasis prototipe : Objek mendapatkan perilaku dari objek prototipe.
  • Event-Driven : Pemrograman dengan emitter dan listener tindakan asinkron.
  • Flow-Driven : Proses pemrograman berkomunikasi satu sama lain melalui saluran yang telah ditentukan.
  • Logika (Berbasis aturan): Pemrograman dengan menetapkan serangkaian fakta dan aturan. Sebuah mesin menyimpulkan jawaban atas pertanyaan.
  • Constraint : Pemrograman dengan menetapkan sekumpulan batasan. Sebuah mesin menemukan nilai-nilai yang memenuhi kendala.
  • Berorientasi Aspek : Pemrograman lintas sektoral diterapkan secara transparan.
  • Reflektif : Pemrograman dengan memanipulasi elemen program itu sendiri.
  • Array : Pemrograman dengan operator array yang kuat yang biasanya membuat loop tidak diperlukan.

Paradigma tidak dimaksudkan untuk saling eksklusif ; satu program dapat menampilkan banyak paradigma!

 

Melihat Beberapa Paradigma Utama

Pemrograman Imperatif

Aliran kontrol dalam pemrograman imperatif adalah eksplisit : perintah menunjukkan bagaimana perhitungan berlangsung, langkah demi langkah. Setiap langkah mempengaruhi keadaan global komputasi.

    hasil = [] 
    saya =  
mulai :
    jumlah Orang = panjang ( orang )
    if i >= numOrang harus selesai
    p = orang [ i ]
    namaPanjang = panjang ( hal . nama )
    jika nameLength <= 5 goto nextOne  
    upperName = toUpper ( p . nama )
    addToList ( hasil , nama atas )
berikutnyaSatu :
    saya = saya + 1 
    harus mulai
selesai :
    pengurutan kembali ( hasil )

Pemrograman Terstruktur

Pemrograman terstruktur adalah jenis pemrograman imperatif di mana aliran kontrol didefinisikan oleh loop bersarang, kondisional, dan subrutin, bukan melalui gotos. Variabel umumnya lokal ke blok (memiliki cakupan leksikal).

hasil = []; 
untuk saya = 0 ; i < panjang ( orang ); saya ++ {  
    p = orang [ i ];
    if panjang ( hal . nama )) > 5 {   
        addToList ( hasil , toUpper ( p . nama ));
    }
}
pengurutan kembali ( hasil );

Bahasa awal yang menekankan pemrograman terstruktur: Algol 60, PL/I, Algol 68, Pascal, C, Ada 83, Modula, Modula-2. Pemrograman terstruktur sebagai suatu disiplin kadang-kadang meskipun telah dimulai dengan surat terkenal oleh Edsger Dijkstra berjudul Pergi ke Pernyataan Dianggap Berbahaya .

Baca Juga:  6 Layanan Hosting Web Terbaik Untuk Kreator 2022

 

Pemrograman berorientasi objek

OOP didasarkan pada pengiriman pesan ke objek. Objek merespon pesan dengan melakukan operasi, umumnya disebut metode . Pesan dapat memiliki argumen. Sebuah masyarakat objek, masing-masing dengan memori lokal mereka sendiri dan set operasinya sendiri memiliki nuansa yang berbeda dari prosesor monolitik dan nuansa memori bersama tunggal dari bahasa yang tidak berorientasi objek.

Salah satu aspek yang lebih terlihat dari bahasa OO yang lebih murni adalah bahwa kondisional dan loop menjadi pesan itu sendiri, yang argumennya sering berupa blok kode yang dapat dieksekusi. Dalam sintaks seperti Smalltalk:

hasil := Daftar baru .  
orang masing-masing : [: p | 
  p panjang nama lebih besarDari : 5 jika Benar : [ hasil tambah ( p nama atas )]  
]
pengurutan hasil .
^ hasil

Ini dapat disingkat menjadi:

^ filter orang : [: p | p panjang nama lebih besarDari : 5 ] peta : [: p | p nama atas ] urutkan

Banyak bahasa populer yang menyebut dirinya bahasa OO (misalnya, Java, C++), benar-benar hanya mengambil beberapa elemen OOP dan mencampurnya ke dalam kode yang tampak imperatif. Berikut ini, kita dapat melihat bahwa lengthdan toUpperadalah metode daripada fungsi tingkat atas, tetapi fordan ifkembali menjadi struktur kontrol:

hasil = [] 
untuk p dalam orang {
    jika hal . nama . panjang > 5 {  
        hasil . tambahkan ( p . nama . toUpper );
    }
}
kembali hasil . urutkan ;

Bahasa berorientasi objek pertama adalah Simula-67; Smalltalk segera menyusul sebagai bahasa berorientasi objek “murni” pertama. Banyak bahasa yang dirancang dari tahun 1980-an hingga sekarang telah menamakan dirinya berorientasi objek, terutama C++, CLOS (sistem objek Common Lisp), Eiffel, Modula-3, Ada 95, Java, C#, Ruby.

 

Pemrograman Deklaratif

Aliran kontrol dalam pemrograman deklaratif bersifat implisit : programmer hanya menyatakan seperti apa hasilnya, bukan bagaimana cara mendapatkannya.

pilih atas ( nama )
dari orang- orang
dimana panjang ( nama ) > 5  
memesan dengan nama

Tidak ada loop, tidak ada tugas, dll. Mesin apa pun yang menafsirkan kode ini seharusnya hanya mendapatkan informasi yang diinginkan, dan dapat menggunakan pendekatan apa pun yang diinginkannya. (Paradigma logika dan kendala umumnya deklaratif juga.)

Baca Juga:  Nikmati hosting web DoRoyal seumur hidup dan dukungan untuk $49

 

Pemrograman Fungsional

Dalam pemrograman fungsional , aliran kontrol diekspresikan dengan menggabungkan pemanggilan fungsi, bukan dengan menetapkan nilai ke variabel:

mengurutkan (
  memperbaiki ( λ f . p . 
    jika ( sama dengan ( p , daftar kosong ),
      daftar kosong ,
      jika ( lebih besar ( panjang ( nama ( kepala ( p ))), 5 ), 
        tambahkan ( to_upper ( nama ( kepala ( p ))), f ( ekor ( p ))),
        f ( ekor ( orang ))))) ( orang ))

Astaga! Kami akan menjelaskannya nanti. Untuk saat ini, bersyukurlah biasanya ada gula sintaksis:

membiarkan
    fun uppercasedLongNames [] = []  
      | uppercasedLongNames ( p :: ps ) = 
          jika panjang ( nama p ) > 5 maka ( to_upper ( nama p ))::( uppercasedLongNames ps )    
          lain ( uppercasedLongNames ps ) 
di
    sort ( huruf besarLongNames ( orang ))

Hah? Itu masih tidak terlalu cantik. Mengapa orang menyukai barang ini? Nah kekuatan sebenarnya dari paradigma ini berasal dari meneruskan fungsi ke fungsi (dan mengembalikan fungsi dari fungsi).

mengurutkan (
    filter dtk . panjang s > 5 , 
        peta p . to_upper ( nama p ),
            orang )))

|>Kita bisa melakukan lebih baik dengan menggunakan operator keren . Di sini x |> fhanya berarti f(x). Operator memiliki prioritas yang sangat rendah sehingga Anda dapat membaca semuanya dari kiri ke kanan:

people |> map p . to_upper ( nama p )) |> filter s . length s > 5 ) |> sort

Ayo lanjutkan! Perhatikan bahwa Anda tidak akan menulis map(λx. square(x)), bukan? Anda akan menulis map(square). Kita bisa melakukan hal serupa di atas, tetapi kita harus menggunakan komposisi fungsi, (f o g)xyaitu f(g(x)), jadi:

orang |> peta ( ke_atas nama ) |> filter ( s . panjang s > 5 ) |> sort

Berikut adalah tiga hal yang harus dibaca untuk mendapatkan inti dari pemrograman fungsional:

Dengan pemrograman fungsional:

  • Tidak ada perintah, hanya ekspresi bebas efek samping
  • Kode jauh lebih pendek, tidak rawan kesalahan, dan lebih mudah untuk dibuktikan kebenarannya
  • Ada lebih banyak paralelisme yang melekat, sehingga kompiler yang baik dapat menghasilkan kode yang lebih cepat

Beberapa orang suka mengatakan:

  • Pemrograman Fungsional, atau Aplikatif, adalah pemrograman tanpa pernyataan penugasan: seseorang hanya menerapkan fungsi ke argumen. Contoh: Skema, Haskell, Miranda, ML.
  • Pemrograman tingkat fungsi menghilangkan variabel; satu menggabungkan fungsi dengan fungsi , alias kombinator . Contoh: FP, FL, J.
Latihan : Tulislah contoh di atas dalam Miranda, ML, dan J.
Latihan : Teliti gaya pemrograman berikut dan nyatakan bagaimana mereka serupa dan bagaimana mereka berbeda satu sama lain: (a) Berbasis tumpukan, (b) Concatenative, (c) Bebas poin, (d) Tacit.

Banyak bahasa memiliki hal kecil yang rapi yang disebut pemahaman yang menggabungkan peta dan filter.

diurutkan ( p . nama . atas ( ) untuk p pada orang jika len ( p . nama ) > 5 )   

Pemrograman Logika dan Batasan

Pemrograman logika dan pemrograman kendala adalah dua paradigma di mana program dibangun dengan menyiapkan hubungan yang menentukan fakta dan aturan inferensi , dan menanyakan apakah sesuatu itu benar atau tidak (yaitu menentukan tujuan .) Penyatuan dan mundur untuk menemukan solusi (yaitu memenuhi tujuan ) berlangsung secara otomatis.

Baca Juga:  Penawaran Hosting Web Black Friday 2021 – Penasihat Forbes

Bahasa yang menekankan paradigma ini: Prolog, GHC, Parlog, Vulcan, Polka, Mercury, Fnil.

Latihan : Tulis contoh lari di Prolog.

Bahasa dan Paradigma

Salah satu karakteristik bahasa adalah dukungannya untuk paradigma pemrograman tertentu. Misalnya, Smalltalk memiliki dukungan langsung untuk pemrograman dengan cara berorientasi objek, sehingga bisa disebut bahasa berorientasi objek. Program OCaml, Lisp, Scheme, dan JavaScript cenderung menggunakan banyak fungsi lewat sehingga mereka disebut “bahasa fungsional” meskipun memiliki variabel dan banyak konstruksi imperatif.

Ada dua pengamatan yang sangat penting di sini:

  • Sangat sedikit bahasa yang menerapkan paradigma 100%. Ketika mereka melakukannya, mereka murni . Sangat jarang memiliki bahasa “OOP murni” atau bahasa “fungsional murni”. Banyak bahasa memiliki beberapa pelarian; misalnya di OCaml, Anda akan memprogram dengan fungsi 90% atau lebih, tetapi jika Anda membutuhkan status, Anda bisa mendapatkannya. Contoh lain: sangat sedikit bahasa yang mengimplementasikan OOP seperti yang dibayangkan Alan Kay .
  • Banyak bahasa akan memfasilitasi pemrograman dalam satu atau lebih paradigma. Di Scala Anda dapat melakukan pemrograman imperatif, berorientasi objek, dan fungsional dengan cukup mudah. Jika suatu bahasa sengaja dirancang untuk memungkinkan pemrograman dalam banyak paradigma disebut bahasa multi-paradigma . Jika suatu bahasa hanya secara tidak sengaja mendukung banyak paradigma, kami tidak memiliki kata khusus untuk itu.

 

Sumber : https://cs.lmu.edu/~ray/notes/paradigms/

Download aplikasi bisnis online official di google playstore :

download aplikasi rezeki apps

Butuh Supplier Pakaian Branded Termurah Download aplikasi supplier baju tangan pertama :

download aplikasi rezeki apps

Rekomendasi Pembuatan Website dan Hosting TERMURAH

Jika temen-temen membutuhkan website, silahkan hubungi kontak person berikut melalui whatsapp: 085728615308.

Jika membutuhkan HOSTING TERMURAH dengan kualitas PREMIUM, silahkan klik tombol berikut dan gunakan KODE KUPON : hostinghemat untuk mendapatkan potongan.

klik disini



Cek Berita dan Artikel yang lain di Google News
DMCA.com Protection Status
Buka Chat
Butuh Bantuan?
Halo, ada peluang usaha jadi reseller pakaian kekinian kak, jika berminat silakan buka chat kak..