Sabtu, 14 Januari 2012

Penjelasan Tentang Bahasa Pemrograman LISP (List Processing)

LISP (List Processing)

LISP (LISt Processing) dispesifikasikan John McCarthy pada tahun 1950. Mulanya LISP dimaksudkan sebagai model komputasi alternatif berdasarkan teori fungsi/persamaan rekursif. Bahasa McCarthy berdasarkan makalahnya: "Recursive functions of symbolic expressions and their computation by machine"

Tujuan McCarthy adalah sebagai berikut:
-Menciptakan bahasa untuk komputasi simbolik bukan numerik.
-Implementasi model komputasi berdasarkan teori fungsi rekursif.
-Menyediakan definisi sintaks dan simantiks bahasa yang bersih.
-Mendemonstrasikan secara formal kelengkapan model komputasi ini.

          Selain sebagai formalisasi matematika, LISP merupakan bahasa pemrograman yang praktis. LISP sesuai namanya LISt Processing dirancang untuk menyediakan kemampuan manipulasi simbol untuk menangani masalah pemrograman yang melibatkan banyak manipulasi simbolik.

          Pada LISP, list adalah basis program dan struktur data. LISP menyediakan fungsi-fungsi penanganan list yang diimplementasikan secara internal sebagai struktur pointer berkait. Program dapat menggunakan keampuhan dan generalitas penuh struktur berkait dengan bebas dari tangungjawab mengelola pointer dan operasi-operasi pointer secara eksplisit.

Mulanya LISP adalah bahasa yang sangat kecil dan sederhana, yaitu:
- Fungsi untuk membentuk dan mengakses list
- Mendefinisikan fungsi baru
- Mendeteksi kesamaan
- Evaluasi ekspresi
- Kendali Program: Rekursi dan Kondisi tunggal


Selain itu, adanya penambahan pada LISP yaitu :
- Fungsi untuk penstrukturan data
- Kendali program
- Aritmatika real dan integer
- I/O
- Penyuntingan fungsi LISP
- Penelusuran eksekusi program.

          LISP berkembang menjadi lingkungan yang kaya, ampuh dan praktis untukmembangun sistem perangkat lunak besar. Pada tahun 1993, DARPA mengusulkan standarisasi disebut Common LISP.

          LISP merupakan bahasa yang memiliki fitur unik. Bahasa LISP menjadi media yang luar biasa untuk mempelajari bentukan-bentukan pemrograman dan struktur data serta menghubungkannya ke fitur-fitur bahasa yang mendukungnya. Fitur paling berarti adalah deskripsi proses di LISP yang disebut procedure dapat direpresentasikan dan dimanipulasi sebagai data.

          Pentingnya hal ini adalah bahwa teknik-teknik perancangan program yang ampuh yang bergantung pada pengaburan antara data "pasif" dan proses "aktif".  Fleksibilitas LISP dalam menangani prosedur sebagai data membuatnya menjadi bahasa yang cocok untuk eksplorasi teknik-teknik pengaburan. Kemampuan merepresentasi prosedur sebagai data juga membuat LISP merupakan bahasa luar biasa untuk menulis program yang harus memanipulasi program lain sebagai data seperti interpreter atau kompilator yang mendukung bahasa pemrograman.

Varian-varian LISP

- LISP asli (akhir 1950) di MIT,
# LISP 1.5 diawal 1960 sebagai standar pertama,
# MacLISP (akhir 1960) -> di MIT sebagai upgrade,
# ZetaLISP dan
# LISP Machine (akhir 1970) -> varian komersial MacLISP.

- InterLISP (awal 1970) -> varian West Coast

- SCHEME (pertengahan 1970-an) -> varian LISP utama lebih dekat ke kalkulus lambda

- Portable Standard LISP (PSL) (awal 1980-an) -> versi efesien LISP dari Universitas Utah yang ditulis dengan LISP dan sceara mudah ditransport ke komputer baru

- Frans LISP (awal 1980-an) -> varian lain dari MacLISP yang dioptimasi untuk dijalankan di lingkunagn AT&T

- Common LISP (awal 1980-an) -> kombinasi standar banyak varian

- MultiLISP (pertengahan 1980-an) -> SCHEME dengan dukungan parallelism secara eksplisit

- CLOS (Common LISP Object System) -> pengembangan LISP untuk mendukung sistem objek secara eksplisit.

Secara umum, bahasa pemrograman dapat dikelompokkan berdasarkan struktur pemrogramannya, terutama dalam mengimplementasikan suatu ekspresi. Jika setiap ekspresi selalu dinyatakan dalam bentuk fungsi, maka bahasa pemrograman ini disebut sebagai functional programming. Prinsip utama dari functional programming (FP) adalah bahwa nilai suatu ekspresi hanya tergantung kepada nilai sub-ekspresinya. Nilai ekspresi seperti a + b hanya tergantung kepada nilai a dan nilai b. Prinsip ini menghilangkan efek samping dalam ekspresi sehingga FP dapat disebut sebagai pemrograman tanpa assignment.
Bahasa fungsional pada umumnya, dan LISP pada khususnya, memainkan peranan penting dalam definisi bahasa. Sebuah definisi bahasa harus ditulis ke dalam notasinotasi, disebut meta-bahasa(meta-language) atau bahasa yang didefinisikan (defining language), dan bahasa yang didefinisikan cenderung menjadi fungsional. Dalam kenyataannya, implementasi LISP pertama dimulai, ketika LISP digunakan untuk mendefinisikan dirinya sendiri.


Mungkin LISP adalah bahasa tertua kedua, setelah fortran. Diyakini LISP sebagai penyedia pertama rekursi, kelas-utama fungsi, garbage collection, dan sebuah definisi 2 bahasa formal (dalam LISP itu sendiri). Implementasi LISP juga mendorong ke arah lingkungan pemrograman terintegrasi, yang menggabungkan editor, interpreter dan debugger. LISP menggunakan notasi prefiks dengan tanda kurung. Jadi, aritmetika seperti 5 * 7 ditulis sebagai (* 5 7).

0 komentar:

Posting Komentar