Visualizza il feed RSS

Mario_De_Ghetto

Il linguaggio f#: La nuova/vecchia frontiera dello sviluppo di software

Valuta questo inserimento
di pubblicato il 14-06-2021 alle 14:51 (310 Visite)
Tra le mie nomine a Microsoft MVP che ho avuto tra il 2008 e il 2019 c'è stata anche quella sul linguaggio F#, durata un solo anno, perché poi Microsoft ha riunito tutte le nomine relative ai linguaggi di programmazione nell'unica nomina dal titolo "Visual Studio and Development Technologies".

Pur essendo da decenni uno sviluppatore Visual Basic e avendo programmato anche in vari altri linguaggi (tutte le versioni Basic dal Commodore VIC-20, al Gw-Basic, al Visual Basic 1.0 per MS-DOS e quasi tutte le versioni Visual Basic, ma anche C# e JAVA, oltre che il linguaggio Clipper, dBIII e dBIV), devo dire che fin da subito, quando questo linguaggio è stato rilasciato da Microsoft, il linguaggio F# mi ha colpito e impressionato più di tutti. Mi ha colpito la sua essenzialità e la sua potenza immersa in una concisione dei costrutti veramente incredibile.

Quello che mi ha colpito più di tutto è il fatto che l'obiettivo principale che caratterizza questo linguaggio è il miglioramento della qualità del codice: questo è ottenuto attraverso l'immutabilità delle variabili, l'eliminazione del concetto di Null, la possibilità di nidificare le varie parti di codice, cioè le funzioni, una dentro l'altra, come in una espressione matematica.

In qualche modo questo mi ricorda molto il linguaggio SQL, soprattutto tenendo presente i costrutti dell'algebra relazionale: proiezione, selezione, ridenominazione e prodotto cartesiano. Quattro operazioni che possono essere inglobate una nell'altra fino ad ottenere il risultato desiderato.

La stessa cosa per quanto riguarda LINQ: la libreria introdotta con .NET Framework 3.5 e in Visual Studio 2005. Anche in questo caso abbiamo una struttura del linguaggio che ha un approccio molto matematico.

Be', ho citato le funzioni nidificate una nell'altra e in effetti F# è un "linguaggio funzionale", cioè basato su funzioni che possono essere concatenate una all'altra fino a raggiungere l'obiettivo prefissato dal nostro programma.

Ora, forse non è chiaro perché nel titolo ho scritto che F# costituisce la "nuova/vecchia frontiera" dello sviluppo del software. In effetti, il paradigma della programmazione funzionale non è una novità di questi due ultimi decenni, con l'uscita di F# dai laboratori di Microsoft Research: infatti è un paradigma che esiste da molti più decenni e in qualche modo è rimasto un po' confinato nell'ambito accademico o altamente specialistico, con linguaggi come Haskel (1978), Eiffel (1985), ma anche Erlang (utilizzato da Whatsup).

I linguaggi funzionali hanno così avuto un po' la fama di linguaggi adatti agli scienziati o a studiosi chiusi nelle loro Università. In alcuni casi sono stati utilizzati per ambiti dove era necessaria una altissima velocità e precisione come nelle applicazioni bancarie.

Oggi abbiamo questa nuova frontiera data dalla ri-scoperta dei linguaggi funzionali, dato che Microsoft per prima, ma anche molti sviluppatori poi, si sono resi conto che questo linguaggio permette di realizzare quello che per Deming è l'obiettivo principe di qualsiasi attività produttiva: il miglioramento continuo della qualità.

Il fatto che non esistano i valori nulli, che le variabili non abbiano dei cambiamenti occulti (magari per qualche thread parallelo che li modifica) e che i costrutti sono di radice matematica e quindi deterministici, rendono questo linguaggio l'ideale per produrre codice praticamente esente da errori e dai cosiddetti "effetti collaterali".

Il vantaggio che F# fornisce rispetto ai suoi colleghi funzionali più anziani, però, è dato dal fatto che è perfettamente integrato con .NET Framework e quindi nello stesso programma F# possiamo integrare parti di codice funzionale, parti di codice orientato agli oggetti e parte di codice secondo il paradigma imperativo. Ovviamente tutto deve essere ben calibrato in modo da non introdurre quei piccoli mostri che sono gli effetti collaterali di un codice non deterministico.

Un progetto scritto in F# può essere aggiunto senza problemi a una Soluzione di Visual Studio, insieme a progetti scritti in C# e in Visual Basic. Inoltre lavora bene anche con la piattaforma Azure. Meglio di così: cosa volete di più?

Dopo questo articolo introduttivo, pian piano porterò altre informazioni su F#, così vediamo se riuscirò a stimolare il vostro interesse. 

Commenti