vai alla Homepage di Apogeonline

 

Cos'è OpenPress


Glossario


Linux-FAQ


Documenti:

Open Source Definition

GNU General Public License

La cattedrale e il bazaar

Colonizzare la noosfera

Il calderone magico


Libri:

Italian crackdown

Open Sources

MediaMorfosi


Risorse


Feedback


vai alla Homepage di Apogeo Editore

Vai alla homepage di OpenPress

Torna al sommario
di Open Sources
Diligenza, pazienza, umiltà
di Larry Wall

Noi appartenenti alla comunità Perl amiamo i proverbi. Uno di questi recita: "non c'è un unico modo di fare le cose". Nel Perl, questo è vero. È vero anche detto del Perl stesso. Ed è vero detto della comunità Open Source, come illustrano i saggi contenuti in questo volume. Non è mia intenzione dirvi tutto su come l'Open Source funziona: sarebbe come cercare di spiegare come funziona la lingua inglese. Qualcosa, però, posso dirvi del Perl e di dove sta andando.

Un altro proverbio: Le tre grandi virtù del programmatore sono la pigrizia, l'impazienza e la tracotanza. I grandi programmatori in Perl le abbracciano tutte e tre, e così gli sviluppatori Open Source. Ma qui, io voglio parlare di altre virtù: diligenza, pazienza e umiltà. Vi paiono virtù opposte? Avete ragione. Se si ritiene impossibile che una singola comunità possa abbracciare valori opposti, si dovrebbe dedicare un po' di tempo al Perl: dopo tutto, non c'è un unico modo di farlo.

I linguaggi scritti probabilmente ebbero origine dall'impazienza. O dalla pigrizia. Quando il linguaggio scritto non esisteva, bisognava incontrarsi faccia a faccia con qualcuno per comunicare, oppure si doveva persuadere una terza persona a trasmettere un messaggio. E l'unico modo di sapere che cosa era stato detto in precedenza era la memoria. Ma il linguaggio scritto dotò gli uomini e le donne di simboli, simboli al posto di cose - se solo la comunità trovava un accordo sul significato di un simbolo. Il linguaggio, quindi, richiede consenso. È un cosa su cui un gruppo può trovare accordo. È, in breve, un simbolo che tiene unita una comunità. Quasi tutti i simboli funzionano così.

Guardiamo dunque qualche simbolo:

Lo si studi attentamente. Si chiama "cerchio". È un bel cerchio, per quanto un cerchio possa essere bello. Molto grazioso. Molto simmetrico. Molto semplice.

Ora, se si è dei riduzionisti, si dirà che è solo un cerchio, nient'altro. Beh, per la verità, se si è davvero dei riduzionisti, si dirà che è solo un mucchio di fotoni, ma non parliamo di questo, perché non getterebbe alcuna luce sulla faccenda.

Se non si è dei riduzionisti, allora il cerchio qui presente non esiste isolato. Esiste in relazione a tante altre cose, e di fatto prende significato da esse. Per capire questo semplice cerchio bisogna capire il suo contesto, cioè capire qualcosa sulla realtà.

Ecco allora un'immagine della realtà.

Lo sappiamo tutti; la realtà è un macello.

Questa può essere immagine di molte cose. Un'immagine di molecole che rimbalzano. Un'immagine dell'economia. Un'immagine delle relazioni fra le persone in questa stanza. Un'immagine dell'aspetto del linguaggio umano tipico. Un'immagine dei sistemi informativi della propria azienda. Un'immagine del World Wide Web. Un'immagine del caos e della complessità.

Di sicuro, è un'immagine di come il Perl è organizzato, dal momento che il Perl è modellato sui linguaggi umani. E la ragione della complessità dei linguaggi umani è che devono confrontarsi con la realtà. Tutti, in un modo o nell'altro, dobbiamo farlo, e così semplifichiamo. Troppo, a volte.

I nostri progenitori semplificavano troppo; si illudevano nel pensiero che Dio creasse solo cerchi e sfere. Pensavano che Dio preferisse sempre la semplicità alla complessità. Quando scoprirono che la realtà era più complicata di quanto credessero, scoparono semplicemente la complessità sotto un tappeto di epicicli. Cioé, crearono complessità non necessaria. Questo punto è importante: l'universo è complesso, ma lo è a ragion veduta.

