0x78FFA0.
Questo comparve sul bus address del
sistema. Il byte reagì immediatamente, balzando sullo stream di dati insieme a
tutti gli altri. Pochi cicli di clock dopo, il byte stava percorrendo un bus
litoraneo: alla sua sinistra si ergeva una parete altissima, ricoperta di
informazioni sparse a casaccio su tutta la superficie. Alla sua destra, invece,
uno strapiombo che finiva chissà dove. Mentre correva, il byte guardò e provò un
brivido al pensiero di cadere giù. Lo strapiompo finiva sulla RAM, ma il byte
non lo poteva sapere, perchè un forte senso di vertigine gli impedì di guardare
a lungo, così girò gli occhi velocemente.
Fu così che il byte sbattè violentemente contro un agglomerato complesso di
bytes di cui non aveva percepito la presenza. Lo scontro provocò un
Exception nel thread corrente, che venne gestito autonomamente dall'OS
senza troppe complicazioni. Il byte si riprese immediatamente, riaprì gli occhi
e si guardò attorno.
Quello che vide lo sconvolse. Lì nei dintorni era stato costruito un
palazzo che fino a qualche tempo prima non c'era. Era un palazzo alto 4
piani, completamente bianco, in netto contrasto con l'ambiente scuro ed asettico
circostante. Aveva un solo grande ingresso sulla cima, all'ultimo piano, come
fosse un eliporto, dal quale arrivavano ed uscivano stream di bytes di ogni
tipo. Alcune parti erano ancora in costruzione, e mostravano impalcature sulle
quali altre entità stavano lavorando assiduamente per portare a termine il loro
lavoro.
"Chi siete voi? Cosa ci fate qua?" - chiese
il byte, rivolgendosi ai bytes che abitavano il palazzo.
"Innanzitutto diamoci pure del tu, che è meglio, che ne
dici? Noi siamo la NRuleValidator, e ci occupiamo perennemente
di validare gli oggetti che gli strati applicativi ci passano.". La
risposta arrivò dal primo byte che formava la class library, come se
fosse una sorta di ambasciatore di tutto l'edificio, l'unico che fosse in grado
di comunicare all'esterno.
Il byte non capì quasi nulla di quella risposta, perciò - incuriosito -
cominciò a tempestare il byte header di domande, nel tentativo di capirne di
più.
"Beh, senza offesa, ma è normale che tu non
capisca." - sorrise amichevolmente NRuleValidator - "Tu
sei solo un byte, un semplice e banale byte. Molto spesso, sai, capita che in
altri settori della RAM il .NET Framework crei degli oggetti,
esattamente come me, con certe caratteristiche. Questi oggetti, sai, sono
formati da un grande numero di bytes, come me o te, che tutti assieme fanno in
modo che l'oggetto viva e rimanga sempre intatto." La class library parlò
a lungo degli oggetti, fornendo al byte un gran numero di informazioni sul mondo
OOP: sull'ereditarietà, ad esempio, o sui costruttori, sui metodi e via,
ancora più nel dettaglio, fino ad arrivare ai Delegate e agli eventi, e alla
loro mappatura in memoria.
Dopo 0x7500F cicli di clock, la class library concluse il suo
discorso.
"Questi oggetti sono moltissimi, uno più
complesso dell'altro, ma la cosa più bella è che nell'Aldilà ne creano a
bizzeffe, di tutti i tipi. NRuleValidator, cioè io, servo proprio a
questo: faccio in modo che un oggetto sia valido, cioè che le sue proprietà
abbiano valori coerenti rispetto al dominio applicativo al quale si applica.
Semplice, no?"
Il byte assorbì tutte quelle informazioni e ne rimase affascinato. Cominciò a
pensare agli oggetti, a tutte le loro varianti, e pensò a come NRuleValidator
fosse davvero utile per chiunque.
"Ma come posso sapere come
funzioni?" - chiese incuriosito il byte.
"Beh, avresti bisogno di un browser e navigare a questo URL. Qui c'è tutto: ti puoi leggere
i sorgenti, scaricarmi, installarmi sul tuo PC e provarmi. Ma questo tu non lo
puoi fare, mi spiace." NRuleValidator era davvero dispiaciuta per la
situazione del byte, ma non poteva farci niente.
"Un browser??? E cosa diavolo è un browser??? Dove lo
trovo?"
Il byte header sospirò, rassegnato. "Basta, dai, per oggi
non ho più tempo per te. Ho un oggetto HockeyPlayer da validare, lo vedi laggiù
sul bus?". L'header di NRuleValidator alzò un dito indicando un
oggetto che arrivava a tutta velocità sul bus dati. Il byte si spostò giusto in
tempo per evitarlo: due scontri in una sola sessione di lavoro sono davvero
troppe - riflettè tra sè e sè il byte. Lo HockeyPlayer spiccò all'ultimo momento
il volo, fino al 4° piano ed entrò dall'eliporto sul tetto
dell'edificio.
Il byte osservò la scena sbigottito. Ma si stupì ancora di più quando, dopo
0xF cicli di clock dopo, dal palazzo di NRuleValidator vide uscire 2 oggetti
RuleBase associati alla proprietà BrokenRules dello HockeyPlayerValidator.
"Devo scoprire cos'è un browser!" - si propose il
byte tutto ad un tratto.
Voltò le spalle al palazzo di NRuleValidator, se ne
andò, ma con un gran bel sorriso sulla faccia.
Dedicato a chiunque parteciperà al progetto
NRuleValidator!