Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

10 ragioni per imparare Ruby

10 ragioni, esempi compresi, per lasciarvi attrarre dalla programmazione in Ruby.
10 ragioni, esempi compresi, per lasciarvi attrarre dalla programmazione in Ruby.
Link copiato negli appunti

Partiamo con qualcosa di semplice ok? Cosa c'è di meglio di una top ten di motivi per imparare Ruby?

Non sono molto favorevole a questo tipo di post, così come trovo nella norma poco utili gli interventi "meglio questo o quello?", ma le 10 Reasons to Learn Ruby pubblicate su H3RALD (grazie IronRuby) meritano una lettura.

Saltando le ovvietà , personalmente mi sento di essere totalmente d'accordo con #4 – Everything is an object, as it should be.

When I studied Java they taught me that everything is an object.
- “So 14 and 374346.678 are objects then?” - “No, silly, they are numbers!”
In Ruby, numbers, strings, Boolean values et al are objects. Really.

Il vantaggio non è solo concettuale ma anche pratico! Ridefinendo la classe object (sì, lo potete fare anche runtime) aggiungendo un nuovo metodo otterrete che qualsiasi oggetto disporrà  del nuovo metodo, compresi Array, Hash, Numeri e Stringhe!

A proposito della ridefinizione delle classi: #6 – You can alter your environment in any way you like. Devo dire che è uno degli aspetti che più mi fa impazzire (in senso positivo) di Ruby.

Ad esempio, vi serve che ogni oggetto numero implementi una conversione Numero->Piedi?

class Numeric
  def feet
    self*3.2808399
  end
end

Ora, semplicemente potrete chiamare

5.feet #=> Returns 16.4041995

Inizialmente non ne concepivo l'utilità , lo ritenevo un aspetto potenzialmente insicuro. Ma devo dire che l'idea è eccellente per:

  1. Correggere bug di classi altrui senza modificare il codice delle classi. Mi viene in mente ad esempio quando integro in un programma una libreria esterna, spesso via SVN. Modificare il file originale significherebbe avere problemi in futuro con l'upgrade, spesso quindi mi ritrovo a dover creare wrapper per gestire metodi buggati. Con Ruby non più, posso ridefinire runtime il metodo buggato!
  2. Aggiungere funzionalità  ad una classe senza dover creare classi parallele, vedi esempio seguente.

Per darvi un esempio del punto 2, l'altro giorno avevo il problema di dover ottenere il nome del metodo corrente. Mi piace utilizzare a fondo la metaprogrammazione quando possibile!

Purtroppo, Ruby 1.8 fornisce __FILE__ per ottenere il nome del file corrente ma non ha un corrispettivo __METHOD__.

Così, ecco che ho deciso di ridefinire l'oggetto più alto nella gerarchia implementando in Kernel quanto necessario.

module Kernel
    # non lo chiamo __METHOD__ perché sembra che Ruby 1.9
    # fornisca questa nuova caratteristica
    def this_method()
        caller[0]=~/`(.*?)'/
        $1
    end
end
# ora testiamolo
class Test
    def initialize()
    end
    def my_method()
        puts "Called method '#{this_method()}'"
    end
end
t = Test.new()
t.my_method()   #=> Called method 'my_method'

Comodo, vero? E voi, cosa aggiungereste a questa lista?

Ti consigliamo anche