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 srie 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 comena 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 mtodes 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 autntiques 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 faana plana: una faana 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 esttics 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 comenar 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 conixer 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.