Czy programowanie funkcjonalne jest tak związane z matematyką, ponieważ większość programowania funkcjonalnego jest przedstawiona za pomocą pojęć matematycznych? Czy MUSISZ mieć silną bazę matematyki, aby uczyć się i rozumieć programowanie funkcjonalne dla programisty z niezbędnym doświadczeniem?
math
scala
functional-programming
prasonscala
źródło
źródło
Odpowiedzi:
Całe programowanie związane jest z matematyką. Rzeczywiście wiele uniwersytetów nadal poddaje swoje programy informatyczne pod kierunkiem działu matematyki.
Jeśli chodzi o naukę programowania funkcjonalnego, nie trzeba mieć silnej podstawy matematyki, aby się go nauczyć. Nauczyłem się teraz trzech różnych języków funkcjonalnych do rozsądnej biegłości (Haskell, Erlang, Clojure), a moje umiejętności matematyczne są bardzo słabe. Społeczność Haskell może rzeczywiście być trochę irytująca w mowie matematyki, ale zarówno Erlang, jak i Clojure są bardzo pragmatycznymi funkcjonalnymi językami programowania, które nie są tak trudne do odczytania, ponieważ informacje z samouczka są napisane pozornie, dla programistów, a nie zapalonych maniaków matematyki. W takiej sytuacji, pomimo mojej niepełnosprawności w matematyce ja zrobiłem podnieść Haskell, więc nie jest to niemożliwe.
Prawdziwą trudnością, jaką napotkałem przy zbieraniu deklaratywnych języków programowania (których funkcjonalność jest podzbiorem), jest rezygnacja z kontroli; powiedzieć komputerowi, co ma robić. To wymaga trochę przyzwyczajenia się.
źródło
Tak. Zasadniczo program funkcjonalny to kilka takich instrukcji:
// 1_ i 2_ są „fałszywymi argumentami” f (1_): = sin (1_) g (1_, 2_): = 1_ + 2_ itd.
x = f ()
y = g (x)
z = h (x, h2 (y))
itp...
Piszesz, co program ma robić w postaci równań definiujących nowe wartości (uwaga: nie zmienne) jako funkcje wcześniej zdefiniowanych wartości. Zdefiniujesz również funkcje jako relacje. Jest to bardzo podobne do sposobu pisania twierdzeń matematycznych.
źródło
IMO Mathematica, jako przykład języka, w którym można używać programowania funkcjonalnego, nie wymaga silnego zaplecza matematycznego. W rzeczywistości nie sądzę, że podczas mojej podstawowej edukacji matematycznej napotkałem coś takiego jak programowanie funkcjonalne. Rozpocząłem programowanie Mathematica w stylu C, a dopiero kilka lat później odkryłem programowanie funkcjonalne. Nie sądzę, funkcjonalne podstawowe konstrukcje programistyczne podoba
Map
,Apply
,NestList
itd wymaga żadnego tła matematyki w ogóle.źródło
nie całkiem. programowanie funkcjonalne jest tylko metodologią, ale miało swoją podstawę w rachunku lambda i tym podobnych.
Zamknięcia są (małą) próbą wprowadzenia funkcjonalnych koncepcji programowania do języków proceduralnych. zamiast tego
for(int i =0 ; i < num; i++) doStuff(arr[i]);
możesz założyć, że elementy tablicy z natury mogą mieć „rzeczy im zrobione”arr.each do |el| doStuff(el) end
źródło
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.
Krótka odpowiedź brzmi: tak, ponieważ wszystko z pewnym stopniem formalizacji (np. Języki programowania) jest silnie powiązane z matematyką, dla różnych stopni matematyki.
Używanie języka programowania nie wymaga jednak ścisłej znajomości matematyki, na przykład teoretycznych podstaw języków. Nie musisz wiedzieć, czym jest język bezkontekstowy oraz jakie prawa i własności taki język ma, aby go używać. Podobnie nie musisz być germanistą ani romanistą, aby mówić po niemiecku lub francusku.
Notacja „matematyczna” nie jest wspólną własnością języków funkcjonalnych. Scala i wszystkie języki oparte na Lisp mają bardzo różne składnie w porównaniu do Haskell.
źródło