Pemrograman Haskell

Download Pemrograman Haskell

Post on 19-Jan-2016

103 views

Category:

Documents

0 download

Embed Size (px)

DESCRIPTION

Haskell adalah bahasa pemrograman fungsional murni. Nama bahasa pemrograman Haskell diambil dari nama seseorang matematikawan Haskell Curry

TRANSCRIPT

  • Konsep Bahasa Pemrograman

    Pemrograman Haskell

    Disusun Oleh :

    Musofa 672011605

    Danang Kurniawan 672012606

    Program Studi Teknik Informatika

    Faktultas Teknologi Informasi

    Universitas Kristen Satya Wacana

    Salatiga

    2013

  • Pemrograman Haskell

    Haskell merupakan bahasa pemrograman yang fungsional, malas dan murni. Ia disebut

    malas karena tidak mengevaluasi ekspresi-ekspresi yang digunakannya yang sebenarnya

    memang tidak diperlukan untuk menentukan jawaban bagi suatu masalah. Kebalikan dari malas

    adalah teliti yang merupakan strategi pengevaluasian bagi kebanyakan bahasa pemrograman

    (C, C++, Java, bahkan ML). Salah satu ciri dari bahasa yang teliti adalah setiap ekspresi diteliti

    apakah hasil dari perhitungan tersebut penting atau tidak.(Hal ini mungkin tidak mutlak benar

    seluruhnya karena adanya pengoptimalan compiler yang sering disebut denganeleminasi kode

    matiyang akan menghilangkan ekspresi yang tidak digunakan di program yang sering dilakukan

    oleh bahasa-bahasa tersebut). Haskell disebut murni karena bahasa ini tidak memperbolehkan

    adanya efek samping (Efek samping adalah sesuatu yang mempengaruhi bagian di program.

    Misalnya suatu fungsi yang mencetak sesuatu ke layar yang mempengaruhi nilai dari variabel

    global. Tentu saja, suatu bahasa pemrograman yang tanpa efek samping akan menjadi sangat

    tidak berguna; Haskell menggunakan sebuah system monads untuk mengisolasi semua

    komputasi kotor dari program dan menampilkannya dengan cara yang aman. Haskell disebut

    bahasa fungsional karena evaluasi dari programnya sama dengan mengevaluasi sebuah fungsi

    dalam bahasa matematika murni. Hal ini juga yang membedakannya dari bahasa standard

    (seperti C dan Java) yang mengevaluasi sederetan pernyataan secara urut (inilah pola dari bahasa

    terstruktur ) Yang termasuk dalam bahasa pemrograman fungsional antara lain Lisp, Scheme,

    Erlang, Clean, Mercury, ML, OCaml, SQL, XSL dan lain-lain. Di antara bahasa fungsional

    tersebut, Haskell merupakan bahasa yang ideal dalam banyak hal. Bahasa fungsional seperti juga

    bahasa logika seperti Prolog adalah deklaratif. Kebalikannya yaitu bahasa procedural dan bahasa

    yang berorientasi pada obyek adalah terstruktur. Haskell memiliki sintak yang lebih mudah

    untuk dipahami daripada Lisp--bahasa turunan--(terutama bagi pemrogram yang pernah

    menggunakan bahasa yang menggunakan tanda baca yang sederhana/ringan seperti Python, TCL

    and REXX). Kebanyakan operatornya bersifat infix, tapi ada juga yang prefix. Pengaturan

    indentasi dan modulnya sangatlah familiar dan mungkin sangat menarik, misalnya tanda kurung

    bersarang yang terlalu dalam (seperti yang terlihat dalam Lisp) dihindari.

  • Sejarah Pemrograman Haskell

    Pada bulan September tahun 1987 diadakan pertemuan dalam konferensi Bahasa

    Pemrograman Fungsional dan Arsitektur Komputer atau Functional Programming Languages

    and Computer Architecture (FPCA 87) di Portland, Oregon, untuk membicarakan keadaan yang

    kurang menguntungkan di komunitas pemrograman fungsional yaitu adanya selusin bahasa

    pemrograman fungsional yang murni, kesemuanya mirip dalam hal bentuk ekspresi dan

    sintaknya. Telah dihasilkan suatu konsensus yang kuat dalam pertemuan itu yaitu bahwa

    penyebarluasan kegunaan dari kelas bahasa fungsional ini telah dihalangi oleh kekurangan dari

    kebanyakan bahasa. Telah diputuskan juga bahwa harus ada sebuah komite yang dibentuk untuk

    merancang suatu bahasa yang menyediakan komunikasi gagasan baru yang lebih cepat, suatu

    dasar yang stabil bagi pengembangan aplikasi nyata dan sebuah cara untuk membuat orang

    tertarik menggunakan bahasa fungsional. Kemudian diciptakanlah sebuah bahasa pemrograman

    fungsional yang murni yang dinamai Haskell. Nama tersebut diambil dari nama seorang ahli

    logika yaitu Haskell B. Curry yang telah menciptakan banyak dasar-dasar logika bagi kita.

    Tujuan utama dari komite tersebut adalah untuk merancang bahasa yang memenuhi syarat

    sebagai berikut :

    1. Harus cocok untuk pengajaran, penelitian dan aplikasi termasuk untuk membuat sistem

    yang besar.

    2. Harus seluruhnya dijelaskan melalui sintak dan semantik yang formal.

    3. Harus tersedia secara bebas. Semua orang boleh mengimplementasikan bahasa tersebut

    dan menyebarkannya ke siapa saja yang mereka sukai.

    4. Harus didasarkan pada gagasan yang sesuai dengan konsensus umum.

    5. Harus mengurangi perubahan yang tidak diperlukan dalam bahasa pemrograman

    fungsional.

    Komite tersebut menganggap bahwa Haskell dapat dijadikan sebagai bahan penelitian masa

    depan dalam bidang rancangan bahasa dan berharap bahwa variasi bahasa akan muncul sesuai

    dengan hasil percobaan. Haskell kemudian terus berkembang sejak dipublikasikan. Pada

    pertengahan tahun 1997, telah ada empat rancangan bahasa yang dihasilkan (yang terbaru pada

    saat itu adalah Haskell 1.4). Pada saat workshop Haskell tahun 1997 di Amsterdam, diputuskan

    bahwa diperlukan varian yang stabil dari Haskell. Bahasa yang stabil ini disebut Haskell 98.

  • Haskell 98 mirip dengan Haskell 1.4, tapi ia menawarkan beberapa penyederhanaan dan

    penghilangan lubang-lubang jebakan karena ketidakhati-hatian.

    Setelah Haskell 98 stabil, kelihatan jelas sekali bahwa banyak program memerlukan akses ke

    suatu set pustaka fungsi yang lebih banyak (yakni berhubungan dengan input/output dan

    interaksi ringan dengan sistem operasi). Jika program ini menjadi fleksibel, sekumpulan pustaka

    harus distandarkan juga. Sejumlah usaha dilakukan oleh komite untuk memperbaiki pustaka

    Haskell 98.

    Haskell

    Haskell merupakan salah satu dari banyak bahasa pemrograman fungsional, seperti Lisp,

    Scheme, Erlang, Clean, Mercury, ML, Ocaml, SQL, XSL, dll. Mirip dengan bahasa

    pemrograman fungsional, bahasa pemrograman logical seperti Prolog merupakan bahasa

    pemrograman deklaratif. Berlawanan dengan kedua kategori di atas, bahasa pemrograman

    prosedural dan object-oriented masuk dalam kategori bahasa pemrograman terstruktur.

    Dikatakan terstruktur, karena mengandung urutan perintah yang dieksekusi satu demi satu

    secara strict (keras). Beberapa bahasa pemrograman seperti Python, Perl, dan Ruby melewati

    batasan-batasan paradigma di atas.

    Di antara bahasa pemrograman fungsional, Haskell dalam banyak hal merupakan yang

    paling ideal. Haskell merupakan bahasa pemrograman fungsional murni, yang berarti jauh dari

    efek samping. Bahasa pemrograman fungsional merupakan ekspresi tunggal, yang dieksekusi

    dengan mengevaluasi ekspresi tersebut. Bahasa pemrograman fungsional mirip dengan

    spreadsheet, di mana nilai dari tiap cell ditetapkan yang berpengaruh pada nilai dari cell lainnya.

    Fokusnya adalah pada apa yang akan dihitung, bukan bagaimana proses penghitungannya.

    Adapun kelebihan dari bahasa pemrograman fungsional antara lain:

    1. Singkat.

    Program fungsional cenderung lebih ringkas dibanding program terstruktur (2 sampai 10

    kali).

    2. Mudah dimengerti.

  • Program fungsional seringjali lebih mudah untuk dimengerti. Dalam kasus Quicksort,

    tidak terlalu diperlukan pengetahuan mengenai Haskell maupun quicksort. Hal tersebut

    tidak dapat terjadi pada program C, yang membutuhkan waktu untuk dimengerti, dan

    sangat mudah untuk melakukan kesalahn kecil yang mengakibatkan program tidak dapat

    dieksekusi.

    3. Tidak ada tumpukan pada memori.

    Tidak ada kemungkinan memperlakukan integer sebagai pointer, atau dilanjutkan dengan

    pointer null.

    4. Kode dapat digunakan kembali.

    Bahasa pemrograman fungsional menggunakan polymorphism, yang akan meningkatkan

    penggunaan kembali kode.

    5. Pelekatan yang kuat.

    Bahasa fungsional non-strict memliki fitur kuat lainnya: hanya mengevaluasi program

    seperti yang diperlukan untuk menghasilkan jawaban, yang sering disebut dengan lazy

    evaluation. Struktur data dievaluasi secukupnya untuk menghasilkan jawaban, dan

    sebagian mungkin tidak dievaluasi sama sekali. Hal ini memungkinkan pelekatan untuk

    menyusun bersama program yang sudah ada. Hal ini memungkinkan penggunaan

    kembali program, atau potongan program lebih sering dari yang dapat dilakukan oleh

    pengaturan terstruktur.

    6. Abstraksi yang kuat.

    Secara umum bahasa fungsional menawarkan cara-cara baru yang kuat untuk meng-

    enkapsulasi abstraksi. Abstraksi mengizinkan kita untuk menentukan objek yang

    pekerjaan internalnya tersembunyi. Abstraksi merupakan kunci untuk membangun

    program modular yang dapat dipelihara. Satu mekanisme abstraksi yang kuat yang

    terdapat dalam bahasa fungsional adalah higher-order function.

    7. Manajemen memori yang terintegrasi.

    Kebanyakan program rumit perlu mengalokasikan memori dinamis dari tumpukan (heap).

    Setiap bahasa fungsional memudahkan pemrogram dari beban manajemen penyimpanan

  • tersebut. Penyimpanan dialokasikan dan diinisialisaikan secara implisit, dan diselamatkan

    secara otomatis oleh kolektor sampah.

    Mengapa Menggunakan Haskell

    Menulis system software yang besar sangatlah sulit dan mahal. Dan bahkan untuk mengelola

    system itu bisa lebih sulit dan lebih mahal. Bahasa pemrograman fungsional semacam Haskell

    dapat membuatnya lebih mudah dan lebih murah. Haskell sebagai bahasa pemrograman

    fungsional murni dapat :

    1. Meningkatkan produktifitas programmer (Ericsson banyak meman