Hat funktionale Programmierung so viel mit Mathematik zu tun, weil ein Großteil der funktionalen Programmierung mit mathematischen Begriffen dargestellt wird? Ist es ein MUSS, eine solide mathematische Basis zu haben, um funktionale Programmierung für einen Programmierer mit einem zwingenden Hintergrund zu lernen und zu verstehen?
math
scala
functional-programming
Prasonscala
quelle
quelle
Antworten:
Alle Programmierungen beziehen sich auf Mathematik. Tatsächlich stellen viele Universitäten ihre Informatikprogramme immer noch unter die Zuständigkeit der mathematischen Fakultät.
Für das Erlernen der funktionalen Programmierung ist keine solide mathematische Basis erforderlich. Ich habe jetzt drei verschiedene funktionale Sprachen mit angemessenen Kenntnissen gelernt (Haskell, Erlang, Clojure) und meine eigenen mathematischen Fähigkeiten sind extrem schwach. Haskells Community kann in der Tat ein bisschen nervig werden, wenn es darum geht, mathematisch über Dinge zu sprechen, aber Erlang und Clojure sind beide sehr pragmatische funktionale Programmiersprachen, die nicht so schwer zu erlernen sind, da die Tutorial-Informationen scheinbar wie folgt geschrieben sind: Für Programmierer, nicht Hardcore-Mathematikfreaks. That being said, trotz meiner Behinderung in Mathe Ich habe Haskell abholen, so dass es nicht unmöglich ist.
Die eigentliche Schwierigkeit, die ich beim Erlernen deklarativer Programmiersprachen im Allgemeinen (von denen funktional eine Untergruppe ist) gefunden habe, besteht darin, den Drang aufzugeben, die Kontrolle zu behalten. um dem Computer zu sagen, was er tun soll. Es ist gewöhnungsbedürftig.
quelle
Ja. Ein funktionales Programm besteht im Wesentlichen aus einer Reihe von Aussagen:
// 1_ und 2_ sind "Scheinargumente" f (1_): = sin (1_) g (1_, 2_): = 1_ + 2_ etc ...
x = f ()
y = g (x)
z = h (x, h2 (y))
etc...
Sie schreiben, was das Programm tun soll, in Form von Gleichungen, die neue Werte (Anmerkung: keine Variablen) als Funktionen zuvor definierter Werte definieren. Sie definieren die Funktionen auch als Relationen. Es ist der Art und Weise, wie mathematische Theoreme geschrieben werden, sehr ähnlich.
quelle
IMO Mathematica als Beispiel für eine Sprache, in der Sie funktionale Programmierung verwenden können, erfordert keine ausgeprägten mathematischen Kenntnisse. Tatsächlich glaube ich, dass ich während meiner Grundausbildung in Mathematik auf nichts Vergleichbares gestoßen bin. Ich habe mit der Mathematica-Programmierung im C-Stil begonnen und erst Jahre später die funktionale Programmierung entdeckt. Ich glaube nicht , die grundlegenden funktionalen Programmierkonstrukte wie
Map
,Apply
,NestList
usw. erfordern alle mathematischen Hintergrund überhaupt.quelle
nicht wirklich. funktionale programmierung ist nur eine methodik, hat aber ihre basis in lambda und so.
Closures sind ein (kleiner) Versuch, funktionale Programmierkonzepte in prozedurale Sprachen einzuführen. stattdessen
for(int i =0 ; i < num; i++) doStuff(arr[i]);
können Sie stattdessen davon ausgehen, dass die Elemente des Arrays von Natur aus "Sachen gemacht" haben könnenarr.each do |el| doStuff(el) end
quelle
The term closure is often mistakenly used to mean anonymous function. This is probably because most languages implementing anonymous functions allow them to form closures and programmers are usually introduced to both concepts at the same time. These are, however, distinct concepts. A closure retains a reference to the environment at the time it was created (for example, to the current value of a local variable in the enclosing scope) while a generic anonymous function need not do this.
Die kurze Antwort lautet: Ja, denn alles, was einen gewissen Grad an Formalisierung aufweist (wie z. B. Programmiersprachen), ist stark mit der Mathematik verbunden, und zwar für unterschiedliche Grade der Mathematik.
Die Verwendung einer Programmiersprache setzt jedoch nicht unbedingt die Kenntnis der Mathematik voraus, beispielsweise der theoretischen Grundlagen von Sprachen. Sie müssen nicht wissen, was eine kontextfreie Sprache ist und welche Gesetze und Eigenschaften eine solche Sprache hat, um eine zu verwenden. Ebenso muss man kein Germanist oder Romanist sein, um Deutsch oder Französisch zu sprechen.
Die "mathematische" Notation ist keine gemeinsame Eigenschaft von funktionalen Sprachen. Scala und alle Lisp-basierten Sprachen haben im Vergleich zu Haskell sehr unterschiedliche Syntaxen.
quelle