Warum sollte ich Lisp lernen? [geschlossen]

125

Ich habe wirklich das Gefühl, dass ich Lisp lernen sollte und es gibt viele gute Ressourcen, die mir dabei helfen.

Ich bin nicht von der komplizierten Syntax abgeschreckt, aber wo ich in der "traditionellen kommerziellen Programmierung" Orte finden würde, wäre es sinnvoll, sie anstelle einer prozeduralen Sprache zu verwenden.

Gibt es da draußen eine kommerzielle Killer-App, die in Lisp geschrieben wurde?

David
quelle
5
Es ist schwer, sich von dem abschrecken zu lassen, was nicht da ist.
Kaz
Lesen Sie den Lebenslauf von Philip Greenspun . Es ist voll von echter Lisp-Arbeit.
Kaz
1
Auch hier . Greenspun arbeitete an paketvermittelter Netzwerksimulation, DSP-Design, Prozessordesign, VLSI-Layout, Automatisierung des Maschinenbaus, Automatisierung der Erdbewegung und so weiter, alles unter Verwendung von Lisp oder unter Einbeziehung von Lisp. Er half beim Entwurf der PA-RISC-Architektur von Hewlett Packard mit Tools, die auf einer Lisp-Maschine entwickelt wurden.
Kaz
Hier sind einige Apps, die in Lisp entwickelt wurden - Emacs, G2, AutoCad, Igor Engraver und Yahoo Store
Arulx Z

Antworten:

55

Eine der Hauptanwendungen für Lisp ist die künstliche Intelligenz. Ein Freund von mir am College nahm an einem AI-Abschlusskurs teil und schrieb für sein Hauptprojekt einen " Lights Out " -Löser in Lisp. Mehrere Versionen seines Programms verwendeten leicht unterschiedliche KI-Routinen und Tests auf ungefähr 40 Computern lieferten einige ziemlich gute Ergebnisse (ich wünschte, es wäre irgendwo online, auf das ich verlinken könnte, aber ich glaube nicht, dass es so ist).

Vor zwei Semestern habe ich Scheme (eine auf Lisp basierende Sprache) verwendet, um ein interaktives Programm zu schreiben, das Abbotts und Costellos "Who's on First" -Routine simuliert. Die Eingaben des Benutzers wurden mit einigen ziemlich komplizierten Datenstrukturen verglichen (die Karten in anderen Sprachen ähneln, aber viel flexibler sind), um zu entscheiden, welche Antwort angemessen wäre. Ich habe auch eine Routine geschrieben, um ein 3x3- Dia-Puzzle zu lösen (ein Algorithmus, der leicht auf größere Dia-Puzzles erweitert werden kann).

Zusammenfassend lässt sich sagen, dass das Lernen von Lisp (oder Schema) möglicherweise nicht viele praktische Anwendungen jenseits der KI bietet, aber es ist eine äußerst wertvolle Lernerfahrung, wie viele andere angegeben haben. Das Programmieren in einer funktionalen Sprache wie Lisp hilft Ihnen auch beim rekursiven Denken (wenn Sie Probleme mit der Rekursion in anderen Sprachen haben, kann dies eine große Hilfe sein).

Justin Bennett
quelle
5
Warum ist Lisp Ihrer Meinung nach nur gut für die KI? Es ist auch eine Multi-Paradigmen-Sprache. Funktional ist nur eines der verschiedenen Paradigmen, die es ermöglicht.
Luís Oliveira
6
Ich habe nicht gesagt, dass es nur für KI verwendet wird, ich sagte, dass eine seiner Hauptanwendungen KI ist. Hast du es gelesen?
Justin Bennett
32
"Bitte nehmen Sie nicht an, dass Common Lisp nur für Datenbanken, Unit-Test-Frameworks, Spam-Filter, ID3-Parser, Webprogrammierung, Shoutcast-Server, HTML-Generierungsinterpreter und HTML-Generierungscompiler nützlich ist, nur weil dies die einzigen Dinge sind, die zufällig implementiert wurden das Buch Practical CL "
Mikael Jansson
23
@ JustinBennett ja du hast es gesagt. Hier: "Zusammenfassend lässt sich sagen, dass das Lernen von Lisp (oder Schema) möglicherweise nicht viele praktische Anwendungen außerhalb der KI bietet." Ich hasse es, wenn Leute sich konfrontieren, während sie falsch liegen.
Luka Ramishvili
127

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.

