El Cau del Hˆcker
Pautes i modismes
Quan
buscava un tema tesi vaig trobar-me un llibre que semblava perfecte per un
estudiant en busca d'una aplicaci— de sistemes experts (era la moda, allˆ pels
principis dels 80). El llibre es deia, i es diu, Un llenguatge de pautes ("A pattern language. Towns.
Buildings. Construction", Oxford University Press), era escrit per un
arquitecte (Christopher Alexander i tambŽ uns col.laboradors) i contenia un
munt de coneixements sobre arquitectura, sistematitzats en un conjunt de pautes
(patterns). No
vaig trobar cap arquitecte interessat en el tema i vaig passar a un altre cosa,
per˜ la meva sorpresa va ser, uns deu anys mes tard, trobar que les idees d'en
C. Alexander havien trobat caliu a les actes de congressos sobre programaci—
orientada a objectes. Avui dia, les pautes de disseny (design patterns), que Žs el nom que han adoptat en el
m—n de la metodologia per al disseny i reœs de programes, ja s—n al mainstream de la informˆtica comercial: IBM tŽ
una srie de Bussiness Patterns
disponibles. TambŽ val a dir que alguns dels proponents mŽs coneguts treballen
ara per IBM i els autors del llibre mŽs dif—s Ñla "banda dels
quatre"Ñhan rebut el premi "1998 Excellence in Programming
Award" del Dr. Dobbs Journal.
Per cert que la "banda dels quatre" s—n E. Gamma, R. Helm, J.
Vlissides, i R Johnson, i el llibre Žs Design Patterns: Elements of reusable
object-oriented software (Addison
Wesley 1995).
Qu
son les pautes (o patrons) que han pogut fer un viatge que comena a
l'arquitectura i l'urbanisme per acabar en metodologia de la programaci—? Les
pautes expressen la relaci— entre contexts d'œs, problemes recurrents, i
solucions provades. A mŽs, en abstracte, ja podem veure que l'arquitectura i la
programaci— son casos d'un problema que podem anomenar "disseny" de
dispositius molt complexos. El paral.lelisme va mŽs enllˆ i potser un
recorregut geneal˜gic ens pot ajudar. C. Alexander Žs un arquitecte de formaci—
matemˆticaÑa mŽs de ser artista, col.leccionista de catifes turques i contractista
autoritzat. La seva insatisfacci— amb els mtodes contemporanis de
l'arquitectura li fa dir que fracassen en fer productes que satisfacin els vers
requeriments dels individus i la societat, que fracassen a satisfer les
demandes autntiques dels usuaris finals, i sobretot que fracassen en els
requisit essencial del disseny i l'enginyeria: millorar la condici— humana. Em
sembla que una gran majoria d'usuaris de l'arquitectura pot estar d'acord amb
aquest diagn˜stic, per˜ si hem de ser sincers tambŽ n'Žs aplicable al disseny
de software.
La
proposta de d'Alexander Žs una alternativa a l'œs de models i components estandarditzats,
on s'emfasitze l'œs adaptatiu, obert i auto-reflexiu d'uns components
abstractes, les pautes. El llibre (esmentat abans i que abreujarŽ com Patterns) contŽ 253 descripcions de pautes,
que van des de com organitzar barris, fins on posar veles, passant per la
distribuci— interna de les cases. Una pauta ha d'encapsular i interrelacionar
l'espai de problemes,
l'espai de solucions,
i l'espai de les construccions d'una
manera planera i entenedora. Les pautes tenen cinc parts: nom, exemple,
context, problema i soluci—. El nom Žs una descripci— curta i indicativa de la
soluci—: Alcoves, Entrada principal, Carrers paral.lels, etc. A tall d'exemple
utilitzarŽ la pauta "159.
Llum a dues bandes de cada habitaci—". Aqu’ l'exemple son dues fotos
d'habitacions il.luminades respectivament per una banda i per dues bandes. El
context diu: "Quan poden escollir, les persones graviten sempre cap a les
habitacions que reben llum per dues bandes i abandonen les il.luminades per una
banda". El problema descriu certs estudis emp’rics que s'han fet sobre els
tipus d'il.luminacio i les conseqŸncies individuals i socials. Finalment
descriu la soluci— i destaca que en edificis petits Žs fˆcil de fer, i en
edificis grans l'œnic que cal Žs fer el contrari d'una faana plana: una faana
que es trenqui en petites cantonades i eixides per poder tenir finestres a
diferents angles. La soluci— final es resumeix aix’: "Situa cada habitaci—
de manera que limiti amb l'espai exterior almenys per dues bandes, i obra-hi
finestres per tal que la llum natural hi entri per mŽs d'una direcci—".
L'art de l'arquitecte estˆ en saber conjuminar tots aquestes pautes en un
disseny que satisfaci els requeriments socials i individuals a mŽs dels
esttics del dissenyador i els econ˜mics del constructor.
Directament
inspirats per aquesta proposta, Ward Cunningham i Kent Beck desenvoluparen un
petit llenguatge de pautes per Smalltalk. Aquest treball es va presentar al
congrŽs OOPSLA'87, i avui dia Žs a l'abast a [http://www.c2.com/doc/].
Altres autors, a partir d'aqu’, varen comenar a recollir i publicar pautes i
modismes en la programaci— orientada a objectes. Per cert, Kent Beck ha
publicat un llibre el 1996, Smalltalk Best Practice Patterns, i en el quadre
1 podeu veure'n una
pauta que s'inclou.
Richard
Helm i Erich Gamma es van conixer al OOPSLA'90, a la sessi— "Towards an
Architecture Handbook", i van adonar-se que tenien una visi— semblant del
software reusable i que calia una col.leci— definitiva de bones pautes de
disseny de software. Juntament amb Vlissides i Johnson varen publicar el 1995 Design
Patterns, llibre que
rˆpidament va esdevenir un clˆssic, tot venent 100.000 c˜pies des d'enˆ. TambŽ
hi ha congressos internacionals, els PLoP (Pattern Languages of Programs), que
podeu trobar a <http://st-www.cs.uiuc.edu/~berczuk/PLoP98/>. MŽs informaci— sobre pautes la podeu
trobar a la Patterns Home Page <http://hillside.net/patterns/>.
Per
acabar, m'agradaria mencionar la primera pauta de C. Alexander al Patterns, que tracta com tota la primera part
de l'urbanisme i l'ecologia. La pauta s'anomena "1. Regions
independents", i recomana: "Feu tots els possibles per establir un
govern mundial amb mil regions independents, en substituci— dels pa•sos".
La recomanaci— mŽs extensa diu aix’: "Treballa en favor que sigui possible
una evoluci— cap a regions independents en el m—n; cadascuna amb una poblaci—
entre 2 i 10 milions d'habitants; cadascuna amb unes fronteres naturals i
geogrˆfiques pr˜pies; cadascuna amb una economia pr˜pia; cadascuna aut˜noma i
dotada d'autogovern; cadascuna amb un esc— en el govern mundial, sense el poder
intermediari d'estats o pa•sos mŽs grans". La justificaci—, si us
interessa, es basa en estudis regionals d'associacions i persones del moviment
europeista, en el fet que les Nacions Unides tindrien aix’ uns 1000 diputats, i
en la pauta "8. Mosaic de subcultures". Si en voleu saber mŽs, haureu
de comprar-vos el llibre: en castellˆ el publica Gustavo Gili. Per acabar, qu
em dieu, Catalunya o Pa•sos Catalans?
_______________________________________________________________________
Quadre
1
Smalltalk
Best Practice Patterns, 1/e
Kent
Beck, Boulder Creek, CA
Published
October, 1996 by Prentice Hall Professional
Technical
Reference
[NB:
Aquesta informaci— Žs un resum del prefaci, que estˆ a l'abast pœblic a
http://www.prenhall.com/ptrbooks/preface/ptr_pref_013476904x.html]
El
llibre contŽ 92 pautes, i cada pauta presenta: un problema quotidiˆ recurrent
en programaci—; els tradeoffs que afecten a les solucions del problema; i una
recepta concreta per a crear una soluci— al problema.
Per
exemple , aquest Žs un resum d'una pauta anomenada El Rol Suggereix el Nom de
Variables Temporals
Problema: Quin nom li dones a una variable
temporal en Smalltalk?
Tradeoffs:
Vols incloure molta
informaci— en el nom. Vols que el nom sigui curt, fˆcil de teclejar, i que no
posi dificultats al seu formatatge. No vols informaci— redundant en el nom.
Vols comunicar perqu existeix la variable. Vols comunicar el tipus de la
variable (i.e. quin missatge se li envia).
Soluci—:
Nomenar la variable
segons el rol que hi juga. El tipus pot inferir-se del context, i per aix˜ no
cal que sigui part del nom.
En
el llibre, una pauta ocupa una o dues pˆgines, incloent-hi exemples i
contraexemples en Smalltalk. cada pauta estˆ tambŽ relacionada amb altres
pautes rellevants. Les pautes no funcionen isoladament, sin— plegades dirigint
el programador de problemes grans a petits, i totes conjuntament formen un
llenguatge o sistema.
Doors
of Perception
http://www.mediamatic.nl/Doors/Doors.html
Doors of
Perception
is
a long-term investigation of interactivity and design at the
Netherlands Design Institute in Amsterdam. The Doors of Perception annual conference is co-produced by the
Institute and Mediamatic.
About
Christopher Alexander
Christopher Alexander is the author of
among others The Timeless Way of Building (Oxford University Press, New York,
1979) and A Pattern Language: Towns, Buildings, Construction (Oxford University
Press, New York, 1977). He and his colleagues at the Center for Environmental
Structure have published a major statement in the form of these books which, in
their words, 'lays the basis for an entirely new approach to architecture,
building and planning, which will replace existing ideas and practices
entirely'. At the core of his books is the idea that people should design
houses, streets, and communities for themselves. This idea may imply a radical
transformation of the architectural profession, but it emerges quite simply
from the observation that most of the wonderful places of the world were not
made by architects but by the people.