Kotlin Language

Introduzione

L'azienda di software Jetbrains, avente la propria sede principale a Praga nella Repubblica Ceca, è nota al grande pubblico per l'ottimo ambiente di sviluppo IntelliJIdea e per il plugin ReSharper per Visual Studio, oltre che per altri prodotti. In un prossimo futuro potrebbe essere nota anche per un linguaggio di programmazione, Kotlin, sviluppato dal programmatore Andrey Breslav e dal suo team. Le motivazioni che hanno spinto verso la nascita di un nuovo linguaggio sono state semplicemente espresse nella pagina ufficiale del progetto appena nato:

"We know that the Java programming language has certain limitations and problems that are either impossible or very hard to fix due to backward-compatibility issues. We know that Java is going to stand long, but we believe that the community can benefit from a new statically typed JVM-targeted language free of the legacy trouble and having the features so desperately wanted by the developers".

Quindi, esattamente come avvenuto per altri linguaggi nati più o meno recentemente come Scala, Fantom, Gosu, Groovy(++) o il recentissimo Ceylon, si è cercato di venire incontro ai mugugni che strisciano sotto la comunità Java creando un nuovo strumento che, pur mantenendo runtime e impostazione, non fosse afflitto dai limiti strutturali, dalle verbosità e dalle pesantezze del linguaggio creato oltre 20 anni da Gosling (il famoso "linguaggio per il tostapane", ricordate?) e che risente in modo sempre più fastidioso del peso degli anni. Insomma se Java è, al momento, il linguaggio di programmazione più usato al mondo si è aperta la corsa alla sua successione.... è possibile che il dinamico C#, l'ottimo linguaggio di Microsoft legato alla piattaforma .Net sia in rampa di lancio (magari insieme al redivivo C++) nel breve periodo. Kotlin e gli altri si propongono come candidati di medio / lungo termine... nell'ambito della JVM poi c'è molta animosità in questo senso, molto fermento... una continua evoluzione che vede attualmente Scala, la creatura del tedesco Martin Odersky come competitor più maturo e accreditato, circondato però da molti dubbi relativi alle sue difficoltà intrinseche. In questa arena fa il suo esordio ufficiale, dal 10 gennaio 2012, giorno della prima release pubblica del compilatore, anche Kotlin. Breslav, come altri language developers, ha dichiarato di aver pensato a scrivere da 0 un linguaggio di programmazione perchè nessuno di quelli esistenti, diversi dal già citato Java, si confaceva pienamente alla sua visione di come questo dovrebbe essere. A dire il vero lo dicono tutti quelli che si buttano in un impresa del genere....

Le caratteristiche di questo linguaggio sono puntualmente esprimibili, ne vediamo alcune generiche per sommi capi:
  • è costruito per girare sulla Java Virtual Machine. Breslav non ha escluso in un futuro (remoto) di proporre come target anche .Net mentre Javascript è già una realtà su cui si sta lavorando.
  • Si è ispirato a Java e a Scala al punto tale che che sulla pagina di comparazione con quest'ultimo è scritto " if you are happy with Scala you probably don't need Kotlin" (questo forse ha evitato le feroci contrapposizioni con la combattiva comunità Scala, contrapposizioni esplose invece in occasione della presentazione di Ceylon).
  • è compatibile con Java e con esso può biunivocamente cooperare.
  • ha una tipizzazione di tipo statico
  • supporta l'inferenza di tipo, le chiusure e altre caratteristiche che vedremo
  • è più "sicuro" di Java, nel senso che è disegnato per evitare intere classi di errori, come le famigerate null pointer exceptions.
  • compila almeno velocemente quanto Java
  • dovrà risultare più semplice rispetto a Scala, il termine di paragone più maturo e, come accennato, meno pesante di Java, rispetto al quale sarà libero da problemi di retrocompatibilità.
  • espressività e sobrietà del codice sono altri obiettivi primari.
  • può  interoperare con Java e la le immense librerie disponibili per esso
  • è versatile e potrete creare applicazioni anche per altre piattaforme, come Android.

Come evidenziato, l'epicentro è la JVM e tutto quanto ruota intorno ad essa, almeno per il momento.

Un punto di forza non strettamente legato al linguaggio potrebbe essere la immediata disponibilità di un ambiente di sviluppo come IntelliJIdea a supporto di questo prodotto. I programmatori Java sono abituati all'utilizzo di IDE evoluti per programmare (lo stesso IntelliJIdea, Eclipse, Netbeans) così come chi programma in C# adora Visual Studio, quindi trovare un tool che li supporti fin da principio dovrebbe essere un boost motivazionale importante (tra l'altro ci sarà anche un plugin per Eclipse e, immagino, prima o poi arriverà anche quello per Netbeans). Anche gli sviluppatori di Ceylon ad esempio hanno creato da subito un plugin per Eclipse e chi sviluppa per .Net ha tutto da guadagnare ad interfacciarsi con Visual Studio. La programmazione professionale moderna  non può fare a meno di questi strumenti. Uno dei punti critici di Scala ad esempio è proprio la mancanza di un supporto di alto livello da parte degli IDE (anche se le cose stanno migliorando).

Se Kotlin attechirà nel mondo della programmazione è una domanda al momento senza risposta Per intanto, noi ci possiamo limitare a testare questa risorsa e fare le nostre valutazioni. Ovviamente non si può fare un discorso completo su di un linguaggio che, al momento, è alla versione deve ancora uscire in versione 1.0. Cercherò di dare qualche idea e presentarne qualche concetto di base; ma i capitoli potrebbero essere ancora incompleti e parziali in questa fase o soggetti a future modifiche. Ma ci sarà tempo per allargare il discorso.