Benutzer7517
quelle
30
"aber mit genug Geld und Programmierern ist es nicht schwer" - das heißt, bei ausreichend vielen Programmierern wird es unmöglich ;-)
Jonas Kölker
Ich habe über die Fähigkeit von Lisps gelesen, Code im laufenden Betrieb zu generieren, aber ich habe auch gelesen, dass er kompiliert werden kann. Gibt es Implementierungen, die interpretierte und kompilierte Ausführung mischen können? oder welche enthalten dort eigenen compiler?
centaurian_slug
@centaurian_slug: Ja, absolut. Das ist ein Teil der Kraft. Für jede Version, die nicht absichtlich verkrüppelt wurde, steht der Compiler / Interpreter zur Laufzeit zur Verfügung. So kann sich ein Entwickler beispielsweise bei einer speziellen Verbindung auf seinem Webserver anmelden, Debugging durchführen, Klassen- und Funktionsdefinitionen aktualisieren und möglicherweise bei Bedarf alles neu kompilieren, was auf diesen Definitionen basiert. Während der Server läuft. Wahrscheinlich nicht legal in einem Unternehmen, das sich Sorgen um die SOX-Konformität macht, aber das ist einer der Gründe, warum Branchen Braindead-Sprachen wie Java und C # verwenden
James
46

komplizierte Syntax ?

Die Syntax für lisp ist unglaublich einfach .

Killer App geschrieben in Lisp: Emacs . Mit Lisp können Sie Emacs nach Belieben erweitern, um fast alles zu tun, was Sie sich von einem Editor vorstellen können.

Aber du solltest Lisp nur lernen, wenn du willst , und du wirst es vielleicht nie bei der Arbeit verwenden können, aber es ist immer noch großartig.

Außerdem möchte ich hinzufügen: Selbst wenn Sie Orte finden, an denen Lisp Sinn macht, werden Sie wahrscheinlich niemanden davon überzeugen, dass es über Java, C ++, C #, Python, Ruby usw. verwendet werden sollte.

Justin Standard
quelle
@ Justin: Es ist wahrscheinlich erwähnenswert, dass der Emacs-Kern in C geschrieben ist. Aber das ist nur ein Trottel - alle Befehle sind in elisp geschrieben.
Bernard
3
oder besser gesagt - die Kernsyntax von Common Lisp ist einfach. Mit defmacro kann die Syntax erweitert werden, und einige der integrierten Makros (z. B. defmacro) können unglaublich kompliziert werden. Lambda-Listen, verschachtelte Backquotes usw.
Aaron
Es ist fast fair zu sagen, dass der C-Teil von emacs Klebercode ist.
Luka Ramishvili
Im Emacs-Referenzhandbuch heißt es: "Die meisten Bearbeitungsbefehle in Emacs sind in Lisp geschrieben. Die wenigen Ausnahmen könnten in Lisp geschrieben worden sein, verwenden Sie jedoch aus Effizienzgründen C." gnu.org/software/emacs/manual/html_mono/emacs.html#Intro
dpritch
25

Ich kann nicht aus erster Hand beantworten , aber Sie sollten lesen , was Paul Graham schrieb auf Lisp . Was den Teil "Killer-App" betrifft, lesen Sie Beating the Average .

