RO / EN

Capitol 17

Timp estimat de citire: 6-7 minute

“— De ce te complici cu Assembler?
— Ca să nu mă complic mai rău după aceea.”

Mai era însă o a treia categorie, ținuta mai la fundul mapei, ca o cheie de rezerva pe care n-o folosești zilnic, dar fără de care poți rămâne blocat în casă: rutinele scrise în Assembler.

Nu erau multe. Dar erau genul de foi care, la nevoie, iți scurtează ziua si iți prelungesc reputația.

De ce aveai nevoie de Assembler în 1972, când aveai deja FORTRAN si COBOL, doua limbaje “serioase”, fiecare cu prestigiul lui?

Pentru ca FORTRAN si COBOL erau doi profesioniști civilizați, dar cu limitele lor. FORTRAN era bun la calcule, COBOL era bun la fișiere si rapoarte. Numai ca lumea reala nu respecta departamentele. Iți cerea si viteza, si control, si precizie, si “să meargă din prima”, toate în același program.

Iar uneori iți cerea ceva ce limbajele de nivel înalt nu-ti dădeau elegant: accesul direct la “instalație”.

De pilda, exact în zona asta de care vorbeam mai sus – accesul direct la date. Pe hârtie, hashing-ul era simplu: împarți, iei restul, ai adresă. In realitate, ca să sări direct la un loc pe disc, aveai nevoie să te înțelegi cu sistemul de operare si cu mecanismele lui de intrare/ieșire. Acolo nu mai mergeai cu vorba buna si cu paranteze frumoase. Acolo trebuia să vorbești “pe limba casei”.

Așa apar rutinele în Assembler: mici intermediari între ideea ta si fier.

Scriai o rutina care știa să facă un lucru concret si repetitiv: să citească rapid, să scrie rapid, să gestioneze buffer-e, să folosească metodele de acces ale sistemului, să verifice o condiție critica, să iasă cu un mesaj clar, să nu lase programul să moara teatral, cu tot cu dump-ul tipărit în zece exemplare.

Pe scurt: FORTRAN si COBOL erau buni la propoziții. Assembler era bun la chei si șuruburi.

Si mai era un motiv perfect pragmatic, pe care îl înțelege oricine: nu voiam să scriu același lucru de doua ori.

Daca aveam o rutina buna în Assembler, o puteam chema si din FORTRAN, si din COBOL. O scriam o data, o testam o data, o înjuram o data. Apoi o foloseam de câte ori aveam nevoie. In 1972, asta era deja o forma de lux.

Îmi aduc aminte o discuție scurta, genul de discuție care nu se ține la ședințe, dar iți rămâne în cap:

— De ce te complici cu Assembler?

— Ca să nu mă complic mai rău după aceea.

Si aici ajung la partea care sperie pe mulți, dar pe mine m-a prins: Assembler-ul.

L-am învățat surprinzător de ușor. Si cred, sincer, ca se învață ușor, poate chiar mai ușor decât un limbaj de nivel “înalt”. Nu pentru ca ar fi mai prietenos, ci pentru ca e mai direct.

Un limbaj de nivel înalt e ca un funcționar politicos: iți spune “lăsați aici cererea, o rezolvam noi”. In timp ce Assembler-ul e ca omul de la subsol, cu salopeta si cheia de la camera tehnica: nu iți zice nimic frumos, dar iți arata exact pe ce țeava curge apa.

In Assembler nu spui “calculează tariful” său “caută în fișier”. Spui lucruri foarte simple si foarte precise: muta, compara, aduna, sări, cheamă, întoarce. Puține verbe, multa răspundere. Ca în armata, doar ca aici nu striga nimeni. Se striga singur programatorul.

De aceea e ușor la început: nu ai o jungla de concepte. Ai doar mașina si regulile ei. Dificultatea vine mai târziu, când iți dai seama ca mașina ia totul literal. Daca ai fost vag, ea nu te întreabă “ai vrut așa?”. Ea executa vagul. Si-ti tipărește rezultatul, perfect aliniat, ca să te facă să te îndoiești de propria ta judecata.

Dar acum vine o nuanța, si e importanta:

Assembler-ul de pe un mainframe nu era același animal cu Assembler-ul de pe un microprocesor.

Pe un mainframe (IBM 360, său Siemens 4004 compatibil cu el), Assembler-ul era “limba unei uzine”. Aveai registre multe, scheme de adresare, convenții stricte, si mai ales aveai un vecin puternic: sistemul de operare. El era administratorul blocului. Iți dădea servicii, dar pe baza de reguli. Si de multe ori lucrai cu macro comenzi ale sistemului, nu doar cu instrucțiunile brute. Era Assembler, dar cu costume si protocol.

Pe un microprocesor (8080, Z80, 8086), Assembler-ul era “limba unui atelier”. Registre puține, memorie putină,  nici un sistem de operare care să-ti tina umbrela. Acolo ești tu cu mașina, într-o camera mica. Daca ai greșit, nu te suna administratorul. Se stinge lumina.

Același alfabet, dar alta viată.

Si tocmai de asta mi-a plăcut: schimbai mașina, schimbai dialectul, dar nu schimbai principiul. Totul se reducea la același adevăr simplu: ca să obții control, trebuie să renunți la confort.

- Sfârșit Capitol 17 -