Crystal Language

Introduzione

Nell'arena dei possibili eredi della fortunata ma complicata coppia C/C++, ovvero nel campo della programmazione di sistema, entra in scena un altro potenziale protagonista il linguaggio Crystal. L'idea base è molto intyeressante in quanto, oltre a promettere, efficenza, velocità e sicurezza, questo linguaggio non ha l'ambizione di creare una nuova sintassi ma dio utilizzare quella chiara, concisa e semplice del linguaggio Ruby, pur non cercando la compatibilità al 100% e pur traendo ispirazione anche da altri strumenti come C#, Python e Go. In questo senso si intuisce subito che il suo apprendimento dovrebbe essere facilitato rispetto a quanto avviene proprio in C/C++ ma anche ad esempio nel nuovissimo Rust, tanto potente quanto complesso al primo impatto. Chi già conosce Ruby sarà avvantaggiato (attenzione però, come già detto, Crystal non è Ruby) ma anche chi non ha ancora apprezzato il linguaggio di Matz non ci metterà molto a mettersi in pari. Vediamo alcune delle caratteristiche più salienti di questo nuovo attore nel mondo della programmazione:

  • Si tratta di un linguaggio compilato, vengono quindi generati degli eseguibili.
  • Come si conviene ad un linguaggio di sistema, la tipizzazione è statica, non dinamica, così che eventuali errori nell'assegnazione dei tipi saranno catturati dal compilatore e non salteranno fuori solo a run-time. Tuttavia è anche supportata l'inferenza di tipo, caratteristica moderna e ormai di moda.
  • Esiste un solido meccanismo di controllo per i tipi nullable.
  • E' supportato un potente sistema di macro per la metaprogrammazione.
  • Vengono adoperati i green threads a supporto della concorrenza
  • E' supportato un comodo sistema di binding con le librerie in C
 La sintassi di Crystal è molto vicina a Ruby ma il backend non è quello delle lente macchine virtuali di quel linguaggio, il target della compilazione è la ben nota infrastruttura nota come LLVM, certamente uno dei progetti di maggior successo e consenso dell'ultimo ventennio nel campo della programmazione. Questo dovrebbe garantire ottime prestazioni, non per nulla lo slogan che campeggia sulla home page di Crystal è "Fast as C, slick as Ruby".

Al momento in cui scrivo, ottobre 2017, il progetto è ancora lontano dalla versione 1.0, è attivamente sviluppato e gira solo su piattaforma Linux (io sto usando Ubuntu 18.04). Il supporto per Windows è comunque in agenda e sicuramente anche il sistema operativo di Microsoft potrà essere utilizzato senza strani trucchi, anche se il percorso da completare è ancora decisamente lungo.

NB. a causa dello stato ancora abbastanza embrionale del linguaggio, inizieremo "per esempi" approfondendo poco per volta il discorso.


Crystal, ideato da Ary Borenszweig con una nutrita comunità di supporto e sviluppato in collaborazione con Manas Technology Solutions è utilizzabile sotto licenza Apache 2.0.

Benvenuti nel mondo di Crystal