Traduzione Testimonial Ruby

Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina


loop: Ho finito la traduzione, ci sono un paio di punti di cui non sono convinto

Ciao a tutti,

Volevo presentarmi alla lista raccontando una piccola success story che mi e’ capitata recentemente con ruby e RoR in particolare. So’ che alcuni dei frequentatori di questa lista vengono da java, quindi spero di non innescare una flamewar tendente alla guerra santa, anche se probabilmente sarei pronto a sostenerla per difendere ruby e rails ;)

Hi Guys,

I am new to the list and I am going to introduce myself by telling you a small success story with Ruby and RoR.

I know that some of you guys come from the java world and I will try to not start a flamewar or a language jihad here.. although I would be ready to fight hard for the honour of ruby and rails :-)

E’sorta l’esigenza di sviluppare una applicazione web. Senza entrare nel dettaglio, e’ una specie di forum dove non si possono cancellare i post, e dove si possono “votare” i post esistenti.

At one point we needed to develop a web app. I am not going to give you all the details, but let it suffice to say that it was a kind of forum where posts could not be deleted and where existing posts could get voted (N.D.T: Digg?! :-) (N.d.A.: Not quite, because the stuff that is going to be commented on and voted is part of a longish text, not all of which is open for discussion)

Per policy aziendale si e’ deciso che doveva essere una applicazione J2EE. Sono stati noleggiati dei consulenti senior, e l’architetto (senior anche lui) ha determinato che per realizzare questa applicazione si sarebbero usati struts e hibernate. Quindi e’ stato previsto un tempo di sviluppo di circa 150/200 giorni/uomo;

A me e’ sembrato un sacco di tempo!

It was a given that it had to be a J2EE app, due to company policy. We rented out a bunch of senior consultants and the architect (senior, too) decided that structs and hibernate would have been the key implementation technologies. The estimated development time was floating around 150/200 man-days.

That’s an awful amount of time, if you ask me!

Abbiamo iniziato a scrivere della documentazione molto dettagliata su come l’applicazione doveva comportarsi, e abbiamo fatto dei pallosissimi mock up HTML di ogni maledetta pagina.

We started writing up very detailed specifications on the required application behaviour, and we sketched dead boring HTML mock ups for every damn page.

A me questi mock up dettagliatissimi sembravano una perdita di tempo, dicevo: “e poi se dobbiamo cambiare qualcosa? essendo .html, se cambiamo il layout dobbiamo rifare 30 files!”... mentre i seniores dicevano che con Java si fa cosi’...

All these hyper-detailed mock-ups felt as a waste of time to me and I kept hinting: “what if we have to change something later on? It’s html.. if we change the layout we will have to tweak 30 files!”. The senior guys just replied that “that’s the way things are done in Java” ...

A questo punto ho deciso che mi ero stufato di discutere con chi si mostrava solo rigido, e che era ora di fare davvero qualcosa con RoR; Avevo conosciuto ruby di sfuggita, ovvero leggendo qualcosa sull’argomento, ma senza svilupparci niente.

At that point I decided that enough was enough and that there was no point in trying to talk them into a different approach. It was time to unleash RoR.

I didn’t really know Ruby at the time, as I had just glanced at it, without ever doing any development.

Il poco che avevo visto mi era piaciuto; Partivo molto ben disposto dato che adoro i linguaggi fortemente dinamici (dopo un inizio classico con il C, mi sono poi dedicato assiduamente al perl, amo il lisp e penso che Alan Kay sia un Dio), mentre trovo che lo strong typing alla java sia un impedimento all’eleganza…il tipo di cosa che puo’ piacere solo alle persone noiose, e infine perche’ se i pragmatic programmers ritenevano ruby cosi’ bello ci doveva essere un fondo di verita’.

The things I had seen so far were intriguing; I probably started whith a good mindset since I prefer dynamic languages (After a “classic” start on C, I soon got deeper whith perl, I love lisp and I think Alan Kay is God); on the other hand, I find strong, java-like typing to be an obstacle to elegance…the sort of stuff that boring people may like, and finally because if the Pragmatic Programmers found Ruby so nice, there had to be some truth within.

Mi leggo buona parte di “Agile web development with Rails” (si legge molto bene e lo consiglio a tutti!) in circa cinque giorni.

I spent about 5 days reading most of “Agile web development with Rails” (A very nice read indeed, I suggest everybody to give it a try).

Dopodiche sviluppo le parti salienti (direi il 90%) dell’applicazione in quattro giorni e mezzo (intensi, ma dormendo la notte).

Afterward, I code the relevant parts of the application (90% I’d say) in four and a half days (intense, but still sleeping at night)

La mia versione RoR servira’ come prototipo, dato che la policy aziendale per ora non contempla null’altro che java, tomcat e J2EE. Fino ad ora, quando leggevo che sviluppare con RoR era di un ordine di grandezza piu’ rapido di qualsiasi altro sistema, restavo un po’ scettico; Adesso ho un termine di paragone reale con J2EE & Struts e lo ho trovato assolutamente, limpidamente verissimo.

