Lisp to duży i złożony język, obsługujący duże i złożone środowisko wykonawcze. Z tego powodu Lisp najlepiej nadaje się do dużych i skomplikowanych problemów.
Teraz złożony problem to nie to samo, co skomplikowany . Kompleks problemem jest to jeden z wielu drobnych szczegółów, które jednak nie jest trudne. Pisanie systemu rezerwacji linii lotniczych to skomplikowana sprawa, ale przy wystarczającej ilości pieniędzy i programistach nie jest to trudne. Dostrzeż różnicę?
Skomplikowany problem to taki, który jest zawiły, taki, w którym tradycyjne dzielenie i zdobywanie nie działa. Sterowanie robotem lub praca z danymi, które nie są tabelaryczne (na przykład języki) lub bardzo dynamiczne sytuacje.
Lisp jest naprawdę dobrze dostosowany do problemów, w których rozwiązanie musi być rozszerzalne; klasycznym przykładem jest edytor tekstu emacs. Jest w pełni programowalny, a tym samym stanowi samo w sobie środowisko programistyczne.
W swojej słynnej książce PAIP Norvig mówi, że Lisp jest idealny do programowania eksploracyjnego. To znaczy zaprogramowanie rozwiązania problemu, który nie jest w pełni zrozumiały (w przeciwieństwie do systemu rezerwacji on-line). Innymi słowy: skomplikowane problemy.
Ponadto nauka Lispa przypomni ci o czymś fundamentalnym, o czym zapomniano: różnicę między Von Neumannem a Turingiem. Jak wiemy, model obliczeniowy Turinga jest interesującym modelem teoretycznym, ale bezużyteczny jako model do projektowania komputerów. Z drugiej strony Von Neumann zaprojektował model wykonywania komputerów i obliczeń: model Von Neumanna. Kluczowe dla modelu Von Neumanna jest to, że masz tylko jedną pamięć i przechowujesz tam zarówno swój kod, jak i dane. Zwróć uwagę, że program w języku Java (lub C #, czy cokolwiek lubisz) jest przejawem modelu Turinga. Ustawiasz swój program w konkretny sposób, raz na zawsze. W takim razie masz nadzieję, że poradzisz sobie ze wszystkimi danymi, które zostaną na niego wyrzucone.
Lisp utrzymuje model Von Neumana; nie ma ostrej, z góry określonej granicy między kodem a danymi. Programowanie w Lispie otwiera twój umysł na potęgę modelu Von Neumanna. Programowanie w Lispie sprawia, że widzisz stare koncepcje w nowym świetle.
Wreszcie, będąc interaktywnym, nauczysz się współdziałać ze swoimi programami podczas ich tworzenia (w przeciwieństwie do kompilowania i uruchamiania). Zmienia to również sposób programowania i sposób patrzenia na programowanie.
Tym wstępem mogę wreszcie odpowiedzieć na Twoje pytanie: czy znajdziesz miejsca, w których przyćmiewa „tradycyjne” języki?
Jeśli jesteś zaawansowanym programistą, potrzebujesz zaawansowanych narzędzi. Nie ma bardziej zaawansowanego narzędzia niż Lisp. Lub innymi słowy: odpowiedź brzmi: tak, jeśli twoje problemy są trudne. Nie inaczej.