software.wikisort.org - Linguaggio

Search / Calendar

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[3].

Ruby
linguaggio di programmazione
AutoreYukihiro Matsumoto
Data di origine1995; 27 anni fa[1]
Ultima versione3.1.3 (24 novembre 2022)[2]
Utilizzogenerico, scripting
Paradigmiorientato agli oggetti
Tipizzazioneduck, dynamic
Estensioni comunirb e rbw
Influenzato daLisp, Smalltalk, Perl
Implementazione di riferimento
Sistema operativoMultipiattaforma
Linguaen
LicenzaGNU General Public License
Sito webwww.ruby-lang.org/it/

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[4].


Sistemi operativi


L'interprete di Ruby è disponibile per i seguenti sistemi operativi:

Potrebbero esistere port per altri sistemi operativi. Esiste inoltre JRuby, un'implementazione Java dell'interprete.


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.


Esempi



Hello world


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

puts "Hello World"

Classi e metodi


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

class Greeter
  attr_reader :recipient
  def initialize(recipient)
    @recipient = recipient
  end
  def greet
    puts "Hello #{recipient}"
  end
end

greeter = Greeter.new("world")
greeter.greet

Duck typing


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

def text_of(widget)
  if widget.respond_to? :caption
    widget.caption
  elsif widget.respond_to? :text
    widget.text
  else
    raise "no text associated to widget #{widget}"
  end
end

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,

5.times do
  puts "Hello world"
end

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.

class Integer
  def times_header_and_footer
    puts "-- BEGIN --"
    times do
      yield
    end
    puts "-- END --"
  end
end

5.times_header_and_footer do
  puts "Hello world"
end

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

# Questo è un commento

=begin
   Questo è
   un commento
   su più righe
=end

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


Note


  1. ruby-lang.org, https://www.ruby-lang.org/en/about/.
  2. "Ruby 3.1.3 Released", su ruby-lang.org.
  3. About Ruby, su www.ruby-lang.org. URL consultato il 27 luglio 2021.
  4. index | TIOBE - The Software Quality Company, su www.tiobe.com. URL consultato il 27 luglio 2021.

Voci correlate



Altri progetti



Collegamenti esterni


Controllo di autoritàLCCN (EN) sh00000128 · GND (DE) 4653817-3 · BNE (ES) XX4424926 (data) · BNF (FR) cb144105976 (data) · J9U (EN, HE) 987007290697005171
Portale Informatica
Portale Software libero

На других языках


[fr] Ruby

Ruby est un langage de programmation libre. Il est interprété, orienté objet et multi-paradigme. Le langage a été standardisé au Japon en 2011 (JIS X 3017:2011)[5], et en 2012 par l'Organisation internationale de normalisation (ISO 30170:2012)[6].
- [it] Ruby (linguaggio di programmazione)

[ru] Ruby

Ruby (англ. ruby — рубин, произносится ['ru:bɪ] — ру́би) — динамический, рефлективный, интерпретируемый высокоуровневый язык программирования[8][9]. Язык обладает независимой от операционной системы реализацией многопоточности, сильной динамической типизацией, сборщиком мусора и многими другими возможностями.mw-parser-output .ts-Переход img{margin-left:.285714em}[⇨]. По особенностям синтаксиса он близок к языкам Perl и Eiffel, по объектно-ориентированному подходу — к Smalltalk. Также некоторые черты языка взяты из Python, Lisp, Dylan и Клу.



Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.org - проект по пересортировке и дополнению контента Википедии