Abbiamo prove ogni momento del fatto che la gente continua a semplificare troppo. C'è chi preferisce semplificare troppo la propria cosmologia; altri preferiscono semplificare troppo la loro teologia. Molti progettisti di linguaggi per computer semplificano troppo i loro linguaggi e finiscono, ancora, a spingere con la scopa la complessità dell'universo sotto il tappeto del programmatore.

È un tratto della natura umana il cercare figure precise nel rumore, ma, nel ricercare quelle figure, qualche volta ne scorgiamo dove non ce n'è. Questo non significa che non esistano configurazioni nella realtà. Se avessimo una bacchetta magica per sopprimere il rumore, il segnale ne balzerebbe fuori con evidenza. Abracadabra... ecco la forma del Big Bang, e delle stelle, e delle bolle di sapone:

Ecco la forma della dimensionalità, dei cristalli di sale, degli spazi fra gli alberi di un bosco:

Ecco la forma di un formicaio, o di un albero di Natale. O la forma di una trinità:

E, naturalmente, sapendo che le configurazioni esistono, si possono estrarre le figure semplici senza bisogno di ausilii cromatici:

Il nostro cervello è costruito per farlo.

Ora, forse ci si sta chiedendo cosa tutto ciò abbia a che vedere con il Perl. Il fatto è che il cervello è fatto per programmare in Perl. C'è un desiderio ancestrale di volgere la complessità in semplicità, e il Perl non è che uno strumento in più per aiutarci, proprio come io, in questo momento, sto usando la lingua per semplificare la realtà. Posso usare la lingua a questo scopo perché la lingua è disordinata.

È questo un punto essenziale, e un po' arduo da comprendere. La praticità della lingua sta nel suo disordine. Dato che la lingua è disordinata, si adatta bene a mappare lo spazio dei problemi, ch'è pure disordinato, di un disordine che chiamiamo realtà. Analogamente, il Perl fu progettato per essere disordinato (anche se nel modo meno sgradevole possibile).

Questo è poco intuitivo e devo spiegarlo. Se qualcuno ha fatto studi d'ingegneria di qualunque tipo, gli sarà stato ficcato nel cranio che le grandi opere d'ingegneria sono le più semplici. Ci s'insegna ad ammirare i ponti sospesi più degli intricati ponti ferroviari. Ci s'insegna a preferire la semplicità e la bellezza. E questa è una cosa buona: anche a me piacciono i cerchi.

Non sempre, tuttavia, la complessità è il nemico. Non è importante la semplicità o la complessità, ma come le si collega.

Non c'è lavoro che non richieda un certo grado di complessità. Si dice che un razzo Saturn V si componesse di sette milioni di parti, e dovevano funzionare tutte. Questo non è del tutto vero; molte di quelle parti erano ridondanti. Ma quella ridondanza era indispensabile, nel 1969, per raggiungere l'obiettivo di mandare qualcuno sulla Luna. Quindi, se il lavoro di alcune parti di quel razzo era di essere ridondanti, allora ogni parte aveva, di nuovo, un lavoro da svolgere. Tanto per intenderci: anche chi sta lì e aspetta può essere utile.

Ci inganniamo quando diciamo "è ridondante" nel senso di "è inutile". La ridondanza non è sempre "ridondante", si parli di razzi o di linguaggi umani o di linguaggi dei computer. Insomma, la semplicità è spesso la nemica del successo.

Si supponga ch'io voglia impadronirmi del mondo. Semplicità vorrebbe che lo facessi da solo, semplicemente. Ma la realtà della situazione umana dice che avrò bisogno dell'aiuto di ognuno per impadronirmi del mondo, e ognuno è molto complesso. Per me, questa è semplicemente una caratteristica. Le relazioni di ognuno sono anche più complesse. Di solito le considero caratteristiche, ma a volte sono bachi. Possiamo fare il "debugging" della relazioni umane, ma è politica più savia considerare sempre le persone stesse come caratteristiche. La gente si secca quando si cerca di farle il debug.

Abbiamo detto che certa complessità è inutile e altra è utile. Ecco ancora un esempio di complessità utile:

Sono certo che la maggior parte dei lettori abbia un pregiudizio positivo verso i sistemi di scrittura occidentali, e che quindi consideri inutilmente complessi i sistemi a ideogrammi. Magari, questa figura appare complicata come la precedente. Ma, ancora, si tratta di un'equa transazione ingegneristica. In questo caso, i Cinesi hanno barattato la semplicità d'apprendimento con la portabilità (non suona familiare?).