Christian Lescuyer
quelle
2
+1. In dieser Antwort sollte erwähnt werden, dass Yahoo Stores, die erste Web-App, teilweise in lisp geschrieben wurde. Wikipedia zitieren: 1998 hat Yahoo! Inc. kaufte Viaweb für 455.000 Aktien von Yahoo! Aktien im Wert von rund 49 Millionen US-Dollar und umbenannt in Yahoo! Geschäft.
Steven Lu
17

Ich habe ungefähr ein Jahr lang professionell in Lisp programmiert und es lohnt sich auf jeden Fall zu lernen. Sie haben eine beispiellose Möglichkeit, Redundanz aus Ihrem Code zu entfernen, indem Sie den gesamten Code auf der Kesselplatte nach Möglichkeit durch Funktionen und Makros nach Möglichkeit ersetzen können. Sie können auch zur Laufzeit auf beispiellose Flexibilität zugreifen und frei zwischen Code und Daten übersetzen. In Situationen, in denen Benutzeraktionen die Notwendigkeit auslösen können, komplexe Strukturen dynamisch aufzubauen, strahlt Lisp wirklich. Beliebte Flugplaner von Fluggesellschaften sind in Lisp geschrieben, und es gibt auch viele CAD / CAM in Lisp.

John mit Waffel
quelle
9

Wenn Sie gerne programmieren, sollten Sie Lisp aus purer Freude lernen. XKCD drückt die daraus resultierende intellektuelle Erleuchtung perfekt aus. Lisp zu lernen ist für den Programmierer, was Meditation für den buddhistischen Mönch ist (und ich meinte dies ohne blasphemische Konnotation).

Konrad Rudolph
quelle
9

Lisp ist sehr nützlich, um kleine DSLs zu erstellen. Ich habe eine Kopie von Lisp in a Box, die bei der Arbeit ausgeführt wird, und ich habe kleine DSLs geschrieben, um SQL Server-Datenbanken abzufragen und Datenebenen usw. in C # zu generieren. Mein gesamter Code für die Kesselplatte ist jetzt in Lisp-Makros geschrieben, die an C # ausgegeben werden. Ich generiere damit HTML, XML und alles Mögliche. Ich wünschte, ich könnte Lisp für die tägliche Codierung verwenden, aber Lisp kann praktische Vorteile bringen.

Phil Bennett
quelle
Ich benutze dafür dotlisp.sourceforge.net/dotlisp.htm .
Mark Hurd
5

Jede Sprache sieht viel schwieriger aus, wenn man nicht die üblichen Einrückungskonventionen einer Sprache verwendet. Wenn man ihnen von Lisp folgt, sieht man ziemlich leicht, wie es eine Syntaxbaumstruktur ausdrückt (beachten Sie, dass dies nicht ganz richtig ist, da die Vorschau ein wenig liegt; die Rs sollten mit den fns im rekursiven Quicksort-Argument übereinstimmen):

(defun quicksort (lis) 
  (if (null lis) 
      nil
      (let* ((x (car lis)) 
             (r (cdr lis)) 
             (fn (lambda (a) 
                   (< a x))))
         (append (quicksort (remove-if-not fn 
                                           r)) 
                 (list x)
                 (quicksort (remove-if fn 
                                       r))))))
