Al Codemotion Milan 2019 abbiamo assistito alla talk di Michele Riva (Senior Software Engineer - Open Mind) che ha potuto, grazie alle sue capacità nel settore, fornirci una panoramica su quelli che sono i Linguaggi Funzionali e le loro peculiarità.
L'interesse per questo particolare tipo di linguaggi di programmazione deriva dal fatto che, man mano che il codice cresce, aumenta anche la sua complessità e non solo quella di leggibilità, ma anche quella di testing, debugging e di mantenimento del codice stesso.
Grazie al Functional Programming avremo effettivamente la capacità di migliorare la nostra produttività e risparmiare sul tempo di debugging rispetto ad altri approcci. Il suo punto di forza è sicuramente la purezza, sia del codice sia delle sue funzioni. Per purezza si indica che il codice deve essere NON DEVE poter alterare il valore di una variabile (immutabilità), NON DEVE avere la capacità di generare effetti collaterali, NON DEVE contenere forme di cicli e infine NON DEVE produrre risultati diversi se alle proprie funzioni vengono passati gli stessi parametri (trasparenza referenziale).
Le nostre funzioni pure risulteranno sempre deterministiche, componibili e dichiarative. Ma perché è cosi importante quest'aspetto? Grazie alla purezza è più facile ragionare sul codice, testarlo e debuggarlo ed è possibile risolvere problemi di scalabilità. Esistono linguaggi funzionali adatti a tutti, se si vuole iniziare da zero probabilmente Haskell ed Erlang saranno perfetti al caso, mentre se si utilizzano già altri linguaggi di programmazione oppure si è limitati ad un settore specifico ecco qui una lista di consigli:
Questo approccio diverso dal comune cambierà non di poco il nostro modo di pensare il codice futuro!
Michael Battiston