Il Cinese, di fatto, non è una lingua unica; è circa cinque lingue principali, tutte reciprocamente inintelligibili. Non di meno, si può scrivere Cinese in una lingua e leggerlo in un'altra. È quello che io definisco un linguaggio portabile. Optando per un livello più alto di astrazione, il sistema cinese di scrittura è ottimizzato per la comunicazione più che per la semplicità. Ci sono in Cina miliardi di persone che non possono parlare l'una con l'altra, ma che almeno possono passarsi delle note scritte.

Anche i computer si passano delle note, solo che questa pratica è chiamata "networking".

Molta della mia riflessione in quest'ultimo anno è stata influenzata dal lavoro fatto con l'Unicode e con l'XML. Dieci anni fa, il Perl era un buon sistema per la gestione del testo. Ora è anche meglio, ferma restando la vecchia definizione di testo. Ma la definizione di "testo" è cambiata, negli ultimi dieci anni, sotto i piedi di Perl.

Si può darne la colpa a Internet.

Quando si fa clic su un bottone del browser, sembra che i computer vogliano passarsi delle note fra loro. E le vogliono passare al di là di barriere culturali. Proprio come noi vogliamo capire quello che compare sullo schermo, così il computer vuole capire che cosa sta per comparire: perché, che lo si creda o no, il computer vuole capirlo nel modo giusto. Forse sono stupidi, i computer, ma sempre obbedienti. Oh beh, quasi sempre.

Qui entrano in gioco l'Unicode e l'XML. Unicode non è che un set di ideogrammi universali perché il mondo dei computer possa scambiarsi note con una buona probabilità di interpretarle bene. Alcuni ideogrammi in Unicode possono coincidere con qualche set di caratteri nazionali come l'ASCII, ma nessuno al mondo imparerà mai tutte quelle lingue. Nessuno si aspetta che qualcuno lo faccia. Non è questo il punto.

Il punto è questo: il mese scorso ero al lavoro sulla pagina Web della mia chiesa. La nostra chiesa ha appena avviato una congregazione cinese e dunque ha adesso due nomi, uno dei quali rappresentabile in ASCII, l'altro no. La pagina si presenta così:

(Almeno, è così che la si vede con un browser abbastanza recente e si è caricato un font Unicode).

L'avessi fatta un anno fa, questo blocco di caratteri cinesi sarebbe stato probabilmente un'immagine GIF. Ma con le immagini sorge un problema: non si può fare il taglia & incolla di caratteri da una GIF. Ci ho provato abbastanza per saperlo, e anche i lettori, sono sicuro. Un anno fa mi sarebbe anche toccato aggiungere alla pagina un livello ulteriore di complessità, servendomi uno script CGI o di qualcosa del genere per riuscire a sapere se il browser supportasse Unicode, perché in caso negativo questi caratteri avrebbero seminato spazzatura per tutta la pagina. La spazzatura, di norma, ha la medesima struttura della complessità inutile.

Ma comunque, torniamo alla semplicità:

Con i cerchi rappresentiamo molte cose. La nostra cerchia di amici; un abbraccio (disegnato sul retro di una busta); la fede nuziale, simbolo di amore infinito.

Passando dal sublime al ridicolo, abbiamo l'archivio circolare, una sorta di limbo per le carte inutili.

Sfere di luce. Buchi neri, o almeno il loro orizzonte degli eventi.

Un solo anello per governarli tutti, e, nell'oscurità, legarli l'uno all'altro.

Sfere di cristallo. Perle.

Cipolle. Cipolline.

I cerchi sono massicciamente presenti nella nostra simbologia. In particolare, aggiungendo accessori diversi, rappresentiamo tramite semplici simboli delle nozioni piuttosto complesse. Questi simboli sono i ponti fra la semplicità e la complessità.

Ecco un autentico diagramma Zen:

No, per la verità non lo è. Infatti, lo yin-yang proviene dal Tao ("Dao", se non si riesce a pronunciare una 't' non aspirata). Il Tao è un'antica filosofia orientale che precede lo Zen di oltre un millennio.

Ad ogni modo, torniamo agli yin e agli yang.

Lo yin-yang rappresenta una filosofia dualistica, molto simile a "La Forza" in Guerre Stellari. Perché La Forza è come il nastro adesivo? Risposta: perché ha un lato chiaro, uno oscuro e tiene insieme l'universo. Per quanto mi riguarda, non sono un dualista, perché sono convinto che la luce sia più forte dell'oscurità. Non di meno, il concetto di forze in equilibrio riesce a volte utile, specialmente agli ingegneri. Quando un ingegnere vuole bilanciare delle forze in modo che rimangano in equilibrio, ricorre al nastro adesivo.