John mit Waffel
quelle
1
Ich denke, was Sie sagen, ist fair kritisiert. Ich möchte nur sagen: "Es sieht viel schwieriger aus, als Sie es präsentiert haben, und sieht viel klarer aus, als es hier präsentiert wird." Ich denke, Sie müssten zustimmen, dass viele Sprachen viel verwirrender aussehen, wenn ihre Einrückungskonventionen nicht befolgt werden. Wenn wir die Einrückung von beispielsweise Java und Lisp vergleichen, würde ich sagen, dass sie im Allgemeinen ungefähr den gleichen Kenntnisstand der Grundkonstrukte jeder Sprache erfordern, um sie korrekt einzurücken. Aber es ist fair, wenn auch völlig subjektiv zu sagen, dass es immer noch schwer aussieht.
John mit Waffel
1
Um es ein bisschen einfacher zu machen, können Sie den Standard verwenden letund ein defunam Anfang der Funktion verwenden, um zu definieren, fnda es sich nicht ändert.
Aaron Robson
4
@FerretallicA Auf welcher Grundlage bestimmen Sie, ob etwas „leicht lesbar“ oder „selbstbeschreibend“ ist? Ähnlichkeit mit Englisch? Ist Chinesisch „leicht lesbar“? Was ist mit mathematischer Notation? Ist es "nicht leicht lesbar"? Diese Art von Argument ist ärgerlich, weil die verborgene Botschaft lautet: "Das sieht nicht so aus, wie ich es zuerst gelernt habe, zu argumentieren."
3
Eher wie Ihre "Widerlegung" klingt wie "Whinge Whinge". Probieren Sie den Programmiersprachen-Sniff-Test aus. Nehmen Sie jemanden, der noch nicht programmiert hat, und zeigen Sie ihm eine Seite mit VB-Code und eine Seite mit Lisp-Code. Ich wette gerne mit meiner linken Nuss, auf welche der beiden der zufällige Beobachter leichter aussagekräftige Beobachtungen ziehen kann.
Nathanchere
1
Ich frage mich, was ein chinesischer, japanischer, koreanischer, sumerischer, hindiistischer oder arabischer Nicht-Programmierer von Ihrem eher dreisten Wunsch halten würde, Ihren Hoden für ein einfaches Argument aufzugeben.
4

Ich fand heraus, dass das Erlernen einer neuen Sprache immer Ihren Programmierstil in Sprachen beeinflusst, die Sie bereits kennen. Für mich hat es mich immer dazu gebracht, auf unterschiedliche Weise zu denken, um ein Problem in meiner Primärsprache, Java, zu lösen. Ich denke im Allgemeinen, es erweitert nur Ihren Horizont in Bezug auf die Programmierung.

Dlinsin
quelle
Es ist, weil Sie ein guter Programmierer sind. Anstatt alte Fähigkeiten mit neuen Kenntnissen zu beeinflussen, denken schlechte Programmierer in bereits bekannten Sprachen, während sie in neuen schreiben. Aber warum verwenden Sie Java nach lisp? :) Java ist nach Lisp am schwierigsten zu benutzen, imo.
Luka Ramishvili
4

Wenn Sie sich fragen müssen, ob Sie Lispeln lernen sollen, müssen Sie das wahrscheinlich nicht.

Fremder
quelle
8
Ich würde das Gegenteil sagen: Wenn Sie Lisp bereits verstehen, weil Sie Erfahrung mit einer ähnlichen Sprache haben, ist dies wahrscheinlich nicht erforderlich. Wenn Sie nicht verstehen, was Lisp zu bieten hat, können Sie von der Belichtung profitieren.
Herr Fooz
@ MrFooz Es gibt keine ähnlichen Sprachen, die das Erlernen des lispy-Teils von lisp überflüssig machen können. Die Hauptmerkmale von lisp sind in keiner Sprache zu finden. Obwohl die meisten sind.
Luka Ramishvili
Abhängig von Ihren Zielen. Wenn du sterben willst, musst du nicht atmen. Das heißt aber nicht, dass Sie es nicht sollten.
Mimoralea
4

Ich habe in den achtziger Jahren eine "Lisp-Klasse" am College besucht. Trotz aller Konzepte, die in der Klasse vorgestellt wurden, blieb mir nichts übrig Wertschätzung für das, was Lisp großartig macht. Ich befürchte, dass viele Leute Lisp als eine andere Programmiersprache betrachten, was dieser College-Kurs vor so vielen Jahren für mich getan hat. Wenn Sie jemanden sehen, der sich über die Lisp-Syntax (oder deren Fehlen) beschwert, besteht eine gute Chance, dass er zu den Menschen gehört, die die Größe von Lisp nicht verstanden haben. Ich war sehr lange einer dieser Leute.

