encyklopedia.space

Lisp

Lisp (ang. LISt Processing) jest rodziną języków programowania, które zostały opracowane w 1958 roku przez Johna McCarthya i jego zespół w MIT. Język ten jest jednym z najstarszych języków wysokiego poziomu, który wciąż jest aktywnie używany w badaniach oraz w przemyśle.

Historia

Pierwsza implementacja Lispa – LISP 1 – powstała w 1958 roku jako język przeznaczony do badania sztucznej inteligencji. W kolejnych dekadach język ewoluował, powstawały takie wersje jak Maclisp, Scheme (w 1975 roku) oraz Common Lisp (standaryzowany w 1990 roku).

Charakterystyka

  • Składnia oparta na listach – kod i dane są przedstawiane jako listy s‑wyrażeń (ang. sexpr), co umożliwia łatwe manipulowanie kodem jako danymi (metaprogramowanie).
  • Dynamiczne typowanie – typy zmiennych są określane w czasie wykonywania.
  • Garbage collection – automatyczne zarządzanie pamięcią, wprowadzone już w pierwszej wersji języka.
  • Wieloparadygmatyczność – poza programowaniem funkcyjnym (np. programowanie funkcyjne) Lisp wspiera programowanie proceduralne oraz obiektowe (np. CLOS – Common Lisp Object System).

Warianty

Rodzina Lispa obejmuje wiele wariantów, z których najważniejsze to:

Common Lisp
Standaryzowany w 1990 roku, oferuje rozbudowany zestaw bibliotek i mechanizmów językowych.
Scheme
Zaprojektowany jako prostsza i bardziej elegancka wersja Lispa, wykorzystywany w edukacji oraz w projektach badawczych.
Clojure
Nowoczesny dialekt działający na platformie JVM, integrujący się z ekosystemem Javy i oferujący wsparcie dla programowania współbieżnego.
Racket
Rozszerzona wersja Scheme, skierowana do nauczania programowania i tworzenia języków domenowych.

Wpływ i zastosowania

Lisp miał ogromny wpływ na rozwój informatyki:

  • Wprowadził pojęcie garbage collection, które stało się standardem w nowoczesnych językach.
  • Rozwinął techniki metaprogramowania i makr, które są używane w językach takich jak Ruby czy Elixir.
  • Jako język badawczy przyczynił się do postępu w sztucznej inteligencji, w tym w systemach ekspertowych i robotyce.
  • Współczesne języki programowania, takie jak Haskell, Swift czy JavaScript, zawierają elementy inspirowane Lispm, np. funkcje wyższego rzędu i zamknięcia.

Przykładowy kod

(defun factorial (n)
  (if (<= n 1)
      1
      (* n (factorial (- n 1)))))

Powyższy przykład definiuje rekurencyjnie funkcję obliczającą silnię w Common Lisp.

Bibliografia i dalsze lektury

Więcej informacji można znaleźć w następujących pozycjach: