LISP
LISP
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.