La programmazione funzionale è strongmente legata alla matematica?

16

La programmazione funzionale è così legata alla matematica perché gran parte della programmazione funzionale è descritta con nozioni matematiche? È un MUST avere una base strong di matematica da imparare e amp; capire la programmazione funzionale per un programmatore con uno sfondo imperativo?

    
posta prasonscala 21.03.2011 - 07:48
fonte

5 risposte

26
La programmazione

Tutti è correlata alla matematica. In effetti, molte università pongono ancora i loro programmi di informatica alla competenza del dipartimento di matematica.

Per quanto riguarda l'apprendimento della programmazione funzionale, non è necessario disporre di una solida base matematica per apprenderla. Ho imparato tre diversi linguaggi funzionali ora a ragionevole capacità (Haskell, Erlang, Clojure) e le mie abilità matematiche sono estremamente deboli. La comunità di Haskell può, anzi, diventare un po 'noiosa nel suo modo incentrato sulla matematica di parlare delle cose, ma Erlang e Clojure sono entrambi linguaggi di programmazione funzionale molto pragmatici che non sono così difficili da comprendere perché le informazioni del tutorial sono scritte, apparentemente, per i programmatori, non geek matematici hard-core. Detto questo, nonostante il mio handicap in matematica, I ha preso Haskell, quindi non è impossibile.

La vera difficoltà che ho riscontrato nel reperire i linguaggi di programmazione dichiarativi in generale (di cui funzionale è un sottoinsieme) sta abbandonando l'impulso di avere il controllo; dire al computer cosa fare. Ci vuole un po 'per abituarsi.

    
risposta data 21.03.2011 - 08:10
fonte
5

Sì. In sostanza, un programma funzionale è un insieme di affermazioni del genere:

// 1_ e 2_ sono "argomenti fittizi" f (1_): = sin (1_) g (1_, 2_): = 1_ + 2_ ecc ...

x = f ()

y = g (x)

z = h (x, h2 (y))

ecc ...

Stai scrivendo ciò che il programma dovrebbe fare in una forma di equazioni che definiscono nuovi valori (nota: non variabili) come funzioni di valori precedentemente definiti. Definisci anche le funzioni come relazioni. È davvero molto simile al modo in cui sono scritti i teoremi matematici.

    
risposta data 16.04.2011 - 13:25
fonte
2

IMO Mathematica, come esempio di una lingua in cui è possibile utilizzare la programmazione funzionale, non richiede un solido background in matematica. In effetti, non penso di aver mai incontrato qualcosa di simile alla programmazione funzionale durante la mia formazione matematica di base. Ho iniziato la programmazione Mathematica con lo stile C e ho scoperto la programmazione funzionale solo anni dopo. Non penso che i costrutti basilari di programmazione funzionale come Map , Apply , NestList , ecc. Richiedano alcun background matematico.

    
risposta data 21.03.2011 - 08:09
fonte
1

non proprio. la programmazione funzionale è solo una metodologia, ma aveva la sua base nel calcolo lambda e cose del genere.

Le chiusure sono un (piccolo) tentativo di introdurre concetti di programmazione funzionale in linguaggi procedurali. invece di for(int i =0 ; i < num; i++) doStuff(arr[i]); , puoi invece assumere che gli elementi dell'array abbiano intrinsecamente "roba fatta a loro" quindi arr.each do |el| doStuff(el) end

    
risposta data 21.03.2011 - 08:08
fonte
1

La risposta breve è: Sì, perché tutto con un certo grado di formalizzazione (come i linguaggi di programmazione) è strettamente correlato alla matematica, per diversi gradi di matematica.

Tuttavia, l'uso di un linguaggio di programmazione non richiede necessariamente familiarità con la matematica, ad esempio basi teoriche delle lingue. Non devi sapere cosa sia una lingua libera dal contesto e quali leggi e quali proprietà ha una lingua per usarne una. Allo stesso modo, non devi essere un germanista o un romanista per parlare tedesco o francese.

La notazione "matematica" non è una proprietà comune dei linguaggi funzionali. Scala e tutti i linguaggi basati su Lisp hanno sintassi molto diverse rispetto a Haskell.

    
risposta data 16.04.2011 - 13:45
fonte

Leggi altre domande sui tag