[ruby-it] Re: GOF Patterns in Ruby

Giovanni Corriga giovanni a corriga.net
Sab 3 Feb 2007 15:37:41 CET


Il giorno ven, 02/02/2007 alle 20.51 +0000, gabriele renzi ha scritto:
> --- ugol <u.landini a pronetics.it> wrote:
> 
> > Chiaro Scuro wrote:
> > 
> > > ma non trovi che molti pattern 'classici'
> > evaporino in ruby? tanti di 
> > > quei
> > > pattern ad esempio servono per aggirare i limiti
> > di un linguaggio 
> > > statically
> > > typed.
> > 
> > Beh, alcuni pattern potrebbero pure essere obsoleti,
> > ma non certo 
> > pensati per linguaggi statically typed: il libro
> > contiene sia 
> > implementazioni C++ che Smalltalk!
> 
> -1, anche se lo dico dopo 5 bottiglie di vodka a
> cracovia e giusto per spirito polemico.. 
> I pattern imo non sono mai obsoleti, imho. ma va detto
> che non sonoi sempre necessari. 
> Invito i lettori a cercare su internet "design pattern
> in dynamic languages" di peter norvig (o qualcosa del
> genere, google aiutera'). 
> 
> In praTICA IL succo e' che alcuni pattern sono
> non-pattern in linguaggi di "livello superiore",
> qualsiasi cosa esso significhi. if-then-else in
> assembly e' un pattern, perche' non e' esprimibile con
> le istruzioni della maggior parte delle cpu, ma e'
> comunque uno schema che viene ripetuto spessissimo.
>  Ma in C o in qualsiasi linguaggio di alto livello,
> non ha alcun senso parlare di "pattern per le
> condizioni ternarie", perchE' esiste gia' come parte
> del linguaggio. 
> 
> Ruby fino ad un certo punto permette di raggiungere
> livelli di astrazione che trasformano un pattern in
> una libreria (i.e. forwardable o singleton), e quindi
> permettono di fattorizzare anche un qualcosa di
> ripetitivo in una libreria, fatto che probabilmente
> dice qualcosa a proposito dell'espressivita' del
> linguaggio. 
> Ovviamente lisp ed altri linguaggi permettono di
> raggiungere livelli di astrazione anche piu' alti
> (giovanni, lo so che Smalltalk permette di raggiungere
> questi livelli ma non lo dico perchE' la mia
> impressione e' che generalmente non si faccia).

Generalmente no, perché il livello del linguaggio e della libreria è
sufficientemente elevato. Però quando serve lo si fa.

> Ad ogni modo, la mia opionione e' che i pattern non
> siano mai inutili in assoluto, per la semplice ragione
> che rappresentano stili di codice che sono stati visti
> molte volte in azione (a differenza ad esempio del
> "borg nonpattern" di alex martelli in python che
> risolve gli stessi problemi del singleton ma e' stato
> creato a tavolino, e non estratto da ambienti di
> produzione).
>  Al massimo alcuni pattern sono impliciti nel
> linguaggio o nella libreria. 

Più che altro certi pattern diventano talmente integrati nel linguaggio
o nella libreria che diventano degli standard: non più una soluzione tra
tante possibili, ma _la_ soluzione.

	Giovanni



Maggiori informazioni sulla lista Ml