F#, nuovo linguaggio di programmazione del .NET framework

Con l’imminente rilascio della versione 4.0 del framework .NET e della versione 2010 di VisualStudio, Microsoft introdurrà un nuovo linguaggio in grado di sfruttare a pieno tutte le funzionalità del framework .NET. Tale linguaggio prende il nome di F#.

Al contrario del linguaggio di programmazione C#, che è un linguaggio di programmazione imperativo, F# è un linguaggio di programmazione funzionale, che a parità di C# è basato sul framework .NET. Inoltre F# e C# sono in grado di interoperare tra di loro direttamente. Questo sta a significare che F# è in grado di accedere direttamente alle API del framework .NET, come per esempio LINQ, WPF ecc.., ed inoltre eventuali librerie scritte in F# possono essere richiamate tramite altri linguaggi .NET.

F# è un linguaggio fortemente tipizzato con l’abilità di dedurre in maniera automatica il tipo di un valore. Questo consente al programmatore di non dichiarare in maniera esplicita i tipi di dati, i quali saranno ricavati dal compilatore durante la fase di compilazione del programma. F# offre comunque la possibilità di dichiarare esplicitamente i tipi di dati.

Il nuovo linguaggio non solo supporta tutti i tipi e oggetti del framework .NET, ma li estende e li categorizza come tipi immutabili (sono quelli di default e utilizzati per la programmazione funzionale) o mutabili (utilizzati per la programmazione imperativa). Per la programmazione funzionale, F# mette a disposizione del programmatore diversi construtti e un insieme di tipi immutabili come tuple, liste, record e unioni. Per la programmazione imperativa, F# supporta i cicli for e while, gli array e la creazione di tipi di Oggetti ( classi .NET).

Per vedere la differenza nell’utilizzo di un linguaggio di programmazione funzionale come F#, e di un linguaggio di programmazione imperativo come C#, osserviamo il seguente esempio per la creazione di un array con i primi 10 numeri pari:

1
2
3
int[] even = new int[10];
for (int i = 0; i < even.Length; i++)
  even[i] = i * 2;

F# mette invece a disposizione dei moduli funzionali per la manipolazione di array monodimensionali, bidimensionali, tridimensionali ecc… (Array, Array2, Array3, ecc..). Utilizzando nel nostro caso il modulo Array, possiamo tradurre il precedente codice C# in codice F# nel seguente modo:

1
let even = Array.init 10 (fun i -> i * 2)

La keyword “let” viene utilizzata da F# per il binding tra i tipi di valore e i nomi di variabili. Come si vede dall’esempio, non è stato dichiarato il tipo di dati dell’array, in quanto è il compilatore che in base alla funzione di inizializzazione capisce che sarà un array di int. Attraverso questa sintassi si va a specificare la creazione di un array di 10 elementi, e l’utilizzo di una funzione di inizializzazione per ogni elemento dell’array.

Dal mio punto di vista trovo F# un linguaggio di programmazione estremamente interessante, in quanto basta specificare nella sintassi ciò che si vuole ottenere e non esattamente i singoli passi su come ottenerlo. Avremo cmq modo di vedere nei prossimi anni come tale linguaggio verrà adottato dai programmatori .NET.

Tags: , , ,


About Roberto

Roberto Lavarini is a developer skilled in Java and .NET application. He collaborate with DevInterface till the early days.

About DevInterface

We are an information and communication technology agency. Our mission is to provide web application development, design services and communication strategies. We specialize in building web applications with modern and efficient frameworks.

Related Post

Leave a Reply

Insert code beetween <code lang="ruby"> and </code>

Copyright 2012 DevInterface s.n.c.

DevInterface Blog is proudly powered by WordPress