Che cos’è una funzione di prima classe? Come funzionano? In questo articolo ho il piacere di mostrarti il significato della loro esistenza!
Le funzioni di prima classe, che ovviamente non hanno niente a che vedere con i treni o gli aerei, sono una particolarità comune di molti linguaggi di programmazione.
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
In inglese vengono chiamate “first class function”: in questo articolo scopriremo che cosa sono.
Cittadini di prima classe
Un linguaggio di programmazione per definizione si dice che ha funzioni di prima classe se al suo interno permette di trattare le funzioni come cittadini di prima classe.
Questa definizione, di cui ti lascio le referenze qui, si riferisce a una modalità di funzionamento legata a… Indovina? Proprio loro: le funzioni!
Le funzioni quindi, possiamo definirle di prima classe se abbiamo modo, quindi grazie al linguaggio di programmazione, se:
- Puoi usarle come argomenti di altre funzioni
- Puoi usarle come valore ritornato all’interno di un’altra funzione
- Puoi assegnarle a variabili
- Puoi salvarle in strutture dati
Ci sarebbe anche un punto bonus: alcuni linguaggi supportano tutto questo anche per le funzioni anonime, o “anonymous functions”.
Una funzione di prima classe: una definizione meno tecnichese
Per capire al 100% che cosa sono, è giusto dare anche un approccio meno tecnichese.
Le funzioni stesse, prima di tutto, non sono parole riservate o speciali: questo significa che possono essere trattate come variabili ordinarie, il cui tipo è di tipo “funzione”.
Che cosa significa questo? Che non sono per esempio di tipo “int” o magari “string”, ma sono di tipo “function” quindi possono essere eseguite.
Quindi, oltre alle particolarità elencate prima, le funzioni di prima classe sono anche questo.
Quali linguaggi di programmazione le offrono?
Ci sono diversi linguaggi di programmazione che offrono le first class functions: fra questi abbiamo Python e JavaScript e tra l’altro nel mio blog puoi trovare un esempio particolare di questa peculiarità in JavaScript: proprio qui.