Barrierefreies Buch zur funktionalen Programmierung [geschlossen]


17

Ich bin auf der Suche nach einem Buch, das die funktionale Programmierung auf zugängliche Weise erklärt. Ich würde auch eine vorziehen, die nicht zu langweilig ist und keine esoterische Sprache verwendet.

Idealerweise werden Beispiele verwendet, die Situationen veranschaulichen, in denen die funktionale Programmierung zu eleganteren oder einfacheren Lösungen führt als zwingende Ansätze.

Ich habe ein angemessenes Maß an Programmiererfahrung, aber keine Kenntnisse in funktionaler Programmierung. Vielen Dank für alle Vorschläge


3
Ich bin gespannt, ob es eine bestimmte Sprache gibt, an die Sie gedacht haben, als Sie sagten, dass Sie keine "esoterische Sprache" verwenden möchten.
MatrixFrog

@ MatrixFrog: Ich bin mir zu 99% sicher, dass er mit "esoterischer Sprache" "Schema" meinte. Er war sich wahrscheinlich bewusst, dass die SICP das erste empfohlene Buch sein würde.
user16764

@ user16764 Aber "erreichbar"? Das wäre How To Design Programs (oder die 2. Ausgabe ), basierend auf den Begründungen der Autoren in The Structure and Interpretation of the Computer Science Curriculum .
Mark C

Antworten:



10

Wenn Sie statisch typisierte Sprachen und [Klammern] mögen:

Haskell ist zwar ziemlich auf die Reinheit des Programmierparadigmas bedacht, hat aber eine der besten Einführungen in eine Sprache, die ich bisher in Form von "Learn You a Haskell For Great Good!" Gesehen habe. Das Buchformular ist optional, da die Website kostenlos ist, aber dies ist ein Autor, von dem ich mich überhaupt nicht beeindruckt gefühlt habe. Real World Haskell ist gut, wird aber als Fortsetzung von [Learn..Good] wirklich besser verstanden. RWH ist auch frei mit wahlweise freigestelltem papery Güte.

Von Haskell aus können Sie problemlos auf andere ML-Varianten wie F # oder OCaml umsteigen, die beide häufiger verwendet werden. Für die Blutungsgrenze ATS .

Wenn Sie möchten (und Dynamic_Typing-Klammern):

Schema ist das funktional orientiertere der beiden Haupt-Lisp-Dialekte, das kleiner und reiner ist als Common Lisp, aber in der Industrie weniger verbreitet ist. Ich persönlich mag die Struktur und Interpretation von Computerprogrammen, aber es ist ein ziemlich theoretisches Buch, das Sie zu einem besseren Programmierer macht, obwohl es ein bisschen schwer zu schlucken ist.

Wenn Sie es vorziehen, Common Lisp zu verwenden, scheinen entweder Practical Common Lisp oder Land of Lisp gute Investitionen zu sein, das erste ist kostenlos online und das zweite ist relativ billig und vor allem (für manche) spielorientiert. Es ist mächtiger, wenn auch weniger rein als Schema.

Von diesen können Sie nach Belieben zu Clojure erweitern . Es ist Lisp für die JVM, daher ist es einfacher bereitzustellen und besser in der Lage, sich gegen die Anschuldigungen zu verteidigen, "akademisch" zu sein. Clojure kann auf .NET implementiert werden und auch auf Javascript umsteigen. Versuchen Sie für native .NET IronScheme .

Sie können den Unterschied auch aufteilen und beides gleichzeitig lernen, indem Sie in 48 Stunden in Haskell ein Schema schreiben .


Wenn Sie mit SICP arbeiten, gibt es auch viele Videovorträge zu diesem Buch, die bekanntesten sind: groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures Paul Graham ist ein guter Autor und hat ein kostenloses Buch darüber warum lisp ist die Knie der Biene paulgraham.com/onlisptext.html
Simoraman

1
Ich lese die kostenlose Online-Version von Real World Haskell, und die Möglichkeit, die Kommentare beim Lesen des Textes zu lesen, ist äußerst hilfreich. Selbst wenn Sie die Papierversion erhalten, möchten Sie möglicherweise auch die Online-Version lesen. Einige Teile sind nur viel weniger verwirrend mit den Kommentaren.
MatrixFrog

