perché tutti i tutorial di programmazione funzionale sono così mistici?

18

Ho cercato di imparare la programmazione funzionale e la maggior parte delle esercitazioni che ho trovato usano la matematica come esempi per i costrutti più complicati (anche quelli semplici in alcuni casi). Perchè è questo? Immagino che qualcosa di più semplice possa essere usato. È difficile da imparare.

Informazioni di base: Scrivo software da 12 anni. Comprendo alcuni concetti come chiusure, funzioni come cittadini di prima classe e generici. Potrei avere problemi con funzioni di ordine superiore ad un livello avanzato, ma mi piacerebbe credere di avere una comprensione di base. Le Monade mi stanno mordendo nel sedere, ea questo punto non sono riuscito a superarlo (sono sicuro che alla fine, perché sono persistente).

    
posta Charles Lambert 26.08.2011 - 04:33
fonte

4 risposte

19

Usano la matematica perché la Programmazione funzionale è molto brava a modellare i costrutti matematici ed è molto legata a concetti matematici, in particolare al Lambda Calculus. Inoltre, dal momento che l'I / O è in genere un argomento piuttosto spinoso e avanzato in molti linguaggi del paradigma funzionale, i REPL delle varie lingue diventano un buon modo per insegnare la lingua all'inizio.

Poiché la programmazione funzionale tratta le funzioni come costrutti di prima classe all'interno del linguaggio di programmazione, la generazione delle funzioni diventa molto importante. Pertanto la matematica superiore diventa abbastanza importante in particolare la teoria dei grafi.

Le lingue imperative sono altrettanto mistiche ma sono tutte aritmetiche alla base poiché sono più vicine alla macchina che possono solo aggiungere comunque. I linguaggi funzionali con la loro maggiore astrazione tendono più verso la matematica. L'uso generale nel mondo accademico non aiuta neanche quando vengono utilizzati e quindi insegnati da persone che conoscono molto matematica e stanno insegnando a persone che si aspettano di imparare un sacco di matematica. Quindi è possibile "ammutolirlo" per così dire, ma è improbabile dato questi fattori.

link - Probabilmente è una delle introduzioni più delicate alla Programmazione Funzionale, l'ho ricontrollata e non c'è niente al di là dell'algebra di base e della teoria dei grafi.

    
risposta data 26.08.2011 - 06:26
fonte
10

Ci sono numerosi motivi e sono tutti correlati:

  • La maggior parte dei linguaggi di programmazione funzionale sono stati sviluppati in un contesto accademico, in cui CS è strettamente legato alla Matematica, quindi le persone che li hanno progettati hanno un strong background matematico (e tendono ad assumere lo stesso riguardo al loro pubblico)
  • La programmazione funzionale è un paradigma particolarmente adatto a risolvere problemi di matematica
  • La teoria dietro FP, lambda calcolo (fondamentalmente, una teoria astratta delle funzioni), è una branca della matematica, e i linguaggi FP tendono ad usare i concetti e la terminologia dal calcolo lambda

Inoltre, FP non è più una vera e propria mamma degli altri paradigmi, ma i concetti chiave (funzioni come veri cittadini di prima classe, funzioni di ordine superiore, chiusure e purezza) richiedono una certa mentalità. Ad un certo punto, la tua mente dovrebbe fare "clic"; se capisci queste 4 idee chiave, il resto sarà probabilmente altrettanto semplice di qualsiasi altro paradigma.

    
risposta data 26.08.2011 - 08:34
fonte
5

È perché fondamentalmente, la programmazione per computer è matematica. I linguaggi funzionali sono stati progettati pensando a questo e questo è il motivo per cui molti tutorial sono incentrati sulla matematica.

È difficile imparare solo se non si è abituati a pensare che la programmazione per computer abbia una base matematica.

    
risposta data 26.08.2011 - 08:03
fonte
1

Penso che "The Little Schemer" sia un'incredibile introduzione alla programmazione funzionale e non sia per niente mistica. Non entra nei Monad, quindi potrebbe essere troppo semplice per i tuoi gusti, ma fa una derivazione del combinatore Y verso la fine.

Di recente l'ho passato dopo non aver fatto alcuna programmazione funzionale dal college 12 anni fa, ed è stato un grande ripasso, mi sento decisamente pronto ad affrontare cose più avanzate dopo aver lavorato la maggior parte dei problemi nel libro usando Racket.

    
risposta data 26.08.2011 - 20:33
fonte

Leggi altre domande sui tag