Mentre disegnavo questo yin-yang mi domandavo se lo stessi facendo giusto. Che peccato se fosse stato invertito o sottosopra.

Questo genere di cose conta, talvolta. Conta molto per i chimici organici, che lo chiamano "chiralità": se si prende una molecola di aroma di menta e la si ruota di 180° sull'asse verticale, ci si ritrova con una molecola di aroma di cumino. Perbacco. Io ero convinto di detestare il pane di segale, finché non ho scoperto che erano i semi di cumino che ci mettono dentro a non piacermi.

Ora, le preferenze in fatto di aromi sono una faccenda di gusto, ma i medici e i chimici organici vi potranno dire che in certe occasioni la chiralità è questione di vita o di morte: o di arti deformi, nel caso del Thalidomide. A causare i problemi, di fatto, fu il tipo "sbagliato" di Thalidomide. Un dislessico vi dirà che la chiralità è importantissima in molti simboli visuali. Lo si capisce pensando alle lettere "b" e "d", o "p" e "q". O al numero 6, per tacere del 9. Si può vedere un 6 e un 9 nello yin-yang, com'è orientato qui sopra.

Per farla breve, mi domandavo se lo yin-yang fosse come una svastica, nella quale è l'orientamento che determina chi farete infuriare.

Ha fatto allora qualche ricerca, sul Web s'intende: perché il Web è l'esempio perfetto di CEPDUMDFLC ("C'È Più Di Un Modo Di Fare Le Cose"). In questo caso, le si può fare in qualunque modo. Lo yin-yang si trova sul Web in ogni orientamento possibile; non so tuttora se ce ne sia uno più giusto degli altri.

"A TIEDYE WORLD" sono alcuni tipi che, sul Web, vendono magliette "tie-dyed", tinte cioè cospargendole di tintura e poi torcendole. In questo caso si potrebbe dire "Tao-dyed". Essi ritengono che lo yin-yang abbia quest'aspetto:

Suppongo che, se lo si vuole nell'altro senso, basti rovesciare come un guanto la maglietta. Indossarla sottosopra, invece, sarà un modo sicuro per farsi notare.

Quelli del consorzio Unicode pensano che lo yin-yang si presenti così. Non so se hanno ragione, ma se non l'hanno, non importa. L'hanno pubblicato così e dunque adesso è giusto per definizione.

Ovviamente, il mio dizionario lo presenta orientato in senso opposto:

Va bene, dicevamo dell'Unicode. Unicode è pieno di cerchi. Molti script nazionali entro Unicode fanno uso del cerchio e per lo più esso rappresenta la cifra 0 (zero). Ecco il numero Unicode 3007 (hex). È il simbolo ideografico dello 0:

Sorpresa, sorpresa. Assomiglia al nostro 0. Un punto per l'imperialismo culturale. Dove è in uso l'alfabeto latino, naturalmente, tendiamo a schiacciare ai lati il nostro 0 per distinguerlo dalla lettera O.

(In Bengalese, lo schiacciamento è orizzontale, ma per ragioni simili):

Trovo affascinante che al mondo esistano tante maniere diverse per rappresentare il nulla. Viene alla mente ogni sorta di scherzi: Tanto rumore per nulla, oppure "niente può fermare un'idea quando il suo momento è giunto". Ecco qualcosa collegata al niente:

È il simbolo universale di "proibito". In Unicode, è classificato come carattere di combinazione.

Ovviamente, nella cultura del Perl, quasi nulla è proibito. Ho la sensazione che il resto del mondo già abbondi di proibizioni perfettamente funzionali, dunque perché inventarne di nuove? Questo, a proposito, è vero non solo per la programmazione, ma anche per le relazioni interpersonali. Sono stato sollecitato più volte a bandire qualcuno dalla comunità Perl, di solito per comportamenti a qualche titolo offensivi verso qualcun altro. A tutt'oggi mi sono sempre rifiutato di farlo, e credo che sia la giusta politica: per lo meno, ha funzionato finora, a livello pratico. O l'offensore se n'è andato, alla fine, per comune accordo, o le due parti hanno conciliato e imparato a trattare più costruttivamente col prossimo. È strano. La gente capisce istintivamente che il modo migliore che i programmi hanno per comunicare fra loro è di essere sorvegliati in quello che emettono, e liberali in quello che accettano. La cosa strana è che le persone stesse non intendano sorvegliarsi quando parlano né essere comprensive quando ascoltano. Anche questa parrebbe una cosa ovvia. Invece, ci viene insegnato a esprimere noi stessi.