Erst zwei Jahrzehnte später, als ich mein Interesse an Lisp wieder entfachte, begann ich zu "verstehen", was Lisp interessant macht - für mich jedenfalls. Wenn Sie es schaffen, Lisp zu lernen, ohne von Verschlüssen und Lisp-Makros überwältigt zu werden, haben Sie wahrscheinlich den Punkt verfehlt.

fdesmet
quelle
Ich stimme dem zu. Ich bin gerade auf meinem zweiten Ausflug nach Lisp, 5 Jahre nach der Schule. Ein Begriff von Lisp, wenn Sie noch grün sind, hat möglicherweise keine ausreichende Wirkung - ich erinnere mich, dass ich mich nur auf die Metaprogrammierung konzentriert habe und die Metaprogrammierung und Flexibilität noch nicht zu schätzen wusste.
Aaron
4

Das Erlernen von LISP / Schema bietet Ihnen möglicherweise keinen größeren Anwendungsbereich, hilft Ihnen jedoch dabei, die funktionale Programmierung, ihre Regeln und Ausnahmen besser zu verstehen.

Es lohnt sich, Zeit zu investieren, um den Unterschied in der Schönheit von sechs verschachtelten reinen Funktionen und dem Albtraum von sechs verschachtelten Funktionen mit Nebenwirkungen zu lernen.

JT Hurley
quelle
4

Von http://www.gigamonkeys.com/book/introduction-why-lisp.html

Einer der am häufigsten wiederholten Mythen über Lisp ist, dass es "tot" ist. Obwohl Common Lisp nicht so häufig verwendet wird wie beispielsweise Visual Basic oder Java, erscheint es seltsam, eine Sprache zu beschreiben, die weiterhin für Neuentwicklungen verwendet wird und die weiterhin neue Benutzer als "tot" anzieht. Zu den jüngsten Erfolgsgeschichten von Lisp gehören Paul Grahams Viaweb, das zum Yahoo Store wurde, als Yahoo sein Unternehmen kaufte. Das Flugpreis- und Einkaufssystem QPX von ITA Software, das vom Online-Ticketverkäufer Orbitz und anderen verwendet wird; Naughty Dogs Spiel für die PlayStation 2, Jak und Daxter, das größtenteils in einem domänenspezifischen Lisp-Dialekt geschrieben ist, den Naughty Dog namens GOAL erfunden hat und dessen Compiler selbst in Common Lisp geschrieben ist; und der Roomba, der autonome Roboterstaubsauger, dessen Software in L geschrieben ist, einer abwärtskompatiblen Teilmenge von Common Lisp. Noch aussagekräftiger ist vielleicht das Wachstum der Common-Lisp.net-Website, auf der Open-Source-Common-Lisp-Projekte gehostet werden, und die Anzahl der lokalen Lisp-Benutzergruppen, die in den letzten Jahren entstanden sind.

krdluzni
quelle
4

"Lisp ist es wert, für die tiefgreifende Erleuchtungserfahrung gelernt zu werden, die Sie haben werden, wenn Sie es endlich bekommen. Diese Erfahrung wird Sie für den Rest Ihrer Tage zu einem besseren Programmierer machen, selbst wenn Sie Lisp selbst nie wirklich oft verwenden."

- Eric S. Raymond, "Wie man ein Hacker wird"

http://www.paulgraham.com/avg.html

eric.christensen
quelle
3

Ich bin damit einverstanden, dass Lisp eine dieser Sprachen ist, die Sie in einem kommerziellen Umfeld möglicherweise nie verwenden. Aber selbst wenn Sie nicht dazu kommen, wird das Lernen Ihr Verständnis der Programmierung als Ganzes definitiv erweitern. Zum Beispiel habe ich Prolog im College gelernt und obwohl ich es nie wieder benutzt habe, habe ich mir ein besseres Verständnis für viele Programmierkonzepte und (manchmal) eine größere Wertschätzung für die Sprachen gegeben, die ich benutze.

