[Adventure.01] Genesi: prima di essere un byte, era byte[0]
byte[0], byte[1] e byte[2] erano tre bytes amici di lunga data. Si erano incontrati così per caso durante l’esecuzione di una query in MySQL, quando il destino decise che dovessero formare una maschera di bit per formare una JOIN tra due tabelle del database. Tra loro era nata una certa affinità. Se uno di loro tre decideva di fare una cosa, gli altri due lo seguivano senza fiatare. Si divertivano, la pensavano allo stesso modo su molte cose, parlavano e scherzavano liberamente. Era uno spasso.
byte[0] era il più vivace.
Era quello che voleva sempre ficcarsi nei guai con le sue idee, quello che quando veniva a sapere che era stato installato un nuovo antivirus nel sistema voleva testarne l’efficacia. byte[0] era stato quello che per primo aveva voluto saggiare l’estrema velocità delle nuove fibre ottiche a 20Mbit, che gli avevano permesso di viaggiare da un IP greco fino ad un IP russo, attraverso un percorso di routing che aveva impiegato nemmeno un secondo per arrivare a destinazione.
byte[1] era il più pessimista.
Quando il Creatore migrava ad un nuovo sistema operativo, byte[1] preferiva quello vecchio. Se veniva installata una patch per qualche software, era timoroso e pensava che contenesse qualche bug, che l’avrebbe costretto a rimanere imprigionato nella stessa cella di memoria per chissà quanti miliardi di cicli di clock. Gli altri due lo prendevano in giro per questo suo pessimismo: gli dicevano che vedeva sempre lo stack mezzo vuoto, quando in realtà c’era anche la parte mezza piena e che quest’ultima generalmente è molto più interessante. Ma byte[1] non li ascoltava quasi mai.
byte[2] era il più esoso in termini di risorse.
Si vantava di aver viaggiato su un gran numero di sistemi differenti. Diceva continuamente che era stato su bus a 16, a 32 e a 64 bit. Era orgoglioso quando raccontava di aver preso parte ad algoritmi su schede grafiche DirectX 10.0, oppure quando aveva caricato 1Tb di dati su un database Oracle. byte[2] tendeva sempre ad occupare sempre più memoria per allargare i propri confini. Il suo motto preferito era “Se un sistema Windows dispone di 16Gb di RAM, perchè non poterli occupare tutti?”. L’efficienza, l’ottimizzazione ed il risparmio di memoria non facevano per lui.
Una sera come tante altre, byte[0], byte[1] e byte[2] sedevano tranquillamente lungo un bus come tanti altri. Il bus assomigliava ad una strada stretta e tortuosa di montagna; da un lato si ergeva una parete esadecimale contenente pezzi di codice eseguibile, mentre dall’altro lato si apriva un panorama mozzafiato. Centinaia, migliaia, milioni e miliardi di luminose celle di memoria si stendevano più sotto fino all’orizzonte. I tre bytes osservavano la scena ammirati, spaziando con lo sguardo da destra a sinistra e viceversa, divertendosi a cogliere tutte le infinite combinazioni di colore di ciascun byte che – velocissimo – viaggiava per il sistema. C’era di che riflettere. C’erano bytes che componevano immagini JPG, codice eseguibile di chissà cosa, stream audio da Last.fm, video da YouTube, handle di finestre e controlli, servizi di sistema ad alta priorità. Un’infinità di informazioni in movimento sincronizzato, ritmato dal battito del clock di sistema che echeggiava in tutti i meandri della mainboard permeando ogni attività. La distesa di bytes multicolori si attivava in base al task attivo, sollevando onde esecutive più o meno alte.
byte[2]: “La sapete una cosa? Questo sistema monta 2Gb di memoria RAM. In questo momento ne stiamo vedendo solo un quarto.”
Attimi di silenzio. Quello che vedevano era sconfinato, com’era possibile che fosse solo un quarto? Quant’è il 25% di infinito?
“Come fai a dirlo?” – chiese byte[0].
byte[2] : “E’ semplice. Vedi quella zona verde scuro in fondo a sinistra, proprio accanto all’ingresso dell’hub USB 0x01? Lì gira sempre il processo taskman.exe dell’OS, conosco quella zona, ho degli amici. E taskman.exe viene sempre allocato negli indirizzi di memoria più bassi. Mentre dall’altra parte, là nell’estrema destra c’è la zona riservata ai dati delle applicazioni, come quel piccolo documento Word che fa capolino tra il file CSS e lo script SQL che è in esecuzione. In tutto, quello che vediamo adesso sono solo 512Mb di RAM.”
“Ma come fa a non crashare tutto?” – chiese byte[1] incredulo.
“Beh, in realtà capita che l’OS perda il controllo, ma ultimamente l’efficienza è notevolmente migliorata.” – spiegò byte[2] all’altro – “Ricordo quando visitai un sistema XP senza alcun Service Pack. Bastava un niente affinchè un software non autorizzato potesse prendere il controllo dell’intero sistema. Oggi lo cose sono molto cambiate, i nuovi kernel hanno sempre tutto sotto controllo.”
Attimi di silenzio.
“La vuoi sapere tu una cosa, adesso? Voglio essere il primo a visitarle tutte!” – proclamò byte[0] con una certa sicurezza nella voce.
“Visitare cosa?” – chiese perplesso byte[2].
“Tutte le celle di memoria di questo sistema.” – rispose risoluto byte[0].
byte[2] sorrise come se volesse commentare l’ultima frase in silenzio, senza usare le parole. Sarebbero state troppo offensive. Ma in fondo byte[2] capiva byte[0]. Forse era proprio questa comprensione reciproca ad unire così i due bytes. Ma questa volta byte[0] peccava di ingenuità. Tentò di spiegarglielo con calma.
“Non ci riuscirai mai, perchè un byte non può andar dove più gli piace. Se potesse, il sistema collasserebbe con pochi cicli di clock, perchè prima o poi finiresti in un’area di memoria pericolosa in cui non dovresti stare. Dr. Watson ti braccherebbe senza sosta. Potresti farcela in un sistema antiquato e poco protetto come l’XP di cui parlavo prima, ma al giorno d’oggi è assolutamente impossibile. Ci sono controllori che girano ovunque, nuove patch di sicurezza che vengono applicate quotidianamente. Troppi ostacoli da superare. Lo capisci?”
Mentre un nuovo WrapPanel veniva istanziato dal runtime di WPF, sollevando nubi di pixel verdastri, byte[0] era con la testa altrove. Aveva sentito a malapena le parole del suo amico che tentava di farlo desistere dal suo intento: in realtà lui non vedeva l’ora di cominciare a viaggiare.
“Non me ne importa. Mi muoverò silenziosamente, senza farmi vedere e senza dare nell’occhio. Non dico che tutti possano farlo, ma io sì.“
byte[0] si vedeva già mentre si spostava da una cella all’altra, facendola in barba all’OS. D’altronde sapeva benissimo che c’erano sistemi operativi incapaci di gestire tutta la memoria RAM installata, per cui poteva tranquillamente visitare interi blocchi di memoria senza che nessuno se ne accorgesse. Il vero problema – e su questo byte[2] aveva ragione – è che c’erano aree molto più pericolose, e lì dovevano stare molto più attento per non finire nei guai. Ma a lui piacevano quel genere di avventure, e si sentiva già esaltato all’idea. Forse in fondo aveva già deciso di andarsene.
“Tu sei pazzo. Verrai deallocato e ti perderemo per sempre. Se deciderai di andartene, non potrò seguirti. Mi dispiace, ma io ho una vita da vivere.” – disse byte[1] con un velo di maliconnia nella voce.
“Lo stesso vale per me. Una volta, forse, sarei venuto per vedere tutto quello che c’è da vedere. Ma adesso son troppo vecchio per queste cose, il garbage collector è qui dietro l’angolo ed il mio tempo è scarso.“. byte[2] raggiunse anche lui la sua conclusione.
byte[0] si rese conto che il voler iniziare una nuova avventura gli costava un prezzo davvero alto da pagare. Sarebbe stato solo, perchè nè byte[1] nè byte[2] voleva andare con lui. Un po’ triste, distolse gli occhi dai banchi di memoria RAM luminescenti per osservare i suoi due amici che stavano aspettando che prendesse una decisione definitiva. Se se ne fosse andato, avrebbe perso i suoi due migliori amici, ma probabilmente là fuori c’erano miliardi e miliardi di bytes da conoscere, con cui ridere, scherzare e vivere nuove esperienze. Forse si sarebbero reincontrati, ma chissà quando. Quei pensieri gli giravano per la testa, e per un solo ciclo di clock pensò che stesse per tradirli. Fino a che punto lui aveva il diritto di spezzare quell’amicizia? Fino a che punto avrebbe retto il peso della sofferenza di byte[1] e byte[2] che stavano per rimanere da soli? Gli soggiunse un qualcosa che aveva letto una volta, molto tempo fa, su una pagina Web: lo stream HTML includeva caratteri ASCII che recitavano “Niente dura per sempre!“. Andarsene per lui non era un capriccio dell’ultimo momento, ma un’esigenza molto forte.
Pian piano si fece coraggio e prese la sua decisione. byte[1] e byte[2] se ne accorsero senza bisogno di troppe parole, perchè videro tutti i bit illuminarsi d’immenso. Per un breve istante, byte[0] divenne forse il byte più luminoso di tutto il firmamento.
I tre bytes si abbracciarono commossi, formando un piccolo array.
“Addio, spero di rivederti…” – disse sommossamente byte[1].
“Addio, e…buon divertimento!” – disse byte[2] con un leggero sorriso sulla bocca.
“Addio, cari amici miei. Grazie di tutto!“
Poi byte[0] si incamminò voltando le spalle agli altri due. Era emozionato ed un po’ ansioso, perchè si rendeva conto di aver davanti a sè una grande avventura e non sapeva se era all’altezza oppure no. Poteva finire male o bene, come tutte le cose, ma lui ci avrebbe messo il massimo dell’impegno che poteva metterci.
byte[0] arrivò ad una svolta. Prima di girare l’angolo, alzò i due bit più alti e li agitò in segno di saluto, rivolto agli altri due che erano rimasti seduti a guardarlo più in lontananza. Essi ricambiarono.
Quando byte[0] girò l’angolo, rimase definitivamente solo.
Fu così che byte[0], il più vivace ed il più avventuroso fra i tre, divenne semplicemente il byte, così come voi lo conoscete.
Pingback: [byte.adventure] La Stanza del tocco | Technology Experience (Reborn 4)
Very good blog you have here but I was wanting to know if you knew of any
user discussion forums that cover the same topics discussed in this article?
I’d really like to be a part of community where I can get feedback from other experienced individuals that share the same interest. If you have any suggestions, please let me know. Cheers!