Ich habe versucht, funktionale Programmierung zu lernen, und die meisten Tutorials, die ich gefunden habe, verwenden Mathematik als Beispiele für die komplizierteren Konstrukte (in einigen Fällen sogar die einfachen). Warum ist das? Ich würde mir vorstellen, dass etwas Leichteres verwendet werden könnte. Es macht es schwierig zu lernen.
Hintergrundinformation: Ich schreibe seit 12 Jahren Software. Ich verstehe einige der Konzepte wie Verschlüsse, Funktionen als erstklassige Bürger und Generika. Ich habe vielleicht Probleme mit Funktionen höherer Ordnung auf fortgeschrittenem Niveau, aber ich würde gerne glauben, dass ich ein grundlegendes Verständnis habe. Monaden beißen mich in den Hintern, und an diesem Punkt bin ich nicht darüber hinweggekommen (ich bin mir sicher, dass ich es irgendwann tun werde, weil ich hartnäckig bin).
quelle
Antworten:
Sie verwenden Mathematik, weil Functional Programming sehr gut in der Modellierung mathematischer Konstrukte und in mathematischen Konzepten, insbesondere Lambda Calculus, eingebunden ist. Da I / O in der Regel ein ziemlich schwieriges und fortgeschrittenes Fach in vielen Sprachen des Funktionsparadigmas ist, wird Mathematik über die REPLs der verschiedenen Sprachen zu einer guten Möglichkeit, die Sprache zunächst zu unterrichten.
Da die funktionale Programmierung Funktionen als erstklassige Konstrukte innerhalb der Programmiersprache behandelt, wird die Funktionsgenerierung sehr wichtig. Daher wird höhere Mathematik ziemlich wichtig, insbesondere Graphentheorie.
Imperative Sprachen sind genauso mathematisch, aber im Grunde ist es alles arithmetisch, da sie näher an der Maschine sind, die ohnehin nur addieren kann. Funktionale Sprachen mit ihrer höheren Abstraktion tendieren eher zur Mathematik. Die allgemeine Verwendung im akademischen Bereich hilft auch nicht, da sie von Menschen verwendet und unterrichtet werden, die viel Mathematik kennen und die Menschen unterrichten, von denen erwartet wird, dass sie viel Mathematik lernen. Es ist also möglich, es sozusagen "leiser" zu machen, aber angesichts dieser Faktoren ist es unwahrscheinlich.
http://learnyouahaskell.com/ - Ist wahrscheinlich eine der sanftesten Einführungen in die funktionale Programmierung. Ich habe sie zweimal überprüft und es gibt nichts anderes als grundlegende Algebra- und Graphentheorie.
quelle
Es gibt zahlreiche Gründe, und sie hängen alle irgendwie zusammen:
Auch ist FP nicht wirklich mathematischer als andere Paradigmen, aber die Schlüsselkonzepte (Funktionen als echte Bürger erster Klasse, Funktionen höherer Ordnung, Abschlüsse und Reinheit) erfordern eine bestimmte Denkweise. Irgendwann sollte Ihr Verstand "klicken"; Wenn Sie diese 4 Kernideen verstehen, ist der Rest wahrscheinlich genauso einfach wie jedes andere Paradigma.
quelle
Grundsätzlich ist Computerprogrammierung Mathematik. In diesem Sinne wurden funktionale Sprachen entwickelt, weshalb sich ein Großteil der Tutorials auf die Mathematik konzentriert.
Es ist nur schwer zu lernen, wenn Sie nicht daran gewöhnt sind, dass Computerprogrammierung eine mathematische Grundlage hat.
quelle
Ich denke, "The Little Schemer" ist eine großartige Einführung in die funktionale Programmierung und überhaupt nicht mathematisch. Es geht nicht in Monaden über, ist also für Ihren Geschmack vielleicht zu einfach, führt aber gegen Ende eine Herleitung des Y-Kombinators durch.
Ich habe es kürzlich durchgearbeitet, nachdem ich seit dem College vor 12 Jahren keine funktionale Programmierung durchgeführt hatte, und es war eine großartige Auffrischung. Ich fühle mich definitiv bereit, fortgeschrittenere Dinge anzugehen, nachdem ich die meisten Probleme in dem Buch mit Racket gelöst habe.
quelle