D'altra parte, noi cerchiamo d'incoraggiare certe virtù nella comunità Perl. Come fa notare l'apostolo Paolo, nessuno promulga leggi contro l'amore, la gioia, la pace, la pazienza, la gentilezza, la bontà, la dolcezza, l'umiltà o l'autocontrollo. Dunque, anziché concentrarci sul proibire il male, concentriamoci sul promuovere il bene. In Unicode, il bene è così:

Certo, se si è Figli dei Fiori si preferirà questo:

Alcuni degli Unicode positivi sono meno ovvi.

Ecco il simbolo per un clic bilabiale, uno dei simboli dell'Alfabeto Fonetico Internazionale. Senza magari saperlo, in molti producete regolarmente questo rumore. Se si vuole provare, occorre fare così: chiudere le labbra, quindi emettete una specie di suono affricato aspirando l'aria.

In Inglese, si sa, lo scriviamo semplicemente con una X, di solito insieme alle O sul retro della busta. Ma state ora assistendo al tramonto di un'era. Col prevalere dell'email, l'invio di baci e abbracci dietro le buste è un'arte che scompare. Non ha, semplicemente, lo stesso effetto di una riga d'intestazione nell'email.

Content-type: text/hugs&kisses.

È anche piuttosto difficile profumare un messaggio email.

Content-type: text/scented. La mente vacilla.

Ecco altri semplici cerchi che rappresentano cose complicate. Il simbolo della Terra:

Il simbolo di Marte:

E il simbolo di Venere:

Quando lavoravo presso il Jet Propulsion Laboratory ho avuto una piccola parte nella scoperta che Marte e Venere sono alquanto complicati. Ma, come se le cose non fossero complicate abbastanza, gli antichi le complicarono di più sovraccaricando questi simboli e facendo loro rappresentare il maschio e la femmina. Gli uomini - ci vien detto - vengono da Marte, le donne da Venere, ma questa non è un'idea nuova.

Ecco ancora un po' di storia.

Una cipolla tagliata si presenta così. Se la prendiamo come un'immagine del mondo Perl, io dovrei essere il circolino di cipolla più interno.

Mi circondano i primi accoliti di Perl, oggi riveriti come eroi della rivoluzione. Come altri venivano unendosi al movimento, nuovi strati si sono aggiunti. Si può anche immaginare che questo sia un atomo, con strati di gusci di elettroni. Di certo nessun atomo a nostra conoscenza ne ha tanti, così atteniamoci alla cipolla.

La cipolla ha di buono che mi insegna qualcosa a proposito della mia importanza, o mancanza di importanza. Ossia, che mentre posso essere stato io ad aver iniziato tutto questo, rimango pur sempre una piccola parte della cipolla. La massa critica è negli strati esterni (è per questo vedo con favore lo spuntare di movimenti di base come i Perl Mongers). Qui, tuttavia, mi trovo al centro. Riscuoto un po' di rispetto per la mia significanza storica, ma la verità è che la maggior parte della gente vede l'esterno della cipolla, non l'interno, a meno che non stia cucinando gli "onion ring": ma anche allora, gli anelli più larghi sono i più interessanti. Si può pensarla come una lezione per quelli fra voi che vorrebbero essere "anelli interni"; il potere vero non si trova lì. Almeno, non in questo movimento. Mi sono sforzato di modellare il movimento Perl su un altro movimento di cui sono membro, e il cui fondatore disse: "Chi vuole essere fra voi il più grande, dovrà farsi servitore di tutti". Dei suoi dodici anelli esterni, uno lo tradì e dieci si avviarono al martirio. Non che io voglia chiedere a nessuno dei miei amici di gettarsi ai leoni, non per adesso.

Ma torniamo ai pattern di crescita. Anche le perle non coltivate crescono in strati intorno a un granello di sabbia che causa irritazione all'ostrica in questione, che forma così strato su strato di quella bella materia. Questa potrebbe essere la sezione mediana di una perla. Capita spesso di affettare un cipolla, più raramente una perla. Dunque, tutto questo è anche più vero delle perle che delle cipolle: lo strato più esterno è il più importante, quello che si vede. Se la perla sta ancora formandosi, è lo strato che sosterrà lo strato che verrà dopo. Vedo che tutto questo ragionamento finisce per classificarmi come un mero agente irritante. Mi dichiaro soddisfatto di questa classificazione.

