Warum sollte ich Lisp lernen?
Ich wirklich das Gefühl, dass ich lernen sollte, Lisp und es gibt viele gute Ressourcen gibt, um mir zu helfen, es zu tun.
Ich bin nicht abgeschreckt von der komplizierten syntax, aber wo in der "klassischen kommerziellen Programmierung" würde ich finden, stellen würde es Sinn machen, verwenden Sie es anstelle von einer prozeduralen Sprache.
Ist es eine kommerzielle killer-app gibt, ist geschrieben worden in Lisp ?
InformationsquelleAutor der Frage |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer der wichtigsten Verwendungen für Lisp ist in der Künstlichen Intelligenz. Ein Freund von mir auf dem college nahm ein Absolvent AI Kurs und für seine wichtigste Projekt, über das er schrieb eine "Licht Aus" solver in Lisp. Mehrere Versionen von seinem Programm verwendet leicht unterschiedliche KI-Routinen und Tests auf 40 oder so in den Computer brachte einige Recht hübsche Ergebnisse (ich wünschte, es online war irgendwo für mich zu verlinken, aber ich glaube nicht, dass es ist).
Zwei Semestern habe ich verwendet Scheme (eine Sprache, die basierend auf Lisp) schreiben Sie ein interaktives Programm, das simuliert Abbott und Costello ' s "Who' s on First" - routine. Eingaben vom Benutzer zugeordnet wurde, gegen einige ziemlich komplizierte Datenstrukturen (ähnlich Karten in anderen Sprachen, aber viel flexibler), um zu bestimmen, was eine angemessene Reaktion wäre. Ich schrieb auch eine routine zum lösen eines 3x3 slide puzzle (ein Algorithmus und kann leicht erweitert werden, um größere Schiebepuzzles).
In der Zusammenfassung, lernen Lisp (oder Scheme) erbringen dürfen viele praktische Anwendungen jenseits von AI, aber es ist eine extrem wertvolle Erfahrung, so viele andere gesagt haben. Programmierung in einer funktionalen Sprache wie Lisp wird auch Ihnen helfen, denken Sie rekursiv (falls Sie Schwierigkeiten haben, mit Rekursion in anderen Sprachen, dies könnte eine große Hilfe).
InformationsquelleAutor der Antwort
Lisp ist eine große und komplexe Sprache mit einer großen und komplexen Laufzeitumgebung zu unterstützen. Aus diesem Grund, Lisp, ist am besten geeignet, um große und komplizierte Probleme.
Nun, ein komplexe problem ist nicht das gleiche wie ein kompliziert. Ein komplexe problem ist eines mit vielen kleinen details, aber das ist nicht schwer. Schreiben eine Fluggesellschaft Buchung system ist eine komplexe Aufgabe, aber mit genug Geld und Programmierer ist es nicht schwer. Holen Sie sich die Differenz?
Ein kompliziertes problem ist eines, das gewundene, ein, wo die traditionelle und herrsche " funktioniert nicht. Steuerung eines Roboters, oder arbeiten mit Daten, die nicht tabellarischer (Sprachen, zum Beispiel), oder hoch dynamischen Situationen.
Lisp ist wirklich gut geeignet, um Probleme, wo die Lösung muss erweiterbar sein; das klassische Beispiel ist der emacs Texteditor. Es ist voll programmierbar und somit eine Programmierumgebung in es ist eigenen Recht.
In seinem berühmten Buch PAIPNorvig sagt, dass Lisp ist ideal für explorative Programmierung. Das heißt, die Programmierung einer Lösung für ein problem nicht vollständig verstanden (im Gegensatz zu einer on-line-Reservierungssystem). In anderen Worten: Komplizierte Probleme.
Darüber hinaus lernen Lisp wird Sie daran erinnern, von etwas, das grundlegend ist, dass vergessen wurde: Der Unterschied zwischen Von Neumann und Turing. Wie wir wissen, Turing-Modell der Berechnung ist ein Interessantes theoretisches Modell, aber unbrauchbar als Modell für die Gestaltung von Computern. Von Neumann, auf der anderen Seite, ein Modell der Funktionsweise von Computern und Berechnungen wurden ausgeführt: Die Von-Neumann-Modell.
Im Mittelpunkt der Von-Neumann-Modell ist, dass haben Sie aber einen Speicher, und speichern Sie Ihren code und Ihre Daten dort. Beachten Sie sorgfältig, dass ein Java-Programm (oder C#, oder was auch immer Sie mögen), ist eine manifestation der Turing-Modell. Sie setzen Ihr Programm in Beton, ein für alle mal. Dann sind Sie hoffen, Sie können sich mit allen Daten die dann drauf geworfen.
Lisp hält die Von-Neuman-Modell; es gibt keine scharfen, vordefinierte Grenze zwischen code und Daten. Programmierung in Lisp öffnet Ihren Geist, um die Kraft des Von-Neumann-Modell. Programmierung in Lisp macht Sie sehen alte Konzepte in neuem Licht.
Schließlich interactive erfahren Sie, wie Sie die Interaktion mit Ihren Programmen, wie Sie entwickeln Sie (im Gegensatz zum kompilieren und ausführen). Dies ist auch die Art und Weise ändern Sie das Programm, und die Art und Weise der Anzeige-Programmierung.
Mit diesem intro kann ich schließlich bieten Sie eine Antwort auf Ihre Frage: "Wirst du Orte finden, wo es überstrahlt "traditionellen" Sprachen?
Wenn Sie ein erfahrener Programmierer sind, benötigen Sie ausgereifte Werkzeuge. Und es ist kein Werkzeug mehr Fortgeschritten als Lisp.
Oder, in anderen Worten: Die Antwort ist ja, wenn Ihr Probleme schwer. Keine sonst.
InformationsquelleAutor der Antwort
In Reaktion auf @lassevk:
InformationsquelleAutor der Antwort
komplizierte syntax??
Die syntax von lisp ist unglaublich einfach.
Killer-app, geschrieben in lisp: emacs. Lisp wird, ermöglichen Ihnen die Erweiterung von emacs wird zu fast alles, was Sie sich vorstellen können, dass ein editor machen könnte.
AberSie sollten nur lernen, lisp, wenn Sie wollenund Sie vielleicht nie verwenden auf der Arbeit immer, aber es ist immer noch genial.
Außerdem möchte ich noch hinzufügen: selbst, wenn Sie Orte finden, an denen lisp Sinn machen wird, werden Sie wahrscheinlich nicht überzeugen, jemand anderes, die es verwendet werden soll, über java, c++, c#, python, ruby, etc.
InformationsquelleAutor der Antwort
Kann ich nicht beantworten, aus Erster hand erfahren, aber Sie sollten Lesen, was Paul Graham schrieb auf Lisp. Wie für die "killer-app" - Teil, Lesen Schlagen Sie die Durchschnittswerte.
InformationsquelleAutor der Antwort
Ich in Lisp programmiert Professionell für etwa ein Jahr, und es lohnt sich definitiv lernen. Sie haben die einmalige Gelegenheit bietet, zu entfernen Redundanz von code, indem Sie in der Lage, Sie zu ersetzen alle boilerplate-code mit Funktionen wo möglich, Makros und wo nicht. Sie werden auch in der Lage sein, Zugriff auf eine beispiellose Flexibilität bei der Laufzeit, die übersetzung frei zwischen code und Daten. Also Situationen, in denen Benutzer Aktionen auslösen kann, die Notwendigkeit zum Aufbau komplexer Strukturen, die dynamisch ist, wo Lisp wirklich glänzt. Beliebte airline flight Planer geschrieben in Lisp, und es gibt auch eine Menge von CAD/CAM in Lisp.
InformationsquelleAutor der Antwort
Wenn Sie wie die Programmierung sollten Sie lernen, Lisp für die Reine Freude an der Sache. XKCD perfekt drückt die geistige Erleuchtung, die nachfolgt. Lernen Lisp ist für die Programmierer, was meditation ist für den Buddhistischen Mönch (und ich meinte das ohne irgendeine beleidigende Konnotation).
InformationsquelleAutor der Antwort
Lisp ist sehr nützlich für die Erstellung von kleinen DSLs. Ich habe eine Kopie von Lisp in einer Box laufen bei der Arbeit und ich habe wenig geschrieben DSLs zu befragen SQL server-Datenbanken und-Daten generieren, Ebenen etc. in C#. Alle meine boiler plate code ist geschrieben in lisp-Makros, die Ausgabe auf C#. Ich Generiere HTML -, XML -, alle möglichen Dinge mit ihm. Während ich wünschte, ich könnte mit Lisp für den täglichen coding, Lisp kann praktische Vorteile bringen.
InformationsquelleAutor der Antwort
Jede Sprache sieht viel schwieriger, wenn man nicht den gemeinsamen Einzug Konventionen einer Sprache. Wenn man Ihnen folgt, werden Lisp, sieht man, wie drückt es ein syntax-Baum Struktur sehr leicht (beachten Sie, dies ist nicht ganz richtig, da die Vorschau liegt ein wenig; die r ' s ausrichten soll mit der fns in das rekursive quicksort-argument):
InformationsquelleAutor der Antwort
Fand ich, dass das erlernen einer neuen Sprache, wirkt immer auch auf Ihren Programmierstil in Sprachen, die Sie bereits kennen. Für mich ist es immer machte mich denken in verschiedenen Möglichkeiten, um ein problem zu lösen in meine primäre Sprache ist Java. Ich denke im Allgemeinen, es nur erweitert Ihren Horizont im Begriff der Programmierung.
InformationsquelleAutor der Antwort
Nahm ich ein "lisp-Klasse" in college zurück in den achtziger Jahren. Trotz grokking alle der vorgestellten Konzepte in der Klasse, ich war Links, ohne alle Wertschätzung für das, was macht lisp toll. Ich fürchte, dass eine Menge Leute look bei lisp als nur eine weitere Programmiersprache, die ist, was dieser Kurs in der Universität haben für mich vor so vielen Jahren. Wenn Sie jemanden sehen, beschweren sich über die lisp-syntax (oder deren fehlen), es gibt eine gute chance, dass Sie einer jener Menschen, die hat nicht zu begreifen lisp ist die Größe. Ich war einer jener Menschen, für eine sehr lange Zeit.
Erst zwei Jahrzehnte später, als ich neu entfacht mein Interesse an lisp ist, dass ich begann zu "bekommen" was macht lisp interessant-für mich jedenfalls. Wenn du es schaffst zu lernen, lisp, ohne dass Ihr Verstand geblasen von closures und lisp-Makros, hast du wohl den Punkt verpasst.
InformationsquelleAutor der Antwort
Lernen LISP/Scheme kann Ihnen keine erhöhte Anwendung Raum, aber es wird Ihnen helfen, einen besseren Einblick in die funktionale Programmierung, seine Regeln und seine Ausnahmen.
Ist es Wert die Zeit-Investition, nur um zu lernen der Unterschied in der Schönheit von sechs verschachtelte Reine Funktionen, und der Alptraum von sechs verschachtelte Funktionen mit Nebenwirkungen.
InformationsquelleAutor der Antwort
Vom http://www.gigamonkeys.com/book/introduction-why-lisp.html
InformationsquelleAutor der Antwort
"Lisp lohnt sich das lernen für die tiefgreifende Erfahrung der Erleuchtung, die Sie haben werden, wenn Sie endlich bekommen; diese Erfahrung werden Sie ein besserer Programmierer für den rest Ihrer Tage, auch wenn man eigentlich nie verwenden Lisp sich viel."
--Eric S. Raymond "How to Become a Hacker"
http://www.paulgraham.com/avg.html
InformationsquelleAutor der Antwort
Ich bin damit einverstanden, dass Lisp ist eine jener Sprachen, die Sie können verwenden Sie niemals in einem kommerziellen Umfeld. Aber auch wenn Sie nicht bekommen, um zu lernen, es wird auf jeden Fall erweitern Sie Ihr Verständnis der Programmierung als ganzes. Ich habe beispielsweise gelernt Prolog, der im college und auch wenn ich nie verwendet es, nachdem ich mir gab, zu einem größeren Verständnis für viele Programmier-Konzepte und (zeitweise) eine größere Wertschätzung für die Sprachen, die ich verwende.
Aber wenn Sie gehen zu lernen it...by alle bedeutet, Lesen Sie Auf Lisp
InformationsquelleAutor der Antwort
Okay, ich könnte komisch sein, aber ich weiß wirklich nicht, wie Paul Graham essays, viel & on Lisp ist echt ein hartes Los buchen, wenn Sie kein Verständnis von Common Lisp schon. Stattdessen würde ich sagen, gehen für Siebel ist Practical Common Lisp. Für "killer-apps", Common Lisp zu finden, scheint seinen Platz in der Nische Geschäfte, wie ITAso, während es ist nicht eine app, gleichbedeutend mit der CL den Weg Rails für Ruby gibt es Orte, in der Industrie zu verwenden, wenn Sie ein wenig Graben.
InformationsquelleAutor der Antwort
Wenn Sie sich selbst Fragen, ob Sie sollten lernen, lisp, werden Sie wahrscheinlich nicht brauchen, um.
InformationsquelleAutor der Antwort
Lernen lisp stellen wird Javascript in einem völlig anderen Licht! Lisp wirklich zwingt Sie zu begreifen, sowohl die Rekursion und die ganzen "Funktionen als first class Objekte"-Paradigma. Sehen Crockfords ausgezeichneten Artikel über Schema vs Javascript. Javascript ist vielleicht die wichtigste Sprache, um heute so zu verstehen, es besser ist ungemein nützlich!
InformationsquelleAutor der Antwort
Gimp Script-Fu ist lipsish. Das ist ein photoshop-killer-app.
InformationsquelleAutor der Antwort
Komplizierte syntax? Die Schönheit von lisp ist, dass es eine lächerlich einfache syntax. Es ist nur eine Liste, wo jedes element der Liste kann entweder eine andere Liste oder ein elementarer Datentyp.
Lohnt es sich zu lernen, weil der Weg, es erhöht Ihre Codierung Fähigkeit zu denken über und verwenden von Funktionen ist nur ein Datentyp. Dies verbessert auf die Art und Weise Sie den code in einer imperativen und/oder objektorientierten Sprache, weil es wird Ihnen erlauben, mehr geistig flexibel mit, wie der code strukturiert ist.
InformationsquelleAutor der Antwort
Hinzufügen zu den anderen Antworten:
Weil die SICP natürlich (die videos sind verfügbar hier) ist genial: lehrt Euch, Lisp und vieles mehr!
InformationsquelleAutor der Antwort
Killer-app? Franz Inc. hat eine lange Liste von Erfolgsgeschichtenaber diese Liste enthält nur die Benutzer von AllegroCL... Es gibt wahrscheinlich noch andere. Mein Favorit ist die Geschichte von Naughty Dogda war ich ein großer fan der Crash Bandicoot Spiele.
Für das lernen Common Lisp, würde ich empfehlen,Practical Common Lisp. Es hat ein hands-on-Ansatz, der zumindest für mich ist es leichter, als andere Bücher habe ich mir angeschaut.
InformationsquelleAutor der Antwort
Könnten Sie Clojure heute zum schreiben von tests und scripts auf der Java VM. Zwar gibt es andere Lisp-Sprachen implementiert, die auf der JVM, ich denke, Clojure nicht den besten job der Integration mit Java.
Gibt es Zeiten, wenn die Java-Sprache selbst in die Quere kommt, das schreiben von tests für Java-code (einschließlich der "klassischen kommerziellen Programmierung"). (Ich meine nicht, dass eine Anklage gegen Java -- andere Sprachen unter dem gleichen problem leiden-aber es ist eine Tatsache. Da das Thema, nicht Java ist, werde ich nicht weiter darauf ein. Bitte fühlen Sie sich frei, um ein neues Thema zu erstellen, wenn jemand will, um zu diskutieren.) Clojure beseitigt viele dieser Hindernisse.
InformationsquelleAutor der Antwort
Lisp überall genutzt werden kann, unter Verwendung herkömmlicher Programmierung. Es ist nicht anders, es ist nur mächtiger. Schreiben Sie eine web-app? man kann es Lisp, schreiben Sie eine desktop-Anwendung? man kann es Lisp, was auch immer, können Sie wahrscheinlich tun es auf Lisp oder Python, oder jede andere generische Programmierung (es gibt ein paar Sprachen, die geeignet sind, die nur eine Aufgabe).
Das größte Hindernis wird wohl die Akzeptanz von Ihrem Chef, Ihren Kollegen oder Ihren Kunden. Das ist etwas, das Sie haben, mit Ihnen zu arbeiten. Die Wahl eines pragmatischen Lösung wie Clojuredie in den Genuss der aktuellen installierten Basis von Java-Infrastruktur, von der JVM an die Bibliotheken, die Ihnen helfen könnten. Auch, wenn Sie ein Java-Programm, können Sie einen plug-in-Architektur und schreiben von Clojure-plugins für es und am Ende schreiben die Hälfte Ihren code in Clojure.
InformationsquelleAutor der Antwort
Nicht ein Grund, aber (trivial) AutoCAD LISP & DCL-runtime-Unterstützung. Es ist ein bequemer Weg, um zu schreiben, komplexe Makros (einschließlich ActiveX-automation), wenn Sie nicht wollen, um mit VBA oder Ihre C++ - oder .NET-SDKs oder wenn ein DIESEL-Ausdruck nicht schneiden Sie es.
Viele AutoCAD-Funktionen sind eigentlich LISP-Routinen.
InformationsquelleAutor der Antwort
Dies ist ein Thema, zu dem ich mich selbst nachgedacht haben für eine Weile, aber ich habe nicht wirklich zu einer Entscheidung kommen, wie gewohnt die Zeit ist das Hauptproblem... 😉
Und seitdem ich kann nicht finden, diese links soweit in diesem Beitrag, ich füge Sie für das öffentliche Interesse:
Erfolg und Misserfolg story:
Lispeln am JPL
Wirklich beeindruckenden Erfolgsgeschichte:
Lisp im Einsatz bei der Orbitz corporation
Vergleich und die Analyse, ob die Lisp-anstelle von Java:
Lisp als Alternative zu Java
InformationsquelleAutor der Antwort
Syntax irrelevant ist, Lesbarkeit ist nicht!
InformationsquelleAutor der Antwort
Nicht sagen, das ist eine killer-app, aber es sieht aus wie es könnte cool sein
http://code.google.com/p/plop/
InformationsquelleAutor der Antwort
Killer-app? Die Flug-Suchmaschine ITA Software ist eine.
Als für das "warum", es wird wahrscheinlich machen Sie eine bessere Entwickler und ist extremnely unwahrscheinlich, dass Sie ein schlimmer. Es kann allerdings sein, machen Sie lieber lisp-Dialekte, andere Sprachen.
InformationsquelleAutor der Antwort