O'CamlCaml è un linguaggio di programmazione che discende dalla famiglia dei Meta Linguaggi
ML che venne sviluppato da
INRIA (Institut National de Recherche en Informatique) in pratica l'istituto nazionale di ricerca per l'informatica francese negli anni 1985-1990. Successivamente cambiò in
O'Caml dopo l'incorporazione di un nuovo modulo.
E' un linguaggio general-purpose, imperativo ed orientato agli oggetti. Anch'esso è dotato di una gerarchia di classi già pronte che permettono la costruzione di programmi molto estesi come numero di righe di codice e dall'architettura e la modellazione complessa. E' consigliato a programmatori di esperienza.
Il linguaggio come già detto è corredato da un set di classi che permettono di fare calcoli aritmetici particolari, multi-threading e delle librerie per costruire un'interfaccia grafica (GUI). Inoltre ci sono anche un debugger e un profiler.
Può anche essere interfacciato con altri programmi scritti in altri linguaggi come il C.
Microsoft F#Dopo questa breve introduzione su O'Caml quindi possiamo anche parlare un po' di questo sconosciuto.
F# è in pratica un subset, un sottoinsieme di O'Caml, ed è un'implementazione del nucleo del linguaggio O'Caml orientata chiaramente al .NET Framework.
Microsoft tenterà quindi di integrare i linguaggi già esistenti come C# e VB.NET in modo da garantire anche un interoperabilità con il nuovo F#. In pratica tutti i tipi e i valori di un programma F# saranno anche accessibili dai classici linguaggi .NET.
Perchè un nuovo linguaggio ?Linguaggi imperativi come C e Java non permettevano un buono sviluppo delle applicazioni perchè avevano carente supporto per l'astrazione e per la gestione dei dati, quindi strutture dati avanzate, infatti proprio il C++ veniva in aiuto fornendo alcune caratteristiche nuove ed importanti come le classi, ereditarietà, polimorfismo, overloading e via di seguito.
I linguaggi seguenti come Java e C# nonostante fossero strong-typed e quindi avendo una gerarchia di classi ben definita, però creavano un po' di confusione a causa dei numerosi costruttori delle classi, metodi, ecc. e quindi per il programmatore era ed è più complicato decidere che strada seguire per modellare la sua applicazione.
In compenso per svolgere compiti semplici (nonostante con C# sia migliorato di parecchio) erano e sono necessarie molte istruzioni.
Al contrario un linguaggio come Caml e quindi F# offrono un set di istruzioni molto limitato in modo da scrivere programmi molto concisi senza però rinunciare ad architetture complesse e a performance elevate.
Sarà possibile compilare il codice in bytecode O'Caml, in O'Caml nativo o direttamente in F#. Con F# si potrà avere accesso, se sarà necessario, anche alle librerie del .NET Framework. Microsoft ha già reso disponibile una versione beta del compilatore F#.
Un esempio di codice F#
open System
open System.Windows.Forms
let form = new Form()
let _ = form.Text <- "1st F# App"
let menu = form.Menu <- new MainMenu()
let mnuFile = form.Menu.MenuItems.Add("&File")
let mnuiSayHelloI = new MenuItem("&Say Hello", new EventHandler(fun sender e -> form.Text <- "Hello"), Shortcut.CtrlH)
let mnuiSayHello = mnuFile.MenuItems.Add(mnuiSayHelloI)
let _ = Application.Run(form)
Solamente con
9 istruzioni è possibile costruire una finestra WinForm completa di menù come rappresentato qui di seguito:
Il programma in esecuzione