Sovint en Xavier Sala-i-Martin tracta algunes qüestions amb grans dosi de demagògia, superficialitat i meliquisme. Dic algunes perquè només goso parlar de les que conec. No en se gaire, d’economia, però sí d’informàtica, i avui he llegit aquest paràgraf a un dels seus articles:

Durante 1999 nos avasallaron con aquello del Y2K, un desastre informático que tenía que destruir todos los ordenadores al entrar el nuevo milenio. Se sepultaron miles de millones de euros en protección y, al final, ni un solo ordenador en todo el planeta resultó tener problemas (ni siquiera los que, como el mío, nunca fueron inmunizados por lo que no vale la excusa de que no hubo problemas gracias a las medidas adoptadas). Nadie asumió responsabilidades por la gigantesca intoxicación informativa.

L’article tracta del perill d’informacions falses mentre ell aprofita per escampar-ne una: «l’efecte 2000 és una intoxicació».

És veritat que els usuaris dels programes que vaig escriure no van tenir problemes els primers dies del 2000. També que vaig presentar minutes per les feines d’adaptació dels programes a les dates del 2000. Però el més important és que les minutes reflectien una feina feta, no un engany.

Fet i fet, tot el 1999 –i una bona part del 1998– vaig dormir més aviat poc perquè em feia falta tenir molt temps per a fer la feina de sempre i, a més, modificar tot el codi que tractava només dos dígits de la dada any. Escric programes des del 1983 i des d’aleshores havia acumulat molt codi que caldria revisar.

Veia com sortien els primers escriptoris lliures KDE i GNOME, volia migrar el meu cap a programari lliure però no tenia temps material per a fer el canvi! A l’hora de programar la matèria primera és el temps, un bé escàs del que no se’n pot comprar més ni fer provisions d’estoc.

L’estalvi d’espai

Altos Computer Systems i un terminal Wyse 60Quan els discs eren petits calia anar molt alerta amb el que s’hi desava. Recordo les coses que arribar a fer perquè un apunt de comptabilitat ocupés el mínim possible.

El darrer va consistir en guardar en forma de caràcter ASCII el codi del concepte comptable de l’apunt. Significava estalviar 1 caràcter per apunt [1], i algunes empreses en tenien 20.000 l’any. Això significava 20.000 caràcters menys. Avui fa riure, és el que ocupa la imatge de la capçalera d’aquest blog. Però aleshores significava una 4% dels 500.000 caràcters que cabien a un disquet de 8 polzades i doble densitat. ÿs el que portaven els ordinadors Altos que usàvem en aquell moment. A la foto que acompanya aquest apunt en teniu un (feu-hi clic si el voleu veure més gran [2]). Cal dir que el terminal Wyse 60 no hi fa joc: usavem les ADM 3a i més endavant les TeleVideo 910.

Les dates eren una font important d’estalvi: 4 caràcters, tot un luxe. Calia llevar els guions (2 caràcters) i el 19 de l’any. Així, el 14-01-1984 es desava com a 840114. Per entendre’ns li vam dir format AAMMDD i una data ocupava 6 caràcters en comptes de 10.

Però encara es podien fer més coses per a reduir l’espai necessari per desar una data. Una va provocar el nostre particular «efecte del 17 de setembre de 1989»:

Existia un tipus de dada que només necessitava 3 caràcters a base de no guardar res fora del rang -32.767 i +32.767 [3]. El llenguatge de programació que empràvem [4] tenia una funció que tornava els dies que havien passat des del 31 de desembre del 1899. Una altre funció tornava la data a canvi dels dies. Així, un day(“14-01-84”) contestava amb 30694 i un date$(30694) amb “14-01-84”. Guardar la data en 3 caràcters en comptes de 6 era aleshores molt temptador. Vam pensar que el 17 de setembre de 1989 hi hauria més espai i ja ho canviaríem.

Per no carregar-nos de feina l’estiu del 89 vam decidir que només la comptabilitat portaria així les dates. La resta de dates es guardaven el els 6 caràcters del format AAMMDD. En el cas de factures, albarans, rebuts, etc. la tàctica era esborrar la informació tot d’una que no fes falta per altres processos informàtics. Així, els albarans facturats s’esborraven tot d’una. També les factures passades a comptabilitat. Al capdavall ja estaven impreses i fins ara el paper havia estat la forma de tractar la informació a les oficines. En canvi, era molt pràctic tenir en línia la comptabilitat d’un exercici complet. Aleshores la comptabilitat era el centre de la gestió informatitzada a les empreses. Ho vam aconseguir a base d’apunts comptables que només ocupaven 48 caràcters –pels ordinadors d’aleshores i la majoria de clients amb qui teníem tractes, clar. A partir de l’estiu del 89 van ocupar 51 caràcters, però els disquets d’1,2 MB eren una cosa corrent… a ordinadors que portàven disc dur de fins a 20 MB!

