title: Fantom (linguaggio di programmazione)
text: # Fantom (linguaggio di programmazione)
  
  Fantom, è un linguaggio di programmazione general purpose, multi-paradigma, open source creato a partire dal 2005 dai fratelli americani Andy e Brian Frank. Questo linguaggio è studiato sia per girare sulla JVM (Java Virtual machine) che costituisce il target principale, sia appoggiandosi ad altri framework. È infatti parzialmente sviluppato il supporto per Microsoft.Net e si pensa di poter in futuro approcciare anche LLVM e Parrot mentre è in grado anche di emettere codice JavaScript per consentire l'esecuzione su browser. Per adottare questa polivalenza i creatori del linguaggio hanno pensato un set di API specifico. Fantom, come filosofia, non si discosta da altri linguaggi moderni ed abbraccia in particolare sia la programmazione a oggetti che la programmazione funzionale La sua sintassi è vicina a quella dei linguaggi attualmente più utilizzati in particolare Java e CSharp allo scopo, evidentemente, di predisporre una curva di apprendimento più dolce. L'installazione standard, effettuabile dopo aver prelevato il software dal sito ufficiale, prevede anche la presenza di una libreria grafica (Fantom Widget Toolkit), di un piccolo editor dedicato (Flux) e di un web server. Fantom adotta una sua nomenclatura peculiare per cui l'equivalente dei namespace di.Net o dei package in ambito Java si chiama Pod, all'interno dei quali troviamo i tipi (classi) a loro volta specificati tramite slot (campi e metodi).
  
  ## Piattaforme supportate
  
  Fantom supporta pienamente al momento la piattaforma Java 2 Runtime Environment (JRE) e in maniera parziale il framework Microsoft.Net. Gira sia su sistema operativo Windows che su Mac e Linux.
  
  ## Hello, World
  
  Il seguente esempio propone il classico "Hello, World!":
  
  ## Caratteristiche del linguaggio
  
  * prevede la tipizzazione statica
  * è possibile utilizzare alcuni aspetti tipici dei linguaggi dinamici tramite chiamate dinamiche e downcasting automatico.
  * supporta la programmazione orientata agli oggetti
  * supporta la programmazione funzionale
  * supporta l'ereditarietà singola con uso dei mixin (interfacce con implementazione)
  * supporta la concorrenza tramite "modello degli attori"
  * può interagire con Java sia pure con qualche limitazione
  * prevede solo interi definiti su 64 bits
  * non prevede i generics, per via della loro complessità ma esistono alcune classi generiche predefinite (Map, Func, List),
  
  ## Evoluzione del nome
  
  Il progetto originale dei fratelli Frank aveva attribuito al linguaggio il nome "Fan". Avendo successivamente raggiunto una certa popolarità, sotto la spinta delle richieste degli utilizzatori, si pensò a un nome che fosse più facile da rintracciare sui motori di ricerca e si decise quindi per Fantom.
  
  