Ilustrasi: Dominasi Kurung Kurawal dalam Struktur Lisp
Lisp, singkatan dari *LISt Processing*, adalah salah satu bahasa pemrograman tertua yang masih digunakan secara aktif hingga saat ini. Diciptakan oleh John McCarthy pada akhir tahun 1950-an, Lisp memiliki sejarah yang kaya dan pengaruh yang mendalam pada perkembangan ilmu komputer. Berbeda dengan bahasa imperatif modern seperti Java atau Python, Lisp adalah bahasa fungsional klasik yang menekankan pada manipulasi daftar (list) sebagai struktur data utama.
Keunikan Lisp terletak pada kesederhanaan sintaksisnya yang sangat konsisten. Hampir semua konstruksi dalam Lisp — termasuk definisi fungsi, pemanggilan fungsi, dan struktur kontrol — direpresentasikan sebagai daftar. Ini dikenal sebagai prinsip "Code as Data" atau homoiconicity. Karena kode dan data memiliki struktur yang sama, program Lisp dapat dengan mudah memanipulasi program lain, bahkan dirinya sendiri. Kemampuan meta-pemrograman ini adalah salah satu kekuatan terbesar Lisp.
Inti dari Lisp adalah *S-expression* (Symbolic Expression), yang hampir selalu ditulis dengan notasi awalan (prefix notation) dan dikelilingi oleh tanda kurung. Sebagai contoh, operasi penjumlahan `2 + 3` ditulis sebagai `(+ 2 3)`.
Kesamaan antara kode dan data (homoiconicity) memungkinkan Lisp menjadi sangat fleksibel. Programmer dapat menulis program yang menghasilkan dan memodifikasi kode lain saat runtime, sebuah teknik yang sangat berguna dalam kompilasi, pembuatan domain-specific languages (DSL), atau dalam sistem kecerdasan buatan (AI) yang kompleks.
; Contoh S-expression sederhana:
(defun hitung-luas (panjang lebar)
(* panjang lebar))
(hitung-luas 10 5) ; Outputnya adalah 50
Meskipun Lisp adalah nama keluarga bahasa, saat ini terdapat beberapa dialek utama yang digunakan secara luas:
Meskipun Lisp mungkin tidak mendominasi pasar pengembangan aplikasi umum seperti Python atau JavaScript, warisannya sangat terasa. Konsep-konsep yang diperkenalkan atau dipopulerkan oleh Lisp kini menjadi standar di banyak bahasa lain.
Beberapa kontribusi penting Lisp meliputi:
Mempelajari Lisp, terutama dialek seperti Common Lisp atau Clojure, menawarkan perspektif baru tentang cara membangun perangkat lunak. Ini melatih pikiran untuk berpikir secara lebih abstrak, lebih fungsional, dan lebih fokus pada manipulasi ekspresi daripada sekadar urutan instruksi. Di era komputasi paralel dan kebutuhan akan DSL yang spesifik, pemahaman mendalam tentang meta-pemrograman yang ditawarkan Lisp menjadi aset yang berharga. Lisp adalah bukti bahwa ide-ide lama, jika dirancang dengan elegan, akan selalu relevan.