Mirco Veltri

Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina


Ruby – passato, presente e futuro

Tra i linguaggi di programmazione Ruby continua il suo cammino conquistando posizioni nella classifica di gradimento degli utenti, per il suo essere potente, elegante nella sintassi e veloce da scrivere.

Il suo espandersi in occidente è dovuto soprattutto all’ottimo framework, RubyOnRails, sviluppato dal danese David Heinemeier Hansson che ha reso lo sviluppo di applicativi per il web molto più semplice. RoR fornisce una serie di meccanismi automatizzati, di gestione dei test etc che rientrano con molta semplicità nei concetti esposti dalle metodologie “agili” di sviluppo dei software.

Ovviamente le critiche mosse nei confronti di ruby non sono poche, e non solo perchè fino a qualche anno fà era praticamente impossibile trovare documentazione scritta in lingue diverse dal giapponese (fase passata), ma anche perchè l’interprete presentava e presenta ancora oggi, nella versione stabile, delle debolezze, quali:

Le debolezze come detto, sono proprie dell’interprete e non del linguaggio. Di fatti Il team nipponico ha inizialmente concentrato molte delle attenzioni su linguaggio riuscendo a far nascere un linguaggio ben fatto e molto fruibile. L’inteprete può esser reso più veloce e più completo con meno difficoltà. E’ ciò che è stato fatto con il rilascio della versione 1.9, e che si continuerà a fare in attesa dell’uscita della versione 2.0

PRESTAZIONI

Come ripromesso, la versione 1.9 di Ruby è stata rilsciata a disposizione degli sviluppatori e fa già parlare molto di se, specialmente per quanto riguarda le prestazioni che sembrano non essere neanche lontanamente paragonabili a quelle della versione stabile 1.8.6.

Non si parla di migliorie minime. Diversi sono i post a riguardo, tra cui segnalo antoniocangiano . Sembra davvero che sia stato eliminato il motivo di quelle che erano le maggiori critiche mosse nei suo confronti.

La versione 1.9 sembra essere circa 3 volte più veloce del Python, il linguaggio di scripting ideato da Guido Van Rossum nel 1989, anche se Python3000 ha in serbo molte novità.

La nuova versione dell’interprete Ruby (nome in codice Rite) integra il progetto _YARV _(Yet Another Ruby VM), cioè una Virtual Machine sulla stregua di Java, Python e .NET che genera un bytecode. Il bytecode è un codice di livello intermedio tra il codice sorgente ed il codice binario, composto di istruzioni per un processore che provvederà alla esecuzione del codice. E’ un codice più vicino al funzionamento della normale CPU.

I vantaggi offerti dalla presenza di una VM sono diversi, tra questi: – l’interprete è più veloce – il codice del programma viene nascosto – Il codice viene compilato soltanto la prima volta, rendendo così le esecuzioni successive alla prima nettamente più veloci.

INTERNAZIONALIZZAZIONE

Ruby usa correttamente le codifiche UTF8-ASCII, SHIFT_JIS ed EUC_JP. C’è da dire che il nostro linguaggio considera una stringa come una sequenza di byte e non di caratteri. Per capire la differenza con irb scriviamo qualcosa di simile a.

myStr = 'ruby'

myStr[0]

=> 114

Il risultato è del tutto differente da quanto ci aspetteremmo. Il numero 144 corrisponde al byte in prima posizione. E’ quindi richiesta una conoscenza della codifica utilizzata per il carattere, così come una conoscenza delle diverse codifiche. La conoscenza e il supporto delle sole codifiche della famiglia UTF non sono sufficienti. Codifiche non comuni possono essere richieste e quindi l’interprete deve fornire un modo per gestirle.

MULTITHREADING

La versione 1.8.6 di Ruby presenta dei thread molto leggeri e veloci poichè sono thread esistenti nel solo interprete e non nel sistema operativo. Fa eccezione l’I/O che prevede una gestione asincrona.

La presenza di YARV fornisce prestazioni molto superiori a quelle dell’attuale interprete, pur offrendo la retrocompatibilità. Un aspetto molto interessante di tale progetto yarv riguarda la possibilità di far coesistere e girare all’interno di una unica VM più programmi Ruby, fornendo così un supporto per una Multiple VM.

I cambiamenti portati alla luce dalla versione 1.9 riguardano anche molti aspetti “dichiarativi” del linguaggio stesso. Ad esempio, è presente una nuova sintassi per gli hash, oggetti molto utilizzati. Da oggi è possibile dichiarare un hash nel seguente modo

{symbol1: value, symbol2:value}

Sono cambiate le regole di scope dei blocchi, così come la possibilità di modificare una classe esistente e rendere visibili tali cambiamenti solo all’interno di uno specifico blocco. In ogni caso le novità sono diverse e per un elenco consiglio il seguente link: eigenclass Non dimentichiamo una presentazione del creatore di Ruby, Yukihiro Matsumoto, che troviamo all’indirizzo learnruby, così come un altro interessante post di James Edward Gray sul suo blog Shades of Gray getting code ready for Ruby 1.9

Il futuro di Ruby sembra essere roseo se pensiamo che colossi quali Sun, Google ed IBM, tanto per nominarne alcuni, hanno intrapreso una interessante roadmap di utilizzo all’interno dei loro progetti.

un saluto ed un grazie ai ragazzi del canale irc di ruby italia

m.v.

Updated on January 04, 2008 12:55 by Ruby Fan (195.110.138.104)