
I laboratori Microsoft Research hanno sfornato un nuovo linguaggio di programmazione. Si chiama F#, e la f sta per Functional, ossia funzionale. Il linguaggio beneficia delle caratteristiche del paradigma funzionale e si integra nel framework .NET. Con questa mossa, Microsoft vuole corteggiare una serie di programmatori che spesso usano sistemi eterogenei per rispondere alle proprie esigenze. I linguaggi funzionali sono infatti diffusi in ambito accademico e di ricerca, tra tutti cito il buon vecchio Lisp. Indubbiamente la novità è interessante, perché va a coprire una nicchia importante, che viene allacciata al mondo dei tool di sviluppo Microsoft. Viene spontanea una domanda: perchè utilizzare F# ? Cerchiamo di scoprirlo.
Il punto di forza dei linguaggi funzionali, consiste nel fatto che con questo paradigma non si hanno effetti collaterali delle funzioni, è più facile verificare la correttezza del programma e si ha la possibilità di una maggiore ottimizzazione dello stesso. La programmazione funzionale pone maggior accento sulla definizione di funzioni, rispetto ai paradigmi procedurali e imperativi, che invece prediligono la specifica di una sequenza di comandi da eseguire.
F#, oltre a beneficiare delle caratteristiche del paradigma funzionale, è in grado di accedere a tutte le classi del .NET Framework nonchè di essere a sua volta richiamato dai linguaggi della famiglia .NET, quali C# e VB.NET. Il linguaggio nasce anche perchè il paradigma funzionale consente di semplificare la scrittura di librerie più efficienti, sicure e compatibili con la concorrenza, in conseguenza della crescente diffusione delle CPU multicore. I linguaggi funzionali infatti consentono agli sviluppatori di supportare la concorrenza favorendo strutture di dati immutabili che possono essere scambiate tra thread e computer senza dover preoccuparsi della protezione dei thread o dell’accesso atomico.
Il linguaggio sembra promettere bene, considerando che l’ introduzione dei concetti della programmazione funzionale nei linguaggi come C# e Visual Basic hanno portato alla nascita di Linq e dei generics .NET, dei quali se ne è parlato lo scorso aprile durante il seminario delle tecnologie .NET a Milano.
Ecco alcuni links dove è possibile approfondire il nuovo linguaggio:
9 Responses
Della
May 1st, 2008 at 10:32 pm
1ho detto basta ai linguaggi funzionali dopo l’esame di paradigmi…e non credo di essere stato l’unico…vero? :DXD
Auro
May 2nd, 2008 at 9:14 am
2lol dai tutto sommato il Lisp è un bel linguaggio! XD
la cosa interessante che almeno si potrà programmare in F# con Visual Studio … con Lisp ricordi cosa usavamo?? LispWork che il cut-and-paste era disponibile nella versione Pro ! XDXD
cmq pare che i linguaggi funzionali siano il futuro nello sviluppo di certe applicazioni … staremo a vedere
Della
May 2nd, 2008 at 8:25 pm
3si dai effettivamente lisp non era male….fare il progetto sulle URI è stato anche abbastanza bello…prolog però però mi faceva proprio cacare asdasdasd
Luca
May 3rd, 2008 at 11:47 am
4C’è chi la pensa diversamente
http://stephan.reposita.org/archives/2008/01/21/no-future-for-functional-programming-in-2008-scala-f-and-nu/
Auro
May 3rd, 2008 at 1:41 pm
5ho letto il post, interessante, viene discussa l’ ipotesi di dover utilizzare un linguaggio funzionale per lo sviluppo di applicazioni enterprise.
In ogni caso, la potenza di un linguaggio di programmazione e del tipo di paradigma, dipende dal campo applicativo. I linguaggi funzionali, come descritto nel post, sono in grado di supportare la concorrenza, e questo aprirà loro la strada per nuovi sviluppi.
L’ideale sarebbe usare contemporaneamente i diversi paradigmi prendendo, per così dire, il meglio da ciascuno a seconda delle situazioni che si devono affrontare. E forse è questa un po’ la tendenza: l’ introduzione dei concetti della programmazione funzionale in C# e Visual Basic hanno portato alla nascita di Linq, e non è poco …
codinglife
May 6th, 2008 at 10:25 am
6Sarebbe interessante a questo punto analizzare la storia dell’evoluzione dei linguaggi di programmazione in passato.
Perché questo? Per capire come sono nati all’epoca dei linguaggi imperativi e strutturati, seguiti dalla programmazione object-oriented.
Quali esigenze hanno scaturito questi avvenimenti? La necessità di poter programmare in un linguaggio simile a quello usato quotidianamente?
Ora quindi sembra esserci un’inversione di tendenza, visto che Lisp & company sono sicuramente meno immediati.
Credo che la programmazione funzionale nasca dall’esigenza di sintesi, di produzione (almeno teoricamente) di qualità in tempi commerciali ristretti.
L’idea di usare diversi paradigmi per uno stesso programma è già realtà in parte. Infatti un progetto esteso, ad esempio nell’ambito scientifico, è per sua natura suddiviso in varie componenti le quali possono essere pensate e programmate in linguaggi diversi… e quindi anche in paradigmi diversi.
Ma nell’ambito di uno stesso modulo, credo sia difficile attuare un’idea del genere. Non tanto per la difficoltà tra i vari paradigmi di interfacciarsi (quindi non tecnicamente impossibile), ma per i programmatori che potrebbero ritrovarsi in piena confusione dovendo pensare contemporaneamente allo stesso programma (anzi allo stesso modulo) in modalità e nature completamente diverse.
Auro dice: “…la potenza di un linguaggio di programmazione e del tipo di paradigma, dipende dal campo applicativo…”.
E’ vero, ciascun linguaggio è nato per soddisfare esigenze in un determinato ambito (ristretto o no). Ma se un linguaggio è pensato e fatto “bene”, le sue potenzialità possono essere estese anche al di fuori dei propri confini. Vedasi la tecnologia .NET…
Auro
May 6th, 2008 at 4:27 pm
7assolutamente d’accordo con te codinglife
un vero peccato che i linguaggi funzionali non siano molto diffusi, perchè forse non è diffuso il concetto di pensare al problema in se stesso … con i linguaggi procedurali a volte infatti si parte subito con l’ implementazione … in Lisp invece si è più vicini alla logica del problema, senza preoccuparti di altro, considerando poi che l’unica struttura dati a disposizione è la lista
Luca
May 8th, 2008 at 7:12 pm
8Scusa auro ma che centra linq con i linguaggi funzionali?
Auro
May 8th, 2008 at 8:22 pm
9@Luca
come cosa centra Linq? In Linq possiamo trovare alcune analogie con concetti del paradigma funzionale: per esempio, in entrambi i casi, i linguaggi permettono di sbrigare facilmente l’aspetto implementativo del problema (grazie ad una struttura semplificata, una sintassi potente e mirata), e ciò permette quindi di concentrarsi sulla logica del problema. Si pone l’ accento quindi sulla definizione del problema e della sua risoluzione, piuttosto che sulla specifica di una sequenza di comandi da eseguire.
RSS feed for comments on this post · TrackBack URI
Leave a reply
Categorie
Archivi
Amici
Links
Meta
Ultimi articoli
Ultimi commenti
I più commentati
CriticalSection is proudly powered by WordPress - BloggingPro theme by: Design Disease