encyklopedia.run.place

Lisp (język programowania)

Wprowadzenie

Lisp (skrót od LISt Processing) jest rodziną języków programowania opartych na przetwarzaniu list. Po raz pierwszy został zaprojektowany w latach 1960 przez Johna McCarthya w MIT jako język do badań w dziedzinie sztucznej inteligencji. Lisp jest jednym z najstarszych języków wciąż używanych i wywarł znaczący wpływ na rozwój teorii języków programowania, kompilatorów oraz środowisk interaktywnych.

Historia

Charakterystyczne cechy

  1. Pełna symboliczna reprezentacja kodu – w Lispie kod i dane mają tę samą strukturę (listy), co umożliwia metaprogramowanie i łatwe operacje na własnym kodzie.
  2. Makra – potężny mechanizm transformacji kodu w czasie kompilacji, pozwalający definiować nowe konstrukcje językowe.
  3. Dynamiczne typowanie – zmienne nie mają przypisanego typu statycznie; typy są sprawdzane w czasie wykonywania.
  4. Garbage collection – automatyczne zarządzanie pamięcią, wprowadzone już w pierwszych implementacjach Lispa.
  5. Rekurencja i funkcje wyższego rzędu – język kładzie duży nacisk na rekursję i operacje na funkcjach jako wartościach pierwszej klasy.

Składnia

Podstawowy element składni Lispa to wyrażenie S‑wyrażeniowe (S‑expression), zapisywane w postaci listy ograniczonej nawiasami okrągłymi:

(operator argument1 argument2 …)

Przykładowe wyrażenia:

  • (+ 1 2 3) – suma trzech liczb, wynik 6;
  • (defun faktorial (n) (if (<= n 1) 1 (* n (faktorial (- n 1))))) – definicja funkcji obliczającej silnię.

Dialekty i standardy

DialektRok powstaniaOpis
Common Lisp1984Standardowy, wieloparadygmatyczny język, łączący elementy proceduralne, funkcyjne i obiektowe (CLOS).
Scheme1975Lekka odmiana Lispa, skupiająca się na prostocie i minimalizmie, z silnym wsparciem dla continuations.
Emacs Lisp1985Dialekt używany do rozszerzania edytora Emacs.
Clojure2007Funkcyjny język na platformie JVM, korzystający z niezmiennych struktur danych.
Racket1995Rozszerzenie Scheme, oferujące bogate środowisko do tworzenia języków domenowych.

Implementacje

Do najważniejszych implementacji Lispa należą:

  • SBCL (Steel Bank Common Lisp) – wysokowydajny kompilator do kodu natywnego.
  • CLISP – interpreter/kompilator zgodny z Common Lisp, działający na wielu platformach.
  • Chez Scheme – szybka implementacja Scheme z wbudowanym kompilatorem JIT.
  • GNU Emacs – zawiera własną maszynę wirtualną dla Emacs Lisp.
  • Clojure – uruchamiany na JVM oraz w środowisku JavaScript (ClojureScript).

Wykorzystanie

Lisp jest wykorzystywany w różnych dziedzinach, m.in.:

  • Sztuczna inteligencja – historycznie podstawowy język w badaniach AI, np. w Stanford AI Lab.
  • Edytory i środowiska programistyczne – Emacs, Vim (poprzez wtyczki), a także Racket jako platforma edukacyjna.
  • Systemy wbudowane – Lisp w wersji Scheme jest używany w mikrokontrolerach (np. Chipcon).
  • Finanse i analiza danych – Clojure i ClojureScript w aplikacjach przetwarzających duże zbiory danych.

Wpływ i dziedzictwo

Lisp miał ogromny wpływ na rozwój teorii języków programowania. Jego koncepcje, takie jak garbage collection, dynamic typing, first‑class functions i makra, stały się fundamentem nowoczesnych języków, w tym Python, Ruby oraz JavaScript. Ponadto, Lisp wprowadził pojęcie REPL (Read‑Eval‑Print Loop), które stało się standardowym interaktywnym środowiskiem w wielu językach.

Kontrowersje i krytyka

Mimo swoich zalet, Lisp bywa krytykowany za:

  • Skąpą popularność w przemyśle komercyjnym, co utrudnia rekrutację programistów.
  • Nietypową składnię (wykraczającą poza tradycyjne notacje infiksowe), co może odstraszać nowicjuszy.
  • Brak jednorodnego standardu wśród licznych dialektów, co prowadzi do fragmentacji społeczności.

Zobacz także

Literatura

  1. John McCarthy, “Recursive Functions of Symbolic Expressions and Their Computation by Machine”, MIT, 1960.
  2. Guy L. Steele Jr., “Common Lisp: The Language”, Digital Press, 1990.
  3. Harold Abelson, Gerald Jay Sussman, „Structure and Interpretation of Computer Programs”, MIT Press, 1996.
  4. R. Kent Dybvig, „The Scheme Programming Language”, MIT Press, 1998.
  5. Rich Hickey, „Clojure”, O'Reilly Media, 2009.

Zewnętrzne zasoby

Po więcej szczegółów zapraszamy do przeglądania powiązanych artykułów w ramach tej encyklopedii.