Abans del setembre del 89 només vam canviar un programa, el de comptabilitat, comú per al 95% dels clients. En el nostre cas, els programes de facturació sempre tenien adaptacions a mida de cada usuari però gairebé mai el de comptabilitat, més ajustat a la cosa legal.

L’aparició de discs més grans mai no van significar per naltros llum verda per a malbaratar espai. Més aviat ens els miràvem com una manera d’aconseguir que els usuaris tinguessin més informació en línia i que no fes tanta falta usar paper. Abans del 1995 els discs no eren gaire grans, tampoc.

Al 1995

Al 1995 van sortir els discs 2 GB. No era res de l’altre món per guardar 5 anys de dades –el que demana la llei. Tot i això, aleshores ja teníem clar que calia usar 4 xifres per desar els anys, però no ho era fàcil aconseguir-ho. Sovint les feines consistien en adaptar a diferents necessitats el que ja estava fet, més que no pas fer programes totalment nous. Els programes ja tenien tantes versions com clients diferents que l’usaven. D’aquesta manera anàvem arrossegant les dates AAMMDD dins codi diferent per cada client. Podíem dir-los-hi «aprofitem aquest canvi al sistema de comandes per desar els anys en 4 xifres?» però ens haurien dit que no: sempre era més gran la feina de canviar les dates. Tampoc no entenien gaire bé què passava amb les dates. No va ser fins que va començar a córrer la història de l’efecte 2000 que tothom va estar disposat a invertir en arreglar-ho. Tothom de cop. No va ser una feina divertida, precisament.

El problema dels anys de 2 xifres

Les dates en format AAMMDD eren còmodes perquè ens permetia fer-ne ordenacions i càlculs matemàtics.

Quan els anys només tenen dos dígits, 99 és matemàticament superior a 05. Però una data 05 vol dir 2005 i una 99 significa 1999. Al calendari 2005 és posterior que 1999, però les dues xifres diuen el contrari a l’hora de fer càlculs. No les podíem usar més en processos que impliquen càlculs de temps: interessos, lloguers, dates de venciment d’efectes a pagar, cobrar i un llarguíssim etc.

El canvi implicava guardar les dates com AAAAMMDD, cosa que no feia canviar cap càlcul, però sí totes parts del codi que passaven les dates des de DD-MM-AAAA cap a AAAAMMDD i viceversa: ja ho es podia cercar el mes a les posicions 3 i 4 de la cadena, ara estava a les 5 i 6. Els programes fan coses així, i a molts més llocs del que sembla.

Calia modificar pantalles i llistats per fer-hi cabre 2 dígits més per l’any. En alguns casos no hi havia espai, així que va fer falta empescar-se qualque doble tractament de les dates: un per pantalla i un altre intern.

Al cap del dia s’entren moltes dates, a un despatx, i era una molèstia sempre picar el mateix: un 20. Vaig crear sistemes per afegir el 19 o el 20 segons la xifra entrada. No servia per a tothom igual, així que van sorgir mecanismes nous per a dir «totes les que siguin menors de 40 porten un 20 davant» i que els usuaris ho poguessin canviar per una altre xifra, com 55 o 30 en comptes de 40.

Tot plegat ho vaig repetir a més de 1700 programes diferents que tractaven dates.

També va fer falta crear programes nous per afegir un 19 a totes les dates desades. Els processos duraven moltes hores, no sempre acabaven bé a la primera. Alguns van voler fer la conversió els darrers dies del 1999 o els primers del 2000. No podia estar arreu al mateix temps, així que vaig preparar aquests conversors perquè els usessin persones que no són informàtiques: missatges d’error comprensibles, ajudes per identificar on estava el problema, maneres de retrocedir fàcils per tornar-ho a provar…

Però segons en Xavier Sala-i-Martin, tot això que explico és una excusa:

(ni siquiera los que, como el mío, nunca fueron inmunizados por lo que no vale la excusa de que no hubo problemas gracias a las medidas adoptadas)

Què n’és de bonic, el meu ordinador llombrígol! És el que té ser liberal.


He vist l’article del Xavier Sala-i-Martin a menéame.
[1] El codi de l’apunt tenia 2 dígits, des del 00 fins al 99. El valor en ASCII de la lletra A és 64, així que, per exemple, guardàvem una A (un caràcter) en comptes d’un 64 (dos caràcters).
[2] Imatge: Computer Refuge.
[3,4] Les variables senceres del BASIC del sistema operatiu OASIS, més endavant THEOS. Aquell BASIC no va permetre escriure funcions fins al 1990 (més o manco).