Aber wenn Sie es lernen wollen ... lesen Sie auf jeden Fall On Lisp

Adam Haile
quelle
Kleiner Hinweis: Auf Lisp ist keine geeignete Einführung in Lisp, lesen Sie zuerst etwas anderes. Ich empfehle Practical Common Lisp.
Luís Oliveira
3

Wenn Sie Lisp lernen, wird Javascript in ein völlig anderes Licht gerückt! Lisp zwingt Sie wirklich dazu, sowohl die Rekursion als auch das gesamte Paradigma "Funktionen als erstklassige Objekte" zu erfassen. Siehe Crockfords ausgezeichneten Artikel über Scheme vs Javascript . Javascript ist heute vielleicht die wichtigste Sprache, daher ist es immens nützlich, es besser zu verstehen!

Erlend Halvorsen
quelle
1
Die wichtigste Sprache? Ich denke nicht, Sir.
TraumaPony
7
Nun, es ist auf so ziemlich jedem Gerät verfügbar, das über einen Webbrowser verfügt (und wahrscheinlich auch auf einigen, die dies nicht tun). Was die Sprachen zum Ausführen von Endbenutzeranwendungen angeht, hat es wahrscheinlich die höchste Verbreitung aller Programmiersprachen auf dem Planeten . Natürlich könnten Sie eine ganz andere Meinung darüber haben, was wichtig ist. Wird es verwendet, um Krebs zu heilen? Wahrscheinlich nicht. Aber ob es Ihnen gefällt oder nicht, es wird in den kommenden Jahren einer der Eckpfeiler der (Web-) Anwendungsentwicklung sein.
Erlend Halvorsen
1
Ich bin den gleichen Weg gegangen! Obwohl ich bereits die Funktions- und Prototyping-Funktionen von Javascript verwendet habe, war Javascript nach dem Erlernen von Lisp dennoch eine neue Sprache für mich.
Luka Ramishvili
3

Gimps Script-Fu ist lippenhaft. Das ist eine Photoshop-Killer-App.

Peter Turner
quelle
3

Okay, ich mag komisch sein, aber ich mag Paul Grahams Essays wirklich nicht so sehr & on Lisp ist ein wirklich raues Buch, wenn Sie Common Lisp noch nicht verstehen. Stattdessen würde ich Siebel's Practical Common Lisp wählen . Was "Killer-Apps" betrifft, scheint Common Lisp seinen Platz in Nischengeschäften wie ITA zu finden. Obwohl es keine App gibt, die für CL so synonym ist wie Rails für Ruby, gibt es in der Industrie Orte, die sie verwenden, wenn Sie dies tun ein wenig graben.

C Hogg
quelle
2

Komplizierte Syntax? Das Schöne an Lisp ist, dass es eine lächerlich einfache Syntax hat. Es ist nur eine Liste, in der jedes Element der Liste entweder eine andere Liste oder ein elementarer Datentyp sein kann.

Es lohnt sich zu lernen, da es Ihre Codierungsfähigkeit verbessert, Funktionen als nur einen anderen Datentyp zu betrachten und zu verwenden. Dies verbessert die Art und Weise, wie Sie in einer imperativen und / oder objektorientierten Sprache codieren, da Sie dadurch mental flexibler mit der Struktur Ihres Codes umgehen können.

Antonio Haley
quelle
2

So ergänzen Sie die anderen Antworten:

Weil der SICP- Kurs (die Videos sind hier verfügbar ) großartig ist: Er bringt dir Lisp und vieles mehr bei !

OysterD
quelle
2

Killer App? Franz Inc. hat eine lange Liste von Erfolgsgeschichten , aber diese Liste enthält nur Benutzer von AllegroCL ... Es gibt wahrscheinlich andere. Mein Favorit ist die Geschichte über Naughty Dog , da ich ein großer Fan der Crash Bandicoot-Spiele war.

