Vuoi saperne di più sulla programmazione?  Vale la pena conoscere la programmazione funzionale e quali linguaggi di programmazione lo supportano.

5 linguaggi di programmazione funzionale che dovresti conoscere

Annuncio pubblicitario Se passi del tempo a leggere le tendenze di programmazione su Internet, avrai sentito parlare della programmazione funzionale. Il termine viene usato abbastanza spesso, ma cosa significa? Anche se sei a conoscenza di cosa sia la programmazione funzionale, potresti non essere chiaro su quali linguaggi siano più adatti per questo.

Annuncio pubblicitario

Se passi del tempo a leggere le tendenze di programmazione su Internet, avrai sentito parlare della programmazione funzionale. Il termine viene usato abbastanza spesso, ma cosa significa?

Anche se sei a conoscenza di cosa sia la programmazione funzionale, potresti non essere chiaro su quali linguaggi siano più adatti per questo. Dopotutto, non tutti i linguaggi di programmazione sono creati uguali. Mentre puoi applicare paradigmi di programmazione funzionale in molte lingue, ce ne sono ancora alcuni in cui ti sentirai molto più a tuo agio.

Cos'è la programmazione funzionale?

Se hai un background in matematica, hai un vantaggio sulla programmazione funzionale. Questo perché il paradigma di programmazione funzionale tratta l'informatica come funzioni matematiche. Se non hai un background matematico, questo potrebbe lasciarti confuso.

Fondamentalmente, la programmazione funzionale considera immutabili funzioni e dati. Si passano i dati in una funzione e generalmente restituisce i dati trasformati o altri tipi di dati. Nella programmazione funzionale, la funzione non dovrebbe mai cambiare i dati originali o lo stato del programma.

C'è una somiglianza con la filosofia Unix secondo cui ogni programma dovrebbe fare bene una cosa. Una funzione non dovrebbe toccare varie parti del programma. Invece, dovrebbe prendere il suo input e darti un output.

Idealmente, le funzioni dovrebbero essere pure quando possibile nella programmazione funzionale. Ciò significa che dato lo stesso input, l'output della funzione rimarrà sempre lo stesso.

Programmazione funzionale vs. orientata agli oggetti

Questa è una drammatica partenza da qualcosa come la programmazione orientata agli oggetti. Nella programmazione orientata agli oggetti, spesso si dispone di un oggetto base con vari metodi dedicati alla modifica dei dati o dello stato che fanno parte di tale oggetto. Un metodo può anche modificare i dati o dichiarare se non esplicitamente indicato.

Nei programmi pratici, a volte questo ha senso. Detto questo, può rendere più difficile la manutenzione dei programmi, poiché non è sempre chiaro cosa stia modificando lo stato o i dati. La programmazione funzionale era originariamente utilizzata in ambienti accademici, ma può anche aiutare a prevenire questo tipo di problemi.

1. JavaScript

Logo JavaScript

Alcuni linguaggi di programmazione consentono la programmazione funzionale, mentre altri lo incoraggiano o addirittura lo applicano. JavaScript rientra nella prima categoria. Sebbene sia possibile utilizzare paradigmi di programmazione funzionale nel linguaggio, è possibile utilizzare altrettanto facilmente un approccio orientato agli oggetti.

Detto questo, ci sono molti paradigmi di programmazione funzionale integrati in JavaScript. Prendi, ad esempio, le funzioni di ordine superiore. Queste sono funzioni che possono assumere altre funzioni come argomenti.

JavaScript ha diverse funzioni che funzionano con array come map(), reduce(), filter() e altri, che sono tutte funzioni di ordine superiore. Questo ti consente di unirli insieme per fare rapidamente qualsiasi cosa con un array.

Mentre i primi JavaScript avevano alcuni problemi con la mutabilità, le nuove versioni dello standard ECMAScript forniscono correzioni. Invece della parola chiave var -all- var per definire le variabili, ora hai const e let . Il primo consente di definire le costanti, come suggerisce il nome. Il secondo, let, limita l'ambito di una variabile alla funzione in cui è dichiarata.

2. Python

Logo Python

Come JavaScript, Python è un linguaggio generalizzato con cui puoi usare qualsiasi numero di paradigmi di programmazione. Python può avere i suoi lati negativi 4 motivi per cui Python non è il linguaggio di programmazione per te 4 motivi per cui Python non è il linguaggio di programmazione per te Il linguaggio di programmazione Python è estremamente popolare, ma qui ci sono alcuni motivi per cui potresti voler evitare Python . Maggiori informazioni, ma la programmazione funzionale non è una di queste. C'è anche un'introduzione alla programmazione funzionale nella documentazione ufficiale di Python.

Per iniziare, troverai molte delle stesse funzioni map(), filter(), reduce() e simili menzionate sopra integrate. Come con JavaScript, si tratta di funzioni di ordine superiore poiché assumono altre funzioni come argomenti. In Python, la programmazione funzionale ha un vantaggio sotto forma della parola chiave lambda .

