Lisp ist eine große und komplexe Sprache mit einer großen und komplexen Laufzeit, um sie zu unterstützen. Aus diesem Grund eignet sich Lisp am besten für große und komplizierte Probleme.
Ein komplexes Problem ist nicht dasselbe wie ein kompliziertes . Ein komplexes Problem ist eines mit vielen kleinen Details, das aber nicht schwer ist. Das Schreiben eines Airline-Buchungssystems ist ein komplexes Geschäft, aber mit genügend Geld und Programmierern ist es nicht schwer. Den Unterschied bekommen?
Ein kompliziertes Problem ist ein kompliziertes, bei dem traditionelles Teilen und Erobern nicht funktioniert. Steuern eines Roboters oder Arbeiten mit Daten, die nicht tabellarisch sind (z. B. Sprachen) oder in hochdynamischen Situationen.
Lisp eignet sich sehr gut für Probleme, bei denen die Lösung erweiterbar sein muss. Das klassische Beispiel ist der Emacs-Texteditor. Es ist vollständig programmierbar und somit eine eigenständige Programmierumgebung.
In seinem berühmten Buch PAIP sagt Norvig, dass Lisp ideal für explorative Programmierung ist. Das heißt, Sie programmieren eine Lösung für ein Problem, das nicht vollständig verstanden wurde (im Gegensatz zu einem Online-Buchungssystem). Mit anderen Worten: Komplizierte Probleme.
Darüber hinaus wird das Erlernen von Lisp Sie an etwas Grundlegendes erinnern, das vergessen wurde: Der Unterschied zwischen Von Neumann und Turing. Wie wir wissen, ist Turings Rechenmodell ein interessantes theoretisches Modell, aber als Modell für den Entwurf von Computern nutzlos. Von Neumann hingegen entwarf ein Modell für die Ausführung von Computern und Berechnungen: Das Von Neumann-Modell. Im Mittelpunkt des Von Neumann-Modells steht, dass Sie nur einen Speicher haben und dort sowohl Ihren Code als auch Ihre Daten speichern. Beachten Sie sorgfältig, dass ein Java-Programm (oder C # oder was auch immer Sie möchten) eine Manifestation des Turing-Modells ist. Sie setzen Ihr Programm ein für alle Mal konkret. Dann hoffen Sie, dass Sie mit allen Daten umgehen können, die darauf geworfen werden.
Lisp behält das Von Neuman-Modell bei; Es gibt keine scharfe, vorher festgelegte Grenze zwischen Code und Daten. Das Programmieren in Lisp öffnet Ihren Geist für die Kraft des Von Neumann-Modells. Wenn Sie in Lisp programmieren, sehen Sie alte Konzepte in einem neuen Licht.
Wenn Sie interaktiv sind, lernen Sie schließlich, mit Ihren Programmen zu interagieren, während Sie sie entwickeln (im Gegensatz zum Kompilieren und Ausführen). Dies ändert auch die Art und Weise, wie Sie programmieren und wie Sie die Programmierung anzeigen.
Mit diesem Intro kann ich endlich eine Antwort auf Ihre Frage geben: Finden Sie Orte, an denen es "traditionelle" Sprachen überstrahlt?
Wenn Sie ein fortgeschrittener Programmierer sind, benötigen Sie fortgeschrittene Werkzeuge. Und es gibt kein fortgeschritteneres Werkzeug als Lisp. Oder mit anderen Worten: Die Antwort lautet Ja, wenn Ihre Probleme schwierig sind. Nein anders.