Zum Erlernen von Common Lisp würde ich Practical Common Lisp empfehlen . Es hat einen praktischen Ansatz, der es zumindest für mich einfacher gemacht hat als andere Bücher, die ich mir angesehen habe.

Vetle
quelle
2

Sie können Clojure heute verwenden, um Tests und Skripte auf die Java-VM zu schreiben. Während in der JVM andere Lisp-Sprachen implementiert sind, kann Clojure meiner Meinung nach am besten in Java integrieren.

Es gibt Zeiten, in denen die Java-Sprache selbst das Schreiben von Tests für Java-Code behindert (einschließlich "traditioneller kommerzieller Programmierung"). (Ich meine das nicht als Anklage gegen Java - andere Sprachen leiden unter dem gleichen Problem -, aber es ist eine Tatsache. Da das Thema nicht Java ist, werde ich nicht näher darauf eingehen. Sie können gerne ein neues Thema beginnen, wenn jemand möchte darüber diskutieren.) Clojure beseitigt viele dieser Hindernisse.

Bill Smith
quelle
2

Lisp kann überall dort verwendet werden, wo Sie herkömmliche Programmierung verwenden. Es ist nicht so anders, es ist nur mächtiger. Eine Web-App schreiben? Sie können es auf Lisp tun und eine Desktop-Anwendung schreiben? Sie können es auf Lisp tun, was auch immer, Sie können es wahrscheinlich auf Lisp, Python oder einer anderen generischen Programmierung tun (es gibt einige Sprachen, die nur für eine Aufgabe geeignet sind).

Das größte Hindernis wird wahrscheinlich die Akzeptanz Ihres Chefs, Ihrer Kollegen oder Ihrer Kunden sein. Das ist etwas, mit dem Sie arbeiten müssen. Die Wahl einer pragmatischen Lösung wie Clojure , die die aktuelle Installationsbasis der Java-Infrastruktur von der JVM bis zu den Bibliotheken nutzen kann, könnte Ihnen helfen. Wenn Sie ein Java-Programm haben, können Sie auch eine Plug-In-Architektur erstellen und Clojure-Plug-Ins dafür schreiben und am Ende die Hälfte Ihres Codes in Clojure schreiben.

Pablo
quelle
1

Kein Grund, aber (trivial) AutoCAD bietet LISP- und DCL-Laufzeitunterstützung. Es ist eine bequeme Möglichkeit, komplexe Makros (einschließlich ActiveX-Automatisierung) zu schreiben, wenn Sie VBA oder deren C ++ - oder .NET-SDKs nicht verwenden möchten oder wenn ein DIESEL-Ausdruck sie nicht schneidet.

Viele Funktionen von AutoCAD sind LISP-Routinen.

CAD-Typ
quelle
1

Dies ist ein Thema, über das ich selbst eine Weile nachgedacht habe, aber ich bin nicht wirklich zu einer Entscheidung gekommen, da die übliche Zeit das Hauptproblem ist ...;)

Und da ich diese Links in diesem Beitrag nicht finden kann, füge ich sie für das öffentliche Interesse hinzu:

Erfolgs- und Misserfolgsgeschichte: Lisping bei JPL

Wirklich beeindruckende Erfolgsgeschichte: Lisp im Einsatz bei der Orbitz Corporation

Vergleich und Analyse, ob Lisp anstelle von Java verwendet werden soll: Lisp als Alternative zu Java

PPS
quelle
0

Syntax ist irrelevant, Lesbarkeit nicht!

Kokos
quelle
0

Killer App? Die Flugsuchmaschine von ITA Software ist eine.

Was das "Warum" betrifft, wird es Sie höchstwahrscheinlich zu einem besseren Entwickler machen und es ist äußerst unwahrscheinlich, dass Sie zu einem schlechteren Entwickler werden. Es kann jedoch dazu führen, dass Sie Lisp-Dialekte anderen Sprachen vorziehen.

Vatine
quelle