Ruby (linguaggio di programmazione)

Ruby è un linguaggio di programmazione interpretato open source completamente a oggetti. Nato nel 1995 come progetto personale del giapponese Yukihiro Matsumoto (spesso chiamato semplicemente Matz), prende spunto da altri linguaggi come Perl, SmallTalk, Eiffel, Ada e Lisp con lo scopo di…

Ruby è un linguaggio di programmazione interpretato open source completamente a oggetti. Nato nel 1995 come progetto personale del giapponese Yukihiro Matsumoto (spesso chiamato semplicemente Matz), prende spunto da altri linguaggi come Perl, SmallTalk, Eiffel, Ada e Lisp con lo scopo di bilanciare con cura i paradigmi di programmazione funzionale e imperativa.

Il successo di framework come Ruby on Rails ha aiutato la diffusione di Ruby soprattutto nello sviluppo di applicazioni web. Risulta attualmente nei primi dieci posti dei linguaggi maggiormente popolari e utilizzati nel mondo secondo vari indici di misurazione specifica, come per esempio TIOBE.

Sistemi operativi

L'interprete Ruby originale, il Matz's Ruby Interpreter, abbreviato come MRI, è disponibile per i seguenti sistemi operativi:

La maggior parte dei sistemi basati su Unix

DOS

Microsoft Windows 95/98/2000/2003/NT/XP/Vista/7/8/8.1/10

macOS

BeOS

Amiga OS

Acorn RISC OS

OS/2

Syllable

PlayStation Portable

Android

Potrebbero esistere port per altri sistemi operativi.

Ruby MRI è stato sostituito nella versione 1.9 di Ruby da YARV, acronimo di Yet Another Ruby VM.

Oltre alle implementazioni ufficiali, MRI prima, e YARV poi, esistono alternative, come JRuby, implementazione mista in Java e Ruby che gira sulla macchina virtuale Java.

Caratteristiche principali

Ruby, pur essendo un linguaggio ad oggetti, presenta alcune caratteristiche tipiche dei paradigmi imperativo e funzionale.

Il paradigma ad oggetti di Ruby è puro, come quello di Smalltalk, ossia ogni componente del linguaggio, dalle costanti numeriche alle classi, è un oggetto, e come tale può possedere metodi. Tuttavia a differenza dei linguaggi come C++ e derivati gli oggetti in Ruby sono qualcosa di molto più dinamico, in quanto è possibile aggiungere o modificare metodi in run-time. Perciò Il tipo di un oggetto non è definito tanto dalla classe che lo ha istanziato, quanto dall'insieme dei metodi che possiede, o, secondo la terminologia abitualmente utilizzata per i linguaggi stile Smalltalk, dei messaggi a cui sa rispondere.

In Ruby, dunque, è fondamentale il duck typing (dall'inglese if it looks like a duck, and quacks like a duck, it must be a duck: "se sembra un'anatra e fa il verso di un'anatra, dev'essere un'anatra"), ovvero il principio secondo il quale il comportamento di una funzione sui suoi argomenti non deve essere determinato dal tipo di questi (come accade in C++ e altri linguaggi staticamente tipizzati), bensì da quali messaggi essi sono in grado di gestire.

Un'altra caratteristica fondamentale di Ruby è costituita dai cosiddetti blocchi, che sono sostanzialmente delle chiusure (ovvero funzioni dotate di ambiente), che consentono di sostituire i cicli espliciti, frequenti nei linguaggi a basso livello, con l'utilizzo di iteratori, celando all'esterno i meccanismi interni del ciclo in questione.

Hello world

Il seguente esempio scrive sul terminale di output il testo "Hello world".

Classi e metodi

Ecco un programma semanticamente identico al precedente, ma che si avvale del paradigma a oggetti di Ruby.

Duck typing

La funzione definita qui di seguito agisce diversamente a seconda dei messaggi a cui il suo argomento risponde.

Blocchi e iteratori

I cicli in Ruby sono generalmente eseguiti mediante iteratori, a cui viene passato un blocco, sotto forma di codice compreso fra le parole chiave do e end, come illustrato nel seguente esempio,

in cui il metodo times dell'oggetto "numero 5" si preoccupa di eseguire il giusto numero di volte (5, per l'appunto) il codice indicato.

Nella definizione di un iteratore, si usa la parola chiave yield.

Si noti come la classe Integer (una classe predefinita) sia stata riaperta per l'aggiunta di un metodo. L'output dello script è

-- BEGIN --

Hello world

Hello world

Hello world

Hello world

Hello world

-- END --

Commenti

Commenti su riga singola o su più righe

Notare che nei commenti disposti su più righe, =begin e =end devono trovarsi all'inizio della riga, senza alcuna indentazione.

Servizi correlati

Altre voci

G

Google Classroom

Google Classroom è un servizio web gratuito sviluppato da Google, per le scuole e le università, mirante a semplificare la creazione e la distribuzione di materiale didattico, l'assegnazione e la valutazione di compiti online. Lo scopo principale di Google Classroom è quello di semplificare il…

Leggi la voce →
Versioni di AndroidV

Versioni di Android

La prima versione in assoluto del sistema operativo per dispositivi mobili Android fu rilasciata il 5 novembre 2007, anche se era ancora in fase beta. La prima versione commerciale (Android 1.0) venne rilasciata il 23 settembre 2008.

Leggi la voce →
S

Short Message Peer-to-Peer

Il protocollo Short Message Peer-to-Peer (SMPP) è un protocollo aperto, utilizzato nell'industria delle telecomunicazioni, sviluppato per fornire una interfaccia di comunicazione flessibile per il trasferimento di brevi messaggi di testo tra client (anche chiamati External Short Messaging…

Leggi la voce →
Jailbreak (iOS)J

Jailbreak (iOS)

Il jailbreak (letteralmente "evasione") è un termine che indica una procedura che rimuove le restrizioni software imposte da Apple nei dispositivi iOS (iPhone e iPod touch), iPadOS (iPad) e tvOS (Apple TV).

Leggi la voce →
W

Windows Phone

Windows Phone (spesso abbreviato in WP) è stata una famiglia di sistemi operativi per smartphone di Microsoft, presentata per la prima volta al Mobile World Congress il 15 febbraio 2010. Il suo sviluppo come piattaforma attiva per le prime tre versioni è terminato nel 2017, mentre il supporto…

Leggi la voce →
R

Realme

Realme è un'azienda tecnologica cinese specializzata nella produzione di smartphone con sede a Shenzhen, nella provincia del Guangdong. L'obiettivo del brand è rendere accessibile a un ampio numero di consumatori le esperienze d’uso e le tecnologie, compreso il 5G, che generalmente sono…

Leggi la voce →