|
Introduzione Da un certo punto di vista l'idea che sta dietro a questo nuovo linguaggio di programmazione, dal nome abbastanza evocativo, Crystal, sembra geniale nella sua semplicità: definire un linguaggio general purpose adatto anche per applicazioni di sistema, ispirato ad una sintassi semplice e quasi gradevole come quella del linguaggio Ruby, che non rinunci a prestazioni di eccellenza. Lo slogan che campeggia sulla home page del progetto è "Fast as C, sleek as Ruby" e anche "a language for humans and computers". I neofiti gradiranno ma anche chi progetta applicazioni di un certo peso vorrebbe probabilmente concentrarsi sull'idea da portare avanti più che stare attento a intrighi sintattici, anche se quest'ultimo non è quasi mai il problema maggiore, lo riconosco. Unire in un unico strumento efficienza, una buona facilità di apprendimento ed un ampio spettro di utilizzi è quindi l'idea base di questo progetto. Ruby come detto è il modello sintattico prescelto ma la compatibilità con il linguaggio creato nel 1995 da Yukihiro Matsumoto non è tra i target essenziali di Crystal; vi sono delle differenze tra questi due linguaggi e la prima, grande, fondamentale di queste differenze è che Crystal è un linguaggio compilato nativamente per la piattaforma sottostante, quindi non si basa su una virtual machine intermedia. Questo fatto costituisce certamente un vantaggio rispetto a Ruby le cui prestazioni a runtime hanno sovente fatto storcere il naso. Il nostro linguaggio invece è veloce, molto veloce in fase di esecuzione. Il target di Crystal per interfacciarsi col sistema sottostante è la ben nota piattaforma LLVM, sicuramente una garanzia di qualità in senso assoluto, se è vero che il progetto iniziato oltre 20 anni fa nell'Università dell'Illinois è quasi uno standard quando si parla di linguaggi di programmazione. Questo linguaggio è stato influenzato anche da Go ed Erlang. Concentriamoci però adesso sugli aspetti principali di Crystal in maniera un po' schematica:
Attualmente Crystal gira nativamente su Linux e Mac in maniera completa al 100% . In ambito Windows è possibile utilizzare il subsystem garantito da Windows 10 in avanti, oppure installare la versione specifica, al momento in cui scrivo, giugno 2023, il porting sul sistema operativo di casa Microsoft è quasi completo e certamente per le fasi di aprendimento può essere tranquillamente utilizzato, anche perchè il lavoro di sistemazione va avanti. Il suo ecosistema è ancora ridotto, così come le librerie specializzate, ma sembra comunque abbastanza vivace così come in crescita è la sua community che, ovviamente, si avvantaggia dell'interesse di chi già conosce il linguaggio Ruby. Qualcosa si è già mosso anche nell'ambito dei progetti a supporto, tra i framework interessanti orientati allo sviluppo web segnalo: Il sito ufficiale propone naturalmente altre risorse e informazioni. Il successo di progetti come Crystal dipende da tante cose, a volte imperscrutabili ed imprevedibili. Non starò a tediarvi come fanno in molti testi con la lunga storia dell'evoluzione dei linguaggi di programmazione ma è d'obbligo ricordare che attualmente nell'ambito dei linguaggi general purpose c'è parecchio affollamento e anche volendo andare verso la programmazione di sistema a fianco dell'eterna coppia C/C++ strumenti come Go o Rust sembrano decisamente avanti come base di adozione e di sviluppo e supporto e Google sta portando avanti l'interessante progetto Carbon. Insomma, c'è da sgomitare. Questo linguaggio è stato ideato da uno staff che ha come guida Ari Borenszweig con supporto di Manas Tecnology. Personalmente a me piace molto (anche perchè mi piace Ruby che ho adottato a suo tempo) vedremo come evoluiranno le sue vicende.... Per quanto riguarda il costo, siamo messi bene, questo strumento è liberamente fruibile sotto licenza Apache 2.0. Da parte mia, in questi paragrafi mi interesserò in particolare del linguaggio e delle sue caratteristiche sintattiche, almeno nella prima fase. Il target di audience a cui mio rivolgo è principalmente quello dei neofiti e sarò un po' pedante e ripetitivo a volte sui concetti. Non mi soffermerò sulle procedure di installazione ed eventualmente configurazione del compilatore in quanto chiaramente espresse sul sito ufficiale dal quale è peraltro d'obbligo passare per scaricare il materiale necessario. A volte queste procedure cambiano per cui secondo me è uno sforzo inutile descriverle in dettaglio in un ambito come questo. Tenete presente che non sono un docente per cui lo stile di presentazione del materiale potrebbe essere un po' caotico.... Benvenuti in Crystal! |