Subiecte

prima mea carte foarte tehnică

Primul meu calculator personal a fost un Sinclair ZX Spectrum 48K.

Prima mea carte despre calculatoare cu conținut foarte tehnic și specializat a fost "The Complete Spectrum ROM Disassembly". Atunci cînd am primit-o nu știam limbajul de asamblare pentru Z80. Mă uitam prin ea încercînd să găsesc un fir de care să trag ca să încep să pricep ce e acolo. Primele încercări au fost fără vreun rezultat: cartea nu e un manual pentru Z80 ci codul comentat (pe scurt) pentru interpretorul BASIC (de fapt pentru întregul "sistem de operare") al calculatorului ZX Spectrum. Codul e o bijuterie. Problema era că nu avea scop didactic, era cod de producție ca să zic așa, cod avansat, eficient, cu nu puține hack-uri pentru a economisi fiecare byte. Nu prea poți învăța din așa ceva un limbaj complet necunoscut (nu știam atunci, în clasa a 9-a, niciun alt limbaj de asamblare). Îmi amintesc cum citeam iar și iar din cartea asta codul și explicațiile ultra-scurte din dreapta, forțîndu-mă să înțeleg, sperînd ca de data asta chiar să-mi iau zborul, exact ca la ieșirea de la cinema după prima vizionare a lui Superman, cînd aproape orice copil spera să zboare dacă ridica destul de corect pumnul spre cer.

Cu vremea am învățat limbajul de asamblare de Z80, am înțeles și cum se apelează rutinele din ROM, am tocit guma tastelor și altfel decît jucîndu-mă Jet Pac, Highway Encounter sau Fist. Am scris și asamblat cod  cu GENS sau cu ZEUS, am dezasamblat, crack-uit și găsit POKE-uri pentru jocuri cu MONS, am visat în cod mașină pentru Z80 și am luat nota 8 la facultate la materia la care puteam lectura oricînd profesorul din tainele instrucțiunilor neoficiale sau a timing-ului pentru fiecare POP, PUSH sau DJNZ (cred și acum că 8-ul ăla a fost o măsura a cît de prost era sistemul de evaluare la o facultate tehnică unde puteai lua 10 la programare, tocind, fără să înțelegi nimic).

Am știut chestiile astea foarte bine, mult peste cît ar fi fost necesar pentru un 10 pe care nu l-am luat. Le-am și uitat între timp în cea mai mare parte în detalii deși ceea ce știu acum acolo își are bazele. Cred că am fost avantajat că nu mi-a fost alterat creierul cu JAVA sau C atunci cînd era proaspăt și ușor de stricat. Am înțeles la vreme cît costă o atribuire, o înmuțire în virgulă mobilă sau calculul unui sinus. Am înțeles că toate astea nu cad din cer (așa cum par ele să cadă din cer în JAVA) și că o simplă adunare poate lua multe sute de instrucțiuni executate (cîți tineri programatori JAVA au văzut și înțeles măcar odată în viață, măcar puțin din codul care se execută cînd dau ei drumul nonșalant încă unui fir de execuție?). Am înțeles cît poate fi de "scump" să apară o linie pe ecran. Am înțeles că dacă unele lucruri par a lua o linie de cod, în spatele lor pot sta zeci sau sute de mii de instrucțiuni executate de bietul procesor, o grămadă de cod scris de oameni foarte inteligenți dar care nu poate fi întotdeauna optim sau fără erori. Am învățat să nu disprețuiesc, ba chiar să respect pe cei care au construit platforma (fie ea ZX Spectrum BASIC sau Windows 7) pentru că acolo e multă muncă a unor oameni extrem de inteligenți și competenți, că acolo sînt motivații pe care nu voi reuși vreodată să le intuiesc (aviz copiilor extraordinari care știu exact cît sînt de proști programatorii de la Micro$oft ;-). Am învățat că dincolo o singură linie a mea de cod pot sta tomuri de știință avansată – nu doar programare, sute de oameni, minuni pe care nu o să apuc să le pricep vreodată pentru că viața e prea scurtă și nici eu nu sînt chiar atît de deștept cum mi-ar plăcea. Sper că am învățat să fiu ceva mai puțin arogant și ceva mai umil, să mă gîndesc în orice moment, înainte de a da vina pe cei ce au făcut sistemul de operare sau compilatorul, că vina poate fi a mea, că e chiar mai probabil să fie vina mea decît a lor. Am învățat că și în programare cam totul se plătește.

Codul din cartea asta mi-a arătat în domeniul calculatoarelor cam ceea ce mi-a arătat serialul COSMOS de Carl Sagan despre univers. Cartea asta a fost cea mai clară măsură a cît sînt eu de mic față de cît de mare și nebănuită poate fi lumea. În sub 15KB de cod (Kilobytes!) există funcții pe care niciun coleg sau cunoscut al meu nu le-ar putea scrie în .NET sau JAVA fără multă documentare și ceva COPY/PASTE.

Cartea în sine nu e o comoară așa cum se poate eventual înțelege din ce am scris. Codul care stă la baza ei e însă un lucru mare. Cartea a venit la momentul potrivit pentru mine. Am avut cred atracția sau intuiția sau norocul să mă influențeze. Cei doi autori ai cărții nu sînt autorii codului. Autorul codului, pentru care am cel mai mare respect, este Steve Vickers. Și lui și celor 2 autori ai cărții le datorez mulțumiri. Nici măcar nu am cumpărat cartea ci doar o fotocopie pe care o am și astăzi. La vremea respectivă nu se putea cumpăra o astfel de carte de către muritorii de rînd în România. Mai mult, azi e prima oară cînd îi văd coperta! Asta m-a făcut să îi evaluez retrospectiv importanția pentru mine și să o așez unde cred că îi e locul în ierarhia circumvoluțiunilor personale.

3 comentarii la prima mea carte foarte tehnică

  • Renton

    M-am jucat si eu cu primul tau calculator. Tin minte cum stateam sa incarce jocurile de pe caseta si tineam pumnii sa nu dea eroare. Trebuie sa recunosc ca te invidiam pentru ca aveai calculatorul 🙂

  • Viorelu

    Cartea de asm pentru Z80 o mai ai ?

  • mrx

    Mai am cîteva despre subiect publicate pe vremea aia.

Comentați

 

 

 

Puteţi folosi aceste etichete HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

captcha: * Time limit is exhausted. Please reload CAPTCHA.

WordPress Appliance - Powered by TurnKey Linux