Skip to main content

Bahasa Pemrograman Fungsional - Tinjauan Sekilas

Pemrograman Fungsional adalah cara pemrograman yang berdasarkan teori fungsi matematika dan berfokus pada hasil komputasi, dimana proses komputasi diperlakukan sebagai evaluasi fungsi-fungsi matematika. Cara pemrograman fungsional bisa menjadikan program lebih ekpresif (menggunakan koding lebih sedikit untuk mengimplementasikan sesuatu ide) sehingga programer dapat menjadi lebih produktif.
Bahasa yang termasuk Functional Programming Language adalah Perl 6, Erlang, Elixir, Lisp, Clojure, Elixir, Elm, F#, Haskell, Idris, Scala.

Beberapa konsep dasar dari FPL:
  1. Pure FPL tidak menggunakan variabel maupun assignment statement, seperti halnya pada mathematical function. Pemrogram terbebas dari perlunya memahami memory-cell, atau state dari program.
  2. Tanpa variabel, FPL tidak dapat menyediakan fasilitas perulangan dalam bentuk iterasi, karena iterasi memerlukan variabel pengontrol. Pengulangan harus dilakukan dalam bentuk rekursi.
  3. Dalam FPL, hasil evaluasi dari suatu fungsi selalu memberikan hasil yang sama selama parameternya sama. Fitur ini disebut referential transparency.
  4. Walaupun pengulangan dengan recursion berjalan dengan lambat, namun compiler dapat secara otomatis mengkonversi fungsi rekursif tertentu ( yang disebut tail recursion), kedalam fungsi iteratif.
Salah satu contoh bahasa pemrograman yang menggunakan konsep FPL adalah LISP.

Lambda Calculus dalam Bahasa Pemrograman Fungsional

Lambda calculus menjelaskan secara spesifik parameter-parameter suatu fungsi serta pemetaan (mapping) yang terdapat dalam fungsi tersebut. Lambda calculus secara umum merupakan model penghitungan menggunakan notasi lambda (λ) yang menghasilkan metode mudah dalam mendefinisikan fungsi-fungsi dalam jumlah besar. Notasi lambda (atau disebut sebagai lambda notation) diusulkan oleh Alonzo Church pada tahun 1941. Lambda calculus dapat dituliskan secara langsung maupun tidak langsung. Penulisan lambda calculus secara tidak langsung merupakan inspirasi bagi functional programming languages.

Contoh penggunaan lambda calculus:
λ(x)x+x+x(7) menghasilkan nilai 21. Bentuk tersebut sama dengan 7+7+7.
λ(x)x*x+x(8) menghasilkan nilai 72. Bentuk tersebut sama dengan 8*8+8.
λ(x,y)x-y+y(7,6) bernilai 7. Bentuk tersebut sama dengan 7-6+6.
Dalam LISP menggunakan sintaks (function_name(LAMBDA(arg1 ... argn) expr)).

Perbandingan Antara Bahasa Fungsional dan Imperatif

• Bahasa Imperatif:
  • Eksekusi yang efisien
  • Semantik kompleks
  • Sintaks yang kompleks
  • Concurrency dirancang oleh pemrogram
• Bahasa Fungsional:
  • Semantik sederhana
  • Sintaks sederhana
  • Eksekusi yang kurang efisien
  • Program dapat dibuat secara bersamaan

Comments

Popular posts from this blog

Pengertian Binding dalam Bahasa Pemrograman dan Kapan Terjadinya

Binding dimaksudkan sebagai pengikatan (association) antara suatu entity dengan atributnya, misalnya binding/pengikatan antara suatu variable dengan tipe datanya atau dengan nilainya, atau dapat juga antara suatu operasi dengan simbol, misalnya simbol + dikenali sebagai operasi penjumlahan atau simbol ^ dikenali sebagai operasi pangkat, dll.  Peristiwa binding dan kapan terjadinya binding (biasanya disebut dengan binding time ) berperan penting dalam membicarakan semantics suatu bahasa pemrograman. Beberapa kemungkinan binding time adalah:

Latihan Soal Jawab Matematika Diskrit

Berikut di bawah ini adalah latihan soal jawab untuk matematika diskrit dengan topik-topik: Pernyataan Logika Circuits dan Ekspresi Boolean Argumen (valid/tidak valid) Teori Himpunan Permutasi Fungsi --o0o-- Pernyataan Logika 1. Buatlah tabel kebenaran untuk menentukan yang mana tautology dan yang mana contradiction dalam pernyataan logika (a) dan (b) di bawah ini: a. (p ∧ q) ∨ (∼p ∨ (p ∧ ∼q)) b.  (p ∧ ∼q) ∧ (∼p ∨ q)

Contoh proses normalisasi relasi dari UNF – 1NF – 2NF – dan 3NF

Dalam posting tulisan tentang: “Tujuan dan Manfaat Normalisasi dalam Perancangan Database” , kita sudah mempelajari tentang: “Apa itu normalisasi” dan “Mengapa kita perlu melakukan normalisasi”. Kedua pertanyaan itu sudah terjawab dalam tulisan tersebut.  Kemudian dalam posting tulisan tentang: “Konsep Ketergantungan Fungsional, Normalisasi, dan Identifikasi Primary Key dalam Perancangan Sistem Database” , kita sudah mempelajari suatu konsep penting yang digunakan untuk melakukan normalisasi, yaitu konsep ketergantungan fungsional yang terdiri dari ketergantungan penuh, ketergantungan parsial atau sebagian, dan ketergantungan transitif. Proses normalisasi pertama-tama dilakukan dengan mengidentifikasi adanya ketergantungan-ketergantungan tersebut dalam relasi-relasi dan kemudian menghilangkannya. Cara melakukan normalisasi, mengidentifikasi berbagai macam ketergantungan, dan menghilangkan ketergantungan pada relasi-relasi bisa dipelajari ulang dalam postingan tulisan di at