My RoR version is going to be used as a prototype, since company policy dictates sticking to J2EE and tomcat. So far, when I stumbled into claims about RoR being an order of magnitude faster than any other system, I was rather skeptical; Now I have a real benchmark whith J2EE/Struts/Hibernate and I found the claim absolutely, positively true.

In effetti la situazione non e’ cosi’ semplice, nel senso che il merito non e’ solo di Rails ma anche del fatto di avere impiegato una metodologia agile; Questi consulenti saranno anche stati senior, ma non hanno minimamente compreso l’importanza di non ripetersi mai, e quindi si ritrovano a ripetersi parecchio (anzi, continuamente!). Fare una analisi funzionale di dettaglio che porta via una settimana non ha senso se il cliente cambia idea ad ogni incontro; Per converso e’ vero che se l’ambiente di sviluppo ti permette di scrivere codice funzionante alla stessa velocita’ con cui scriversti la documentazione, invece di fargli vedere un mock up gli fai vedere l’applicazione ;)

Actually, the comparison is not so simple, since the time saved was not only due to Rails, but also due to having used a more agile style; Those cunsultants may well be senior ones, but they were very far from understanding the importance of not repeating themselves, and so they found themselves doing it over and over. Doing a detailed functional analysis that takes a week is not going to help much if the customer changes his mind at every meeting; On the other hand, if your environment allows you to write working code at the same speed at which you’d write the docs, you go and show the real app as it’s progressing instead of showing mock-ups.

Rifare lo stesso sistema con Struts (che per fortuna non conoscevo) si sta’ rivelando molto istruttivo. La sensazione e’ quella di strisciare dopo aver imparato a volare. L’insieme di cose da sapere per poter scrivere una applicazione e’ enorme, probabilmente ci vuole almeno un anno di esperienza prima di fare qualcosa di vagamente soddisfacente. La cosa che trovo davvero degradante di struts e’ quanto il modello sia distante dal resto della applicazione, non nel senso che questo e’ disaccoppiato da questa, ma nel senso che l’accoppiamento va fatto a mano! Se ho un campo email come proprieta’ dell’utente, questo me lo devo scrivere: nello script di creazione del database, nel file di mapping di hibernate, nel bean del modello, in struts-config.xml e in validation.xml … vorrei sapere che cosa si erano presi questi che hanno continuato ad aggiungere livello su livello, senza che gli venisse in mente di rendere tutto cio’ un insieme coerente.

Doing the same thing over whith Struts (which I was lucky enough not to have known before) is proving very instructive. It feels like crawling (No, strisciare non e’ “to crawl”...ma adesso non mi viene in mente!) after having learnt how to fly. The amount of stuff you have to know in order to write an app is huge, it would probably take a year of expertise before tollerable code is produced. The most degrading thing I found is how far the model is from the rest of the code, not in the sense that it’s decoupled, but rather that you have to do the coupling by hand! Suppose I have an “email” property of a user; This thing has to be placed:

I can’t help wondering… what were those guys on when they started adding layers and layers on top of each other, without thinking about how to make it a single, coherent thing?

E’ difficile comparare due linguaggi in assoluto ed in astratto, credo che possano esistere dei contesti in cui java e’ preferibile, ma per quanto riguarda le applicazioni web, struts e’ preistorico, bisogna scrivere 20 volte piu’ codice, ed e’ un codice parecchio piu’ complesso da vedere e debuggare. Mi ha anche stupito moltissimo il fatto che almeno due dei tre consulenti senior non hanno provato il piu’ piccolo interesse per il mio prototipo; come se consegnare software 30 volte piu’ rapidamente non fosse rilevante… ma si sa’, i programmatori sono piuttosto arroganti per natura ;) ...ho anche pensato che l’abitudine a struts li abbia portati a considerare la programmazione come sofferenza, dove per uscirne puri ci si deve sottoporre ad una ordalia di cose indicibilmente scomode, macchinose e soprattutto noiose! io per quanto mi riguarda ho scelto abbondantemente: per me la programmazione e’ divertimento, ricerca, soddisfazione, ed un pizzico di magia. E il mio ambiente preferito e’ RoR!

It is certainly hard to compare two languages in abstract and absolute terms, I do believe there may be contexts in which java is just better, but as far as web applications go, I believe struts to be jurassic, there’s 20 times more code to write, and it’s a lot uglier and harder to debug and learn. I was also rather surprised at the fact that 2 out of three of those senior java consultants didn’t show the slightest interest in my prototype, as if delivering software 30 times quicker was not relevant… but it’s a proven fact that programmers are rather arrogant by their very nature ;) I also figured out that having mastered their environment (and only that) may have led them to think that programming has to be suffering (N.d.A: non sono sicuro!), so that in order to come out purest, they have to undergo a long series of extremely hard, unpleasant and above all boring things! As for me, I have abundantly chosen: to me programming is fun, searching, satisfaction and a bit of magic. And my favourite environment is now RoR.

Luca “loop” de Marinis

— “A language that doesn’t affect the way you think about programming, is not worth knowing”. (Alan Perlis)

Updated on June 06, 2006 23:32 by Ruby Fan (87.4.216.123)