2008-08-22 9 views
54

Ich mag es, Sprachen außerhalb meiner Komfortzone zu lernen, aber es fiel mir schwer, einen Platz für funktionale Sprachen zu finden. Ich habe eine Menge guter Dinge über Structure and Interpretations of Computer Programs gehört, aber als ich vor ein paar Jahren versuchte, es durchzulesen, schien es mir einfach über den Kopf zu gehen. Ich tue mit Büchern viel besser als Websites, aber wenn ich den örtlichen Buchladen besuche, sehen die Bücher auf LISP irgendwie gruselig aus.Was ist ein guter Anfangstext zur funktionalen Programmierung?

Also, was ist ein guter Ausgangspunkt? Mein Ziel ist es, eine funktionale Programmiersprache zu verwenden, um einfache Probleme in etwa 6 Monaten zu lösen und die Fähigkeit, zu fortgeschritteneren Themen zu wechseln, zu erkennen, wann eine funktionale Sprache das richtige Werkzeug für den Job ist, und die Sprache zu verwenden löse mehr Probleme im Laufe von 2-3 Jahren. Ich mag Bücher, die schwer Beispiele sind, aber auch Herausforderungen beinhalten, die man durcharbeiten kann. Gibt es so etwas für funktionale Sprachen?

+10

Ihre lokale Buchhandlung hat tatsächlich Bücher über Lisp? –

+1

ein Computerbuchladen ich letzte Woche besucht hatte 'Land of Lisp', 'Practical Common Lisp' und 'SICP'. .. –

Antwort

4

Ich fand The Little Schemer eine großartige, großartige Einführung in die funktionale Programmierung. Es basiert vollständig auf einfachen, mundgerechten Beispielen, auf denen im Laufe des Buches aufgebaut wird.

2

Haskell ist eine sehr gute funktionale Programmiersprache für Anfänger. Jemand hat nach guten Ressourcen für Haskell gefragt, also werde ich Sie auf there hinweisen.

Wenn Sie ein gutes Buch über Funktionale Programmierung suchen, würde ich "Funktionale Programmierung: Praxis und Theorie" von Bruce J. Maclennan empfehlen.
Es ist jedoch erforderlich, dass Sie Ihre Set-Theorie und Logik auffrischen, bevor Sie sie lesen. Es enthält Beispiele in LISP, Haskell und anderen Sprachen.

1

Wenn Sie Erfahrung mit .NET haben, ist Expert #F gut.

F # ist von OCaml abgeleitet. Lisp ist reiner als funktionale Sprachen gehen.

+2

Ich glaube nicht, dass ich c Onsider Lisp als reiner als OCaml. Die meisten Lisps tun nichts, um Sie vor Mutationen zu schützen. OCaml andererseits macht es unmöglich, Variablen zu mutieren, wenn Sie sie nicht als veränderlich deklarieren. – apg

15

SICP ist ein großartiges Buch.

Dies ist wahrscheinlich meine Voreingenommenheit, aber ich dachte, ocaml war ziemlich leicht zu bekommen. Sie haben die Möglichkeit, in ein paar verschiedenen Stilen zu programmieren, bis Sie sich vollkommen wohl fühlen. I posted a bunch of links zu Haskell und Ocaml Referenzen, die sind Bücher, mit Beispielen und so, die scheinen genau auf Ihrer Gasse.

Wenn Sie Lisp bevorzugen, können Sie an die Macht versuchen, durch die 99-problems in Lisp (die Sie in jeder Sprache zu tun, wirklich), oder Sie können die lectures von den Menschen zu beobachten, die SICP schrieb.

Weiter unten auf der Straße, greifen Sie auf "Purely Functional Data Structures", wie es in die harte Kerntiefe Design und Überlegungen, die Sie in funktionalen Sprachen berücksichtigen müssen - es verwendet ML (die ocaml abgeleitet von).

+0

Ich lese jetzt SICP, aber ich bin mir nicht sicher, wovon du redest: "Lagrange"? In meiner Taschenbuchkopie des 2. Ed ist der einzige Hinweis auf Lagrange im Index diese Fußnote zur Lagrange-Interpolation: http://www-mitpress.mit.edu/sicp/full-text/book/book-Z-H-18.html # footnote_Temp_299 – spacemanaki

+0

Das Teile bezieht sich auf SICM (Struktur und Interpretation der klassischen Mechanik), mein Fehler. – nlucaroni

0

Ich habe gute Dinge über Haskell Functional Programming gehört, aber ich fand auch diese list von funktionalen Programmierbüchern bei Amazon, die für Sie hilfreich sein könnten.

5

Ich mag Thompsons "Haskell: The Craft of Functional Programming" wirklich, weil es gut geschrieben ist und Haskell einen leichteren Start ermöglicht als andere funktionale Sprachen, während es völlig rein ist (anders als Lisp oder Scheme).

+0

+1, Das Buch hat auch eine Menge ausgezeichneter Übungen, da es hauptsächlich als ein Lehrbuch geschrieben ist. Die Erklärungen und Erzählungen machen das Buch auch zu einer guten Wahl. –

5

Da es eine Reihe von verschiedenen funktionalen Programmiersprachen gibt, ist es schwer, Bücher zu empfehlen. Aber wenn Sie an Common Lisp interessiert sind, habe ich kürzlich gelesen "Practical Common Lisp" von Peter Seibel, die Sie check out online for free bevor Sie Ihre hart verdientes Geld darauf fallen lassen. Es ist eine ziemlich sanfte Einführung in CL, mit großartigen Erklärungen und vielen Beispielen. Seibel ist ein großartiger Schriftsteller (Beispiel: lesen Sie the story of Mac,) er ist gut darin, Sie beschäftigt zu halten, das ist wirklich, wo SICP fällt, denke ich. Es ist einfach so trocken! Aber während "Practical Common Lisp" ziemlich umfangreich ist, hat es nicht wirklich Probleme, sich durchzusetzen, obwohl die Beispiele hauptsächlich darauf ausgelegt sind, dass Sie weiter arbeiten und auf ihnen aufbauen können.

Ein weiteres gutes Buch, dieses Schema-orientierte: How to Design Programs. (Online) Ich hatte nicht so viel Zeit mit diesem Buch, da ich selbst mehr Lisper als ein Schemer bin, aber es ist gut geschrieben, hat gute Erklärungen und Beispiele und hat viele Übungen zu bearbeiten. Es scheint ziemlich populär in der Scheme Menge.

4

Ich lernte von Jeffrey Ullman Elemente von ML Programmierung, die ziemlich gut ist. Es verliert Punkte, wenn es um Standard ML geht, wenn OCaml, F # und Haskell (scheinbar) beliebter sind.

11

ich empfehlen "On Lisp" von Paul Graham wirklich.

Es ist prägnant und sehr lesbar auch für Anfänger in der funktionalen Programmierung (wie ich war, als ich es gelesen habe). Es enthält eine Menge sehr kurzer Beispiele, die jeweils dazu beitragen, eine einzige Sache zu verstehen.

Ich dachte oft, dieses Buch zu lesen: das ist genau die Sprache, die genau die Funktionen enthält, die ich jemals in anderen (nicht funktionalen) Sprachen wollte, aber nie bekommen habe. :-( Und das ist genau das Buch, es zu lernen, immer verständlich, manchmal sogar lustig!

Sie es bei the author's site kostenlos bekommen können!