Ruby (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Aggiornata ultima versione di Ruby, indicata la versione italiana del sito
LRKalle (discussione | contributi)
Riga 19:
|sito_web = https://www.ruby-lang.org/it/
}}
'''Ruby''' è un [[linguaggio di programmazione]] interpretato [[open source]] completamente a [[Programmazione orientata agli oggetti|oggetti]]. Nato nel [[1993|1995]] come progetto personale del [[giappone]]se [[Yukihiro Matsumoto]] (spesso chiamato semplicemente ''Matz''), Rubyprende èspunto statoda ilaltri primolinguaggi linguaggiocome di[[Perl]], programmazione[[Smalltalk|SmallTalk]], sviluppato in[[Eiffel Oriente a guadagnare abbastanza popolarità da superare la(linguaggio)|Eiffel]], [[barrieraAda linguistica(linguaggio di programmazione)|Ada]] chee separa l'[[informaticaLisp]] nipponicacon dalo quellascopo internazionaledi ebilanciare adcon esserecura usatoi ancheparadigmi indi Occidenteprogrammazione infunzionale progettie diimperativa<ref>{{Cita rilievoweb|url=https://www.ruby-lang.org/en/about/|titolo=About Ruby|sito=www.ruby-lang.org|accesso=2021-07-27}}</ref>.
 
Il successo di [[framework]] come [[Ruby on Rails]] ha aiutato la diffusione di Ruby soprattutto nello sviluppo di [[Applicazione web|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<ref>{{Cita web|url=https://www.tiobe.com/tiobe-index//|titolo=index {{!}} TIOBE - The Software Quality Company|sito=www.tiobe.com|accesso=2021-07-27}}</ref>.
Il linguaggio che ha maggiormente ispirato l'autore è lo [[Smalltalk]]<ref>Fonte: [http://www.infoq.com/articles/smalltalk-comeback-schwartz «''Smalltalk was one big influence on Ruby, and it continues to do so.'' <nowiki>[…]</nowiki>»]</ref>, da cui Ruby ha tratto la maggior parte delle sue caratteristiche. A seguire ci sono il [[Lisp]] (ed in generale i [[Programmazione funzionale|linguaggi funzionali]]), da cui provengono le [[Chiusura (informatica)|chiusure]] (blocchi o ''proc'', in Ruby), e il [[Perl]], per la [[sintassi]] e l'espressività.
 
Il successo di framework innovativi come [[Ruby on Rails]] ha permesso a Ruby di diffondersi soprattutto nello sviluppo di [[Applicazione web|applicazioni web]].
 
== Sistemi operativi ==
Line 40 ⟶ 38:
* [[Android]]
 
Potrebbero esistere port per altri sistemi operativi. Esiste inoltre [[JRuby]], un'implementazione Java [https://www.jruby.org/ dell'interprete].
Esiste inoltre [[JRuby]], un'implementazione Java dell'interprete.
 
== Caratteristiche principali ==
Ruby, pur essendo un linguaggio ad oggetti, presenta alcune caratteristiche tipiche dei [[Paradigma di programmazione|paradigmi]] imperativo e funzionale.
 
Il paradigma ad oggetti di Ruby è puro, come quello di [[Smalltalk]], ossia ogni componente del linguaggio, dalle costanti numeriche alle [[classe (informatica)|classi]], è un [[Oggetto (informatica)|oggetto]], e come tale può possedere [[Metodo (programmazione)|metodi]];. Tuttavia a differenza dei linguaggi come [[C++]] e derivati, tuttavia, gli oggetti in Ruby sono qualcosa di molto più dinamico, in quanto è possibile aggiungere o modificare metodi ain [[run-time]]. Perciò Il ''[[Tipo di dato|tipo]]'' di un oggetto, perciò, non è definito tanto dalla classe che lo ha [[Istanza (informatica)|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 dato|tipo]] di questi (come accade in [[C++]] e altri linguaggi [[tipizzazione statica|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), e che consentono di sostituire i cicli espliciti, frequenti nei linguaggi a basso livello, con l'utilizzo di ''iteratori'', nascondendocelando così al chiamanteall'esterno i meccanismi interni del ciclo in questione.
 
== Esempi ==
=== Hello world ===
Il seguente esempio stampascrive sul terminale di output il testo "[[Hello world]]".
 
<syntaxhighlight lang="ruby">
Line 61 ⟶ 58:
 
=== Classi e metodi ===
Ecco un programma semanticamente identico al precedente, ma che si avvale del paradigma ada oggetti di Ruby.
 
<syntaxhighlight lang="ruby">
Line 145 ⟶ 142:
</syntaxhighlight>
 
Notare che nei commenti disposti su più righe, <code>=begin</code> ede <code>=end</code> devono trovarsi all'inizio della riga, senza alcuna [[indentazione]].
 
== Note ==