Il linguaggio Ruby

Ruby è un linguaggio di programmazione ad oggetti, nato nel 1993 come progetto personale di Yukihiro Matsumoto alias Matz(fonte Wikipedia).

Oltre a prendere spunto da linguaggi di programmazione orientati agli oggetti già esistenti (Smaltalk,Lisp,Perl), il linguaggio è stato creato da Matz con lo scopo di aiutare i programmatori ad essere più produttivi facendo in modo che si possano anche divertire durante lo sviluppo, ma attenzione! questo non vuol dire che Ruby è un linguaggio “giocattolo” rispetto ad altri linguaggi, magari meno divertenti, semplicemente vuol sottolineare che, se gli strumenti del lavoro quotidiano, rendono il lavoro divertente, leggero e con il minor numero di problemi tecnici, il programmatore avrà la mente più libera per pensare alla migliore soluzione oppure alla soluzione più elegante, migliorando di fatto il lavoro svolto.

Grazie al framework web Ruby on Rails, creato da David Heinemeier Hansson, nel corso degli anni Ruby ha avuto una sempre maggiore diffusione, ed ad oggi risulta essere uno dei linguaggi per il web più potente.

L’ecosistema Ruby e Ruby on Rails è talmente ampio che difficilmente preferiamo utilizzare altri strumenti per lo sviluppo di applicazioni web (anche se l’esperienza ci ha portato a conoscere anche PHP, C#, NodeJS, Java, Python); possiamo per esempio (con la versione 5.2 di Ruby on Rails) integrare nativamente librerie javascript dell’ecosistema di Node.js nell’asset pipeline di Ruby on Rails, rendendo disponibile all’applicazione un’enorme biblioteca di librerie javascript già create.

Possiamo utilizzare RJB (Ruby Java Bridge) oppure JRuby per attingere alle librerie Java disponibili (anche in questo caso un numero considerevole), nei casi in cui Java è “onnipotente”, per esempio nei sistemi ISeries di IBM.

Possiamo scegliere di utilizzare in modo del tutto trasparente server di database diversi (Mysql, Postgresql, Microsoft SQL Server, Oracle, IBM DB2, ecc…), senza dover personalizzare od adattare il codice, rendendo quindi l’applicazione indipendente dal database.

Quello che rende Ruby on Rails un framework ben concepito sono le regole, per così dire la dottrina che sta alla base del framework; sviluppare un’applicazione con Ruby on Rails significa ereditare tali regole, di conseguenza, creare un’applicazione ben strutturata, ben organizzata e di conseguenza manutenibile nel corso del tempo.

Uno dei punti della “dottrina” Ruby on Rails che spiccano maggiormente è sicuramente la “convenzione prima della configurazione” dove semplicemente viene spiegato che prima di creare file di configurazione per istruire lo sviluppatore in che modo strutturare il codice, è più importante definire una convenzione di struttura del codice, delle librerie, del funzionamento del framework affinché chiunque metta mano al progetto, se conosce il framework, saprà certamente come orientarsi all’interno del progetto stesso, anche e soprattutto nel caso di progetti di grandi dimensioni sviluppati da altri.

Nel corso degli ultimi 10 anni abbiamo avuto modo di lavorare con Ruby e Ruby on Rails in svariati ambiti: dall’interfacciamento con database di sistemi AS/400, alla realizzazione di servizi API, dallo sviluppo di applicazioni web gestionali, allo sviluppo di siti web ed e-commerce; è tuttavia naturale che per creare sistemi più complessi, non è sufficiente un solo strumento, infatti in molti casi abbiamo accostato strumenti quali NodeJS o RabbitMQ o Redis o Elasticsearch interfacciandoli sempre con successo all’applicazione Ruby on Rails.

Forse non conoscerete molti programmatori Ruby, anzi probabilmente conoscerete più programmatori PHP di programmatori Ruby (ma anche di programmatori C#, Python, Java, Go, Elixir, C, C++, Erlang, Rust, Scala ecc…) però questo non significa che questi altri linguaggi non facciano cose migliori; in altre parole, l’equazione “linguaggio conosciuto dalla cerchia di persone che conosco == migliore linguaggio” non è esattamente vera.

Quello che sicuramente mi sento di affermare è che utilizzare un linguaggio (od un framework) che ha certe caratteristiche intrinseche, rende più facile lo sviluppo di applicazioni rendendo migliore la scrittura, l’architettura, la struttura; applicazioni ben scritte e ben architettate, sono di più facile manutenzione ed aggiornamento, anche da parte di sviluppatori che non hanno seguito lo sviluppo dall’inizio, ma magari lo hanno solo ereditato, con un beneficio in valori assoluti indiscutibile.