4

Meine Lieblingsquelle ist die sanfte Einführung in Haskell . Ich habe einen Teil von Learn you a Haskell und O'Reilly Real-World Haskell und Simon Thompsons Craft of Functional Programming gelesen , aber ehrlich gesagt geht es mir mit dem sanften Intro besser. Es ist wie bei Haskell's K & R: ein dünnes Dokument, das von den Schöpfern der Sprache erstellt wurde. Nicht wortreich, nicht bevormundend, aber auch nicht versuchend, Sie mit ihrer Gelehrsamkeit zu überwältigen.


1
Die sanfte Einführung ist sehr direkt und ohne Unsinn, ähnlich wie ein fester Schlag auf den Magen. Es ist sanft in dem Sinne, dass es Gewalt ohne Bosheit ausübt und weder versucht, sich zu verhätscheln noch zu dominieren; vielmehr in der Hoffnung, dass der Leser die innere Kraft entdecken könnte, die notwendig ist, um sich zu wehren.
CA McCann

1
Hmm, Sensei, ich bin mir nicht sicher, ob ich diese Bilder verwenden würde, aber was auch immer. Es ist weder gewalttätig noch ist innere Stärke ein Problem, aber ich stimme dem Rest zu. "Gentle" ist hier ein bisschen humorvoll. Wie "bescheidener Vorschlag".
JohnL4

1
Ja, ich habe mir dort ein wenig ... kreative Freiheit genommen. ;] Es braucht jedoch ein bisschen mentale Stärke, um etwas zu schaffen, das im Vergleich zu anderen Einführungsmaterialien heutzutage so unverblümt ist (für jede Sprache, nicht nur für Haskell). Der Vergleich mit K & R lässt mich denken, dass Sie an diese Art von Stil gewöhnt sind. Ich habe allgemein angenommen, dass "sanft" im Gegensatz zum Lernen aus dem Haskell-Bericht und einem Stapel von Forschungsarbeiten gemeint ist.
CA McCann

1

http://hop.perl.plover.com/ enthält ein Buch, das Sie kostenlos herunterladen können. Es wird erklärt, wie viele Funktionstechniken in Perl verwendet werden.

Das meiste, was es sagt, kann sehr einfach in JavaScript, Ruby oder Python übersetzt werden.


1

Ich lerne gerade selbst funktionale Programmierung. Allerdings lerne ich mit Haskell.

Hier sind ein paar Online-Bücher (Sie können diese auch in Hardcover-Iirc kaufen)

Haskell ist nicht esteroisch und wird mehr Mainstream (möglicherweise nicht so Mainstream wie LISP oder Erlang). Es ist jedoch eine reine funktionale Sprache und zwingt Sie, das Paradigma der funktionalen Programmierung zu erlernen. Im Gegensatz zu einem halb imperativen halb funktionalen Ansatz, bei dem Sie eine nicht rein funktionale Sprache verwenden.

Die Leute haben mit haskell WebServer, Bittorrent Clients und einige reale Anwendungen entwickelt. Ich persönlich benutze es jedoch, um die Konzepte zu lernen und sie dann auf C # & F # anzuwenden, was bisher fantastisch funktioniert.

Genießen.


1

Ich habe mehrmals gute Dinge über "Struktur und Interpretation von Computerprogrammen" gehört. Da es sich um ein echtes Buch handelt, können Sie es auch in Papierform herunterladen (siehe http://www.amazon.de/Structure-Interpretation-Computer-Electrical-Engineering/dp/0262510871) .

Es ist hier kostenlos verfügbar http://mitpress.mit.edu/sicp/ ( http://mitpress.mit.edu/sicp/full-text/book/book.html ) und es gibt sogar Videos der Vorträge ( http: //groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ )


SICP war nett, aber meiner Erfahrung nach nicht zugänglich.
William

1

Programmieren in Haskell

Sie könnten sich nicht für den Kauf entscheiden, aber die Homepage des Buches (siehe oben) enthält Links zu 13 Channel 9-Videos zur Haskell-Programmierung.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.