Puoi usare le espressioni lambda in diversi modi. Un modo per usarlo è la scorciatoia per funzioni semplici. Quando assegnato a una variabile, puoi chiamare espressioni lambda esattamente come faresti con una funzione Python standard. Il vero vantaggio delle espressioni lambda viene quando le usi come funzioni anonime.

Le funzioni anonime funzionano anche in JavaScript e in altre lingue in questo elenco. Sono particolarmente utili se utilizzate con funzioni di ordine superiore poiché è possibile definirle sul posto. Senza funzioni anonime, dovresti pre-definire anche semplici aggiunte come funzioni su misura.

3. Clojure

Logo del linguaggio di programmazione Clojure

A differenza di JavaScript e Python, Clojure potrebbe non essere esattamente un nome familiare, anche tra i programmatori. Nel caso in cui non abbiate familiarità, Clojure è un dialetto del linguaggio di programmazione Lisp, che risale alla fine degli anni '50. Questo porta con sé un modo molto specifico di fare cose che sembrano essere perfette per la programmazione funzionale.

Come altri dialetti Lisp, Clojure considera il codice come dati. Ciò significa che il codice può effettivamente modificarsi. A differenza di altri dialetti Lisp, Clojure funziona sulla piattaforma Java ed è compilato con il bytecode JVM. Ciò significa che può funzionare con le librerie Java, siano esse scritte in Clojure o meno.

A differenza delle lingue precedenti in questo elenco, Clojure è un linguaggio di programmazione funzionale da zero. Ciò significa che sostiene l'immutabilità laddove possibile, specialmente all'interno delle strutture di dati.

Clojure non si aspetta che tutti i programmi siano matematicamente "dimostrabili", ma incoraggia a usare funzioni pure ove possibile.

4. Olmo

Logo del linguaggio di programmazione Elm

Una delle lingue più recenti in questo elenco, Elm è un linguaggio puramente funzionale inizialmente progettato da Evan Czaplicki nel 2012. Il linguaggio ha guadagnato popolarità tra gli sviluppatori Web, in particolare per la creazione di interfacce utente.

A differenza di ogni precedente voce in questo elenco, Elm utilizza il controllo del tipo statico. Ciò aiuta a garantire eccezioni di runtime, con errori invece rilevati al momento della compilazione. Ciò significa errori meno visibili per gli utenti, il che è un grande vantaggio.

Il compilatore Elm ha come target HTML, CSS e JavaScript. Allo stesso modo in cui puoi usare Clojure per scrivere programmi eseguiti su Java, puoi scrivere app che usano librerie JavaScript in Elm.

Una grande differenza tra Elm e altre lingue qui è che non troverai filter() generici filter(), map() e funzioni simili. Invece, questi sono definiti da tipi di dati come List.map o Dict.map .

5. Haskell

Logo del linguaggio di programmazione Haskell

Haskell è un altro linguaggio tipicamente statico, puramente funzionale. A differenza di Elm, Haskell è in circolazione da un po 'di tempo. La prima versione della lingua è stata progettata nel 1990. L'ultimo standard è Haskell 2010, mentre la versione successiva è prevista per il 2020.

Come abbiamo già esplorato, la natura puramente funzionale di Haskell significa che, per progettazione, le funzioni non dovrebbero avere effetti collaterali. Ciò lo rende adatto a risolvere i problemi del mondo reale nonostante le radici della programmazione funzionale nel mondo accademico.

Nonostante la sua scarsa popolarità, Haskell è stato impiegato in alcuni progetti ampiamente utilizzati. Il gestore delle finestre di Xmonad è scritto interamente in Haskell. Pandoc, che converte diversi tipi di markup in e da altri formati, utilizza anche il linguaggio.

Sono presenti la map() standard map(), filter(), reduce() e altre funzioni di ordine superiore, che dovrebbero consentire di portare concetti da JavaScript o Python a Haskell. Se vuoi saperne di più sulla lingua, Learn You a Haskell for Great Good è un popolare punto di partenza.

Sei nuovo nella programmazione?

Alcuni dei termini e delle lingue di cui sopra possono sembrare alquanto esoterici se non sei ancora un programmatore esperto. Va bene, poiché sapere ciò che non conosci è uno dei primi passi per diventare uno studente migliore.

Alcune delle lingue sopra elencate sono migliori per i principianti rispetto ad altre. Dai un'occhiata al nostro elenco dei migliori linguaggi di programmazione per principianti. Noterai che c'è un po 'di crossover tra le due liste.

E se sei interessato, consulta la nostra guida per la creazione di un semplice sito Web PHP Come creare un sito Web PHP semplice Come creare un sito Web PHP semplice Vuoi creare un sito Web ma non sai da dove iniziare? La creazione di un sito Web di base PHP ti porterà sulla strada dello sviluppo web. Leggi di più .

Scopri di più su: Programmazione funzionale, JavaScript, Python.