F#

Introduzione         

Nel 2008 Don Syme, per conto di Microsoft Research, presentò al mondo il linguaggio F#, progetto decisamente ambizioso e, direi, abbastanza fortunato. Ho avuto la possibilità di poter collaborare, esternamente come altri, al test delle primissime release del progetto (che in realtà nacque nel 2002 nel tentativo di collegare il framework .Net al mondo dei linguaggi ML particolarmente conosciuti nell'ambito della programmazione funzionale) trovandolo da subito molto interessante e promettente. Impegni di lavoro mi costrinsero poi ad interrompere il mio contributo ma l'interesse è rimasto negli anni per quello che ritengo un prodotto di alta qualità e ingiustamente poco adottato.
Si tratta di un linguaggio multiparadigma progettato originariamente in modo da avere grandi somiglianze con OCaml e quindi con una ispirazione decisamente legata al paradigma funzionale che resta la prima opzione d'uso. Tuttavia è possibile lavorare con F# anche in maniera imperativa ed orientata agli oggetti facendone così un prodotto completo per lo sviluppatore. Va aggiunto che tra le sue fonti di ispirazione troviamo anche C#, Scala, Python, Erlang e lo stesso Haskell, "re" dei linguaggi funzionali puri, insomma una schiera molto nutrita e nobile. Tuttavia lo strumento creato da Syme ha una sua peculiarità, come detto, nel grande eclettismo che lo contraddistingue. A differenza di altri linguaggi funzionali F# abbraccia anche tecniche "dinamiche" come il dynamic loading, il dynamic typing e reflection in quest'ottica confermando la modernità della sua natura.
Da un punto di vista tecnico F# è un linguaggio fortemente e staticamente tipizzato quindi non è possibile compiere operazioni su tipo di dato che siano inadeguate per lo stesso e nemmeno possiamo cambiare il tipo di una variabile una volta che questa ne abbia uno assegnato. Ovviamente, come per molti  dei linguaggi di moderna creazione, è prevista l'inferenza di tipo ossia il compilatore deduce il tipo di una variabile dal valore iniziale ad essa assegnata senza necessitare di dichiarazione esplicita del tipo stesso.
F# si basa sulla arcinota piattaforma .Net e gode quindi del pieno appoggio da parte del runtime di quest'ultima con tutti i vantaggi che ne conseguono, prima di tutto la possibilità di cooperare con altri linguaggi come C# e C++ (managed). Gira su Windows, ovviamente, e si appoggia alla piattaforma Mono per funzionare su Mac e Linux. Ma esiste la possibilità anche di programmare per Android e Ios. Il suo target principale è certamente il codice CLI (quello gestito dal runtime di .Net) ma possiamo usare questo linguaggio anche per generare Javascript  e codice GPU. Insomma c'è da divertirsi.
F# è un progetto open source (appartiene alla galassia Microsoft ma esiste una apposita Fondazione che ne segue lo sviluppo) ed è completamento integrato nella suite Visual Studio nativamente a partire dalla versione 2010 (ma potete usare anche il valido Mono Develop tra l'altro multi piattaforma). Come al solito cercherò di evitare l'uso di un ambiente così complesso, ancorchè potentissimo, almeno all'inizio a favore di strumenti più alla portata di tutti.