Anche altre cose crescono nel tempo. Sarà più chiaro se cambiamo l'immagine con quella degli anelli di un tronco d'albero:

Se si conosce un po' di fisica si saprà che un tubo è quasi altrettanto robusto di una sbarra solida dello stesso materiale, perché il grosso della forza è trasmesso agli strati esterni. Quello che voglio dire è che il centro dell'albero può marcire e l'albero rimanere perfettamente sano. Analogamente, la salute, nella cultura Perl, è affidata a quanto avviene nella periferia, non nel centro. Programmando in Perl, la gente risparmia ogni anno miliardi di dollari, ma la maggior pare di questo risparmio avviene al fronte. Anche procedendo verso il centro, si svolge molto più lavoro per agganciare il Perl ad altre cose che per cambiare il Perl stesso, e io penso che sia giusto così. Il kernel del Perl si va stabilizzando, in un modo o nell'altro. Anche con modifiche al kernel, quali il multithreading e il supporto per Unicode, lavoriamo come se stessimo aggiungendo moduli d'estensione, perché così è più chiaro e nessuno che non lo voglia dovrà richiamare le nuove funzionalità.

Tutti questi discorsi sugli anelli di crescita vanno bene finché si parla del passato, ma per il futuro? Non ho la sfera di cristallo. Ho due binocoli. Eccone il simbolo tipico:

Questa, si sa, è la convenzione usata nei film per indicare che si sta guardando attraverso un binocolo. Sui due piedi, non saprei che cosa mettere qui come campo di visione, dunque vediamo che cosa c'è all'altro capo del binocolo:

Naturalmente questa può essere anche l'immagine due corpi che, per attrazione gravitazionale, ruotano l'uno intorno all'altro:

Ognuno di questi pianeti provoca sull'altro delle maree. Non è difficile capire perché si verifichi un'alta marea sulla faccia rivolta all'altro pianeta; più difficile è capire perché ci sia un'alta marea sulla faccia opposta. Ma risulta logico quando si considera che l'altro pianeta non si limita ad allontanare dal centro del pianeta la massa a lui più vicina, ma ugualmente allontana il centro del pianeta dalla massa più lontana.

Si tratta di un'immagine molto eloquente del rapporto della comunità del software freeware con quella del software commerciale. Potremmo anche dare dei nomi ai due estremi, nomi di fantasia. L'estremità sinistra la chiameremo, che so, "Richard". Quella destra, boh... "Bill".

Meno facile è battezzare le masse intermedie, ma, solo, per oggi, decidiamo di chiamare "Larry" quella di centro-sinistra, e quella di centro-destra, "Tim".

Si tratta, come vedete, di un'altra semplificazione eccessiva, perché ci sono varie persone e organizzazioni non rappresentabili da un punto fisso nel diagramma, perché tendono a spostarsi. Alcuni riescono a oscillare avanti e indietro fra le due masse principali; un momento sono a favore di una maggiore cooperazione fra le comunità freeware e commerciale, un momento dopo vilipendono qualunque cosa sia commerciale. I nostri ipotetici Richard e Bill, almeno, sono coerenti.

Ma l'azione si svolge nel mezzo.

È qui che l'attenzione generale si concentra per sapere che cosa succederà. Questa, per la verità, è l'immagine dell'anno scorso. Quest'anno è più così:

Robert L. Forward ha scritto un libro - anzi, una serie- su un posto chiamato Rocheworld. Esso prende nome da un tizio di nome Roche (sopresa, sorpresa). È lui che ha definito il "limite di Roche", che prevedeva la dissoluzione dei pianeti che si avvicinassero troppo l'uno all'altro. Questa risultò una semplificazione eccessiva, dovuta alle sue limitazioni di matematico. Se si immagina che i pianeti possano deformarsi in questo modo, sarà loro possibile avvicinarsi molto di più e rimanere stabili. Attenzione: l'attrazione gravitazionale netta su questi punti è molto bassa, sufficiente tuttavia a tenere insieme i pianeti.

Similmente, le comunità freeware e commerciale si trovano quest'anno molto più vicine di quanto molti credessero mai possibile secondo i vecchi calcoli. A Rocheworld i pianeti non si toccavano, ma condividevano le atmosfere. Sfumando un po' le cose con la magia di xpaint avremo un quadro più chiaro:

