DILIGENZA, PAZIENZA, UMILTA' by Larry Wall
In Open Sources, Apogeo, 1999
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:
[ Top ]
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.
[ Top ]
È 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.
[ Top ]
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.
[ Top ]
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.
[ Top ]
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.
[ Top ]
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.
[ Top ]
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.
[ Top ]
"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.
[ Top ]
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.
[ Top ]
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:
[ Top ]
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.
[ Top ]
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:
[ Top ]
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ì:
[ Top ]
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:
[ Top ]
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.
[ Top ]
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.
[ Top ]
È 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.
[ Top ]
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)
[ Top ]
|