È chiaro com'è possibile volare, ma non camminare, da un pianeta all'altro? Ci ricorda il tunneling meccanico dei quanti, dove non si può andare da qui a lì, ma ci si va lo stesso, con un salto.

Il flusso fra le comunità freeware e commerciale è un flusso d'idee. Insieme, questi due lobi interni definiscono quello che oggi è chiamato il movimento Open Source. Ci troviamo di fronte a qualcosa di completamente nuovo: ex-nemici che si accordano per un vantaggio comune che trascende ogni modello particolare di strategia commerciale. Quel vantaggio comune è: software migliore e prima. Ecco che cosa lo ha reso possibile. La gente ha capito il potere di una semplice idea. Non ci servono brevetti software o segreti industriali. Ci serve solo un altro semplice cerchio:

Un cerchio con dentro una "c". L'Open Source vive o muore in dipendenza dalla legge sul copyright. Nostra ardente speranza è che viva. Facciamo tutti, vi prego, la nostra parte perché rimanga così. Se si ha la possibilità di propagandare il copyright contro il brevetto, lo si faccia. So che molti già supportano il copyright contro il segreto industriale. Sosteniamo la legge sul copyright anche rispettando i desideri dei detentori del copyright, anche quando i loro nomi non appaiono esplicitamente, per la generale soddisfazione degli avvocati. La "c" nel cerchio dovrebbe stare per "civiltà".

Quando pensiamo alla civiltà, pensiamo alle città, al fare cose chiare e squadrate. Ecco allora il quadrato richiesto:

Le città sono evidentemente costruite su quadrati e rettangoli, detti isolati. Quando gli urbanisti lasciano un isolato senza edifici, abbiamo una piazza, che può non essere quadrata.

Gli stessi edifici sono talvolta quadrati:

Spesso, però, non lo sono. Allo stesso modo, semplicemente sfogliando il manuale Unicode, si trovano i cerchi prevalere nettissimamente sui quadrati. Penso ci sia una ragione basilare dietro a ciò. Nel costruire edifici, così come nello scrivere dei caratteri, li collochiamo entro una cornice rettilinea. In termini di scrittura, scriviamo da sinistra a destra, da destra a sinistra o dall'alto in basso. Più o meno quadrate sono le celle astratte in cui inscriviamo caratteri ed edifici. Ma sia gli edifici che i caratteri tendono a diventare impercettibili quando seguono le stesse linee del testo complessivo che li contiene. Per questo, molti caratteri tendono ad avere linee ad angoli insoliti, così come tanti grattacieli moderni sono progettati per non sembrare scatole. È proprio per il loro aspetto di scatola che a quasi nessuno piacciono i grattacieli degli anni Sessanta. L'occhio ama oggetti visivamente distinti da ciò che li circonda.

È questa anche la ragione per cui le varie classi di operatori e di variabili in Perl risultano distinte visivamente l'una dall'altra. Per quanto mi riguarda, si tratta di un criterio di sana ingegneria umana. Non mi piace che gli operatori, in Lisp, sembrino tutti uguali, né che i segnali stradali in Europa si somiglino tutti. Plaudo alla decisione tedesca di rendere diverso da tutti gli altri il segnale di stop. Naturalmente, il fatto che adesso sia come lo stop americano è un bell'aiuto per noi americani ignoranti. Un altro punto per l'imperialismo culturale.

Tuttavia, e come penitenza per l'imperialismo culturale americano, lasciatemi osservare un altro vantaggio delle scritture ideografiche. Dal momento che gli ideogrammi vengono inscritti in celle quadrate, li si può scrivere tanto orizzontalmente che verticalmente, o viceversa. Questa piacevole proprietà è estranea ai nostri caratteri a larghezza variabile, soprattutto in un font come l'Helvetica, dove si fa fatica a distinguere le 'i' e le 'l' quando sono vicine. Se le mettete una sull'altra, sembrano proprio una linea tratteggiata. Un punto per i Cinesi, i Giapponesi e i Coreani.

Finirò in bellezza parlando dei triangoli. Eccone un esemplare:

I triangoli stanno ai cerchi come le punte di freccia ai bersagli. Ecco un bersaglio:

Questo, sono sicuro che è giusto. Ho cercato sul Web. Soprattutto, mi sono fermato al primo che ho trovato.

Questo, veramente, è il carattere Unicode chiamato "bulls-eye", occhio di toro.

Non sono sicurissimo del suo significato, ma questo non mi ha mai fermato. Gli farò significare qualcosa.

Ho scoccato molte frecce in questo saggio, e non so se ho mai colpito qualche occhio di toro. Mettiamo triangoli in cima alle frecce perché sono appuntiti. I triangoli vengono associati al dolore, specie se ci si cammina sopra. Gli angoli di un triangolo tendono a suggerire la faticosa scalata di una montagna:

Ma l'apparenza può ingannare. Un triangolo può rappresentare anche una strada in pianura che si allunga verso l'orizzonte.

È tutta questione di prospettiva. Scegliendo il punto d'osservazione, si può scegliere che cosa vedere. Io non so dire se la strada a venire di Perl sarà liscia o accidentata, ma posso prevedere che, più numerose saranno le prospettive da cui potremo vedere le cose, più facile sarà scegliere prospettive che ci piacciano. Questo, dopo tutto, è il lavoro di un progettista di linguaggi, ispezionare il problema da tante prospettive diverse, essere un poco onnisciente, perché altri possano trarne vantaggio. Io faccio qualche triangolazione, mappo il territorio. È il mio lavoro. Se con l'aiuto della mia mappa ognuno riuscirà a raggiungere la propria destinazione, io sono contento.

Se si preleva una sezione dalla cipolla-Perl, assomiglierà a un triangolo. La si adagi su un lato e si otterrà un grafico della crescita del Perl negli ultimi dieci anni.

Bello. Si tratta di un grafico ipotetico, naturalmente, non c'è modo di misurare la crescita reale del Perl. Ma che sia ancora in crescita è sicuro. Stiamo facendo molte cose nel modo giusto, e grosso modo dovremmo continuare così.

Supponiamo adesso di restringere il triangolo e di estendere il grafico per mostrare l'intero ciclo di vita del Perl. Non sappiamo quanto può durare.

Non è semplice dire che cosa farà la differenza, qui. Devo dire però che non misuro il successo del Perl sul numero di persone a cui io piaccio. Quando integro queste curve, conto le persone che ho aiutato a fare il loro lavoro.

Quello che posso dire è che penso che la differenza fra la curva 1 e la curva 2 possa dipendere dall'aggiunta di tutti i potenziali utenti Windows, e di tutti i problemi che avranno bisogno di risolvere. Che sono molti. Non è per caso che abbiamo appena approntato un Win32 Perl Resource Kit.

Un'altra cosa che posso dire è che la differenza fra la curva 2 e la 3 può dipendere dall'aggiunta di tutti gli utenti nel mondo che potrebbero trarre beneficio dal Perl. Non è per caso che l'ultima versione di sviluppo di Perl permetta di chiamare le variabili con ogni carattere che l'Unicode consideri alfanumerico. Questo include gli ideogrammi. I Cinesi sono un miliardo, e io voglio che possano passarsi fra loro delle note scritte in Perl. Voglio che possano scrivere poesie, in Perl.

È la mia visione del futuro. La prospettiva che ho scelto.

Ho cominciato parlando delle virtù del programmatore: pigrizia, impazienza, tracotanza.

Queste sono virtù della passione, e anche virtù dell'individuo. Non sono però virtù della comunità. Le virtù della comunità suonano al contrario: diligenza, pazienza, umiltà.

Non sono vere opposizioni, perché si possono praticare tutte allo stesso tempo. È ancora una faccenda di prospettiva. Queste sono le virtù che ci hanno condotti fin qui. Sono le virtù che porteranno la nostra comunità nel futuro, purché non le abbandoniamo.

Fondamentalmente, ci basta mantenere la rotta, fare quello che Friedrich Nietzsche chiamò "una lunga obbedienza nella stessa direzione", che è uno slogan sonoro ed efficace. Mi piace riportare la citazione intera:

L'essenziale, "così in cielo come in terra" è (...) che ci sia lunga obbedienza nella stessa direzione. Ne risulterà, come ne è sempre risultato a lungo andare, qualcosa che avrà reso la vita degna di essere vissuta.

E ora, girando in tondo, siamo tornati al cerchio. Ecco la porta di casa di Bilbo Baggins. Dalla soglia parte una strada, e questo ha ispirato a Bilbo una poesia.

Tanto è innanzi già la strada
che imboccai alla mia porta,
che conviene ormai ch'io vada.
Verso dove, non importa.

A una piazza ove s'immettono
tante strade e tante mire,
i miei piedi già s'affrettano;
Poi, di lì...? Non lo so dire.

(J.R.R. Tolkien, Lo Hobbit)

Copyright © 1995-1999 Apogeo srl, Milano