PROGRAMACIÓ WEB
    L'ORDINADOR
Una mica d'història

No fa pas tant de temps que existeixen els ordinadors. A l'any 2021 encara som molts els que vam néixer quan no n'hi havia. I alguns de nosaltres fins i tot hem arribat a treballar uns quants anys sense ordinadors. En el meu cas com a metge: primer tota la carrera, i després fer les històries clíniques dels pacients, presentar comunicacions a congressos, publicar articles en revistes ... ¡tot això sense ordinadors!

Recordo perfectament la primera vegada que en vaig veure un. Era l'any 1984. Jo estava assistint a un curs d'estadística. El professor tenia un ordinador sobre la taula. En un moment donat va dir allò de: "Mireu, això és un ordinador. Això és el futur". I tot manipulant aquella màquina la va deixar preparada per resoldre el problema estadístic que ens estava proposant. Una cosa tan simple com això. Però per a mi va ser definitiu. Jo ja duia un temps interessat en el tema. Estava suscrit a una revista que es deia “My Computer” en la que, entre d'altres coses, s'explicaven principis de programació en BASIC. Només em faltava aquella "empenteta".

De seguida em vaig comprar el meu primer ordinador. Va ser un Commodore 64. El número 64 feia referència a la seva capacitat de memòria. Eren 64 K. Un mega són 1024 K. O sigui, que allò eren bastant menys que 0,1 Mb. Amb allò feies meravelles. I quan jo aconsellava als meus amics que es compressin un ordinador, porquè allò era el futur, el comentari més generalitzat era: "Sí, però, en el fons, ¿perquè serveix un ordinador?" Et quedaves molt frustrat. Però al final ho entenies. Era veritat. Allò no servia per a res.

No servia per a res si esperaves que servís per a alguna cosa. És a dir, si hi anaves amb mentalitat d'usuari. Aquesta paraula encara no s'havia ni inventat (amb aquest significat). Però ja m'entens. I ho dic sense cap connotació pejorativa. Tots som usuaris. Però en aquell temps, si tu volies "entrar" en l'ordinador, tenies que anar-hi amb una altra mentalitat. Havies de dir: "Val, d'acord, això no serveix per a res, però té moltes possibilitats". És a dir, havies de ser capaç de veure que allò tenia moltes possibilitats, i havies sentir-te atret pel repte de treure'n profit d'aquelles possibilitats. I la teva pregunta no era "¿Això perquè serveix?" sino "¿Això com funciona?, que ja decidiré jo quina utilitat li donaré." És a dir, no mentalitat d'usuari, sino mentalitat de creador.

I va començar una època d'autèntics herois, que van desenvolupar utilitats concretes per a aquelles màquines. El primer que va aparèixer van ser els processadors de text. I quan la gent amb mentalitat d'usuari va començar a comprar ordinadors, ho feien com el que es va anomenar "màquines d'escriure intel·ligents". De cop podies tornar a tenir tot un document imprès només prement un botó. Sense necessitat de tornar-lo a teclejar de dalt a baix. I amb la possibilitat de corregir errors. Fins i tot amb la possibilitat d'incorporar un fragment d'un altre document. Allò era "la bomba". Va ser la mort del Tippex i el naixement del "copiar i enganxar". I a partir de llavors un no parar de noves i noves utilitats concretes, fins a arrivar al dia d'avui, en que els ordinadors serveixen absolutament per a TOT.

Avui en dia ja ningú pregunta: ¿perquè serveix un ordinador? Avui en día tothom sap que un ordinador té possibilitats il.limitades. Avui, quan encens un ordinador, et troves un munt d'opcions, moltes de les quals te'n obren altres de noves, en una mena de cascada exponencial. I el que no tens en el teu ordinador és a internet. Això és el paradís dels usuaris. I els ordinadors, en totes les seves formes, s'han convertit en un instrument absolutament imprescindible.

Però, avui en dia queda encara algú que es pregunti: ¿com funciona un ordinador? Doncs sí, i aquest serà el tema del següent apartat.


Què és un ordinador i com funciona

Probablement estiguis ara mateix davant d'un ordinador, o equivalent. Però pensa que, en realitat, el que tens davant "només” és una pantalla. I potser un teclat. Però això no és l'ordinador. Anem a considerar que "l'ordinador" és el "xip", el processador que està dins de l'equip. Però en l'equip hi ha moltes altres coses: hi ha un disc dur, una placa de memòria, diferents ports de connexió, i possiblement altaveus, un micròfon, una càmera ... Tots aquests components estan connectats amb "l'ordinador". És a dir, amb el processador, que és l'autèntic "cervell" de tot això. Li diem la CPU (Unitat Central de Procés).

Per aquestes connexions circula corrent elèctric, en forma de pulsos. La freqüència de repetició d'aquests pulsos és molt elevada: varia entre uns equips i altres, però, en qualsevol cas, és de l'ordre de varis centenars (o fins i tot alguns milers) de milions per segon. Son els famosos megahertzios (un megahertz és un milió de cicles per segon). Hi ha dos tipus de pulsos, perfectament diferenciats. Clàssicament, es representen en forma de "zeros" i "uns". Però podrien representar-se mitjançant qualsevol altra cosa, que pogués tenir un de dos valors: blanc i negre, obert i tancat ... El que vulguis. Ens quedarem amb els clàssics "zeros i uns". A cada un d'aquests pulsos que pot tenir un de dos valors l'anomenem bit.

Les máquines que reben aquest corrent elèctric poden diferenciar perfectament entre ambdós tipus de pulsos, doncs no hi ha matisos intermedis. Les máquines poden, per tant, identificar seqüències de "zeros i uns". Les màquines estan expressament dissenyades per respondre de manera específica a l'entrada de determinades seqüències de “zeros i uns”. Per a aquestes màquines les seqüències de “zeros i uns” són autèntiques "instruccions" per que facin coses. Segons la màquina el resultat serà un o un altre: la reproducció d'un so, la composició d'una imatge, l'ejecució d'una sèrie de moviments de precisió, la còpia de la seqüència en un soport permanent ... El que vulguis. És el que anomenem tecnologia digital.

Per altra banda, hi ha màquines que capten característiques de l'entorn (llum, so, temperatura, pressió ... el que vulguis) i codifiquen els valors obtinguts en forma de seqüències de “zeros i uns”. És el que anomenem digitalització. Aquestes seqüències de “zeros i uns” són enviades a l'ordinador. Per a l'ordinador aquestes seqüències de ”zeros i uns” són dades.

I l'ordinador, ¿què fa? L'ordinador gestiona seqüències de “zeros i uns”. Les rep, les memoritza i les redirigeix a altres màquines. Les pot enviar a dispositius d'emmegatzematge i recuperar-les des d'allà. També les pot analitzar, és a dir, pot saber quin valor concret té cadascun dels seus bits. I, en base a això, pot comparar dos fragments de seqüències, i saber si són iguals o diferents. En base a això, pot avaluar condicions. I pot, finalment, crear noves seqüències de “zeros i uns” a partir d'unes altres, per adició, substracció o substitució de bits. És a dir, l'ordinador pot crear instruccions per que siguin executades per altres màquines. I pot fer això en funció del resultat de l'avaluació de condicions.

Però l'ordinador també és una màquina expressament dissenyada per respondre de manera específica a l'entrada de determinades seqüències de “zeros i uns”. És a dir, per a l'ordinador les seqüències de “zeros i uns” poden ser tant “dades” com "instruccions". De fet, en principi, són sempre “instruccions”. Perquè una seqüència de “zeros i uns” sigui considerada per l'ordinador como una "dada", ha d'anar necessàriament precedida d'una "instrucció" que li "digui" a l'ordinador: "Ep! Estigues atent, que el que ve ara és una dada, que has de memoritzar, que ja et diré després què has de fer amb ella." I necessàriament hi ha d'haver una altra "instrucció" que indiqui a l'ordinador que la dada s'ha acabat. En resum: l'ordenador funciona obeint ordres.

¿I qui li dóna les ordres a l'ordinador? ¡NOSALTRES!


La comunicació amb l'ordinador

Els ordinadors no tenen iniciativa pròpia (de moment). Necessiten que els hi diguem tot el que han de fer. ¿Això és difícil? En absolut. Cada vegada que cliquem amb el ratolí sobre una icona li estem donant una ordre a l'ordinador. El resultat pot ser, por exemple, que s'imprimeixi un document. Doncs vaja un desengany!. Si això passa així és perquè ja està preparat perquè passi així. Efectivament. Igual que quan a casa teva acciones un interruptor i s'encén un llum. No és màgia. Passa així porquè està preparat perquè passi així. Hi ha una instal·lació elèctrica dins casa teva. I una instal·lació exterior que porta l'electricitat fins a casa teva. I un lloc on es genera l'electricitat. I una empresa que es dedica a distribuir aquesta electricitat. I un contracte entre tu i aquesta empresa. Al final, tu acciones un interruptor i s'encén un llum. ¿Miracle?

Doncs amb els ordinadors passa el mateix. Quan fas clic sobre una icona es posa en marxa un procés preconfigurat que acaba fent arribar a l'ordinador la seqüència de zeros i uns necessària per que l'ordinador al seu torn enviï una altra seqüència de zeros i uns a la impresora perquè imprimeixi un document. I així amb tot. Actualment hi ha processos preconfigurats pràcticament per a tot, amb els seus corresponents "interruptors" per activar-los. I al clicar sobre aquestes icones (o al triar opcions de menús) nosaltres estem efectivament donant ordres a l'ordinador. Aquest conjunt d'icones i opcions de menús constitueixen un autèntic "llenguatge" de comunicació amb l'ordinador. Es tracta d'un llenguatge sense sintaxi, fàcil d'aprendre, intuïtiu (més o menys) i que permet l'"assaig i error". ¡Una meravella! És un dels factors principals que van propiciar l'expansió universal dels ordinadors.

Això ens porta a dues preguntes. Primera: ¿és possible (o tan sols imaginable) donar les ordres a l'ordinador "ficant-li" directament "a mà" els zeros i els uns? Segona: en cas de que sí fós possible, ¿hi ha cap necessitat, especialment avui en dia, de fer-ho així? És perfectament comprensible que per a la majoria de persones la resposta a aquestes preguntes sigui ¡NO! De totes maneres, intentarem aprofundir una mica en les dues qüestions.


La primera pregunta:


Això de introduir directament els zeros i els uns sembla una cosa no humana, o, si de cas, només a l'abast d'uns pocs elegits molt, però que molt, friquis. Doncs no és així. Això ho fem tots nosaltres constantment, però sense adonar-nos-en. Quan utilitzem el teclat. El teclat és una eina que transforma les pulsacions de tecles en seqüències de zeros i uns. Cada tecla una seqüència diferent. Per exemple, si pulsem la "p" (minúscula) estem enviant a l'ordinador la següent seqüència de zeros i uns: "01110000". Doncs que bé. Considerem ara aquesta altra seqüència més llarga:

     0111000001110010011010010110111001110100

Aquesta seqüència podria servir per dir-li a l'ordinador que imprimeixi un document. S'obté pulsant les tecles següents: "p", "r", "i", "n" y "t". Això no és casual, per descomptat. La seqüència de zeros i uns que desencadena una determinada acció ha estat "construida" expressament de tal manera que es formi amp l'escriptura d'una paraula relacionada amb l'acció. O sigui, que si introduïm directament una seqüència de zeros i uns ¿també estem posant en marxa un procés preconfigurat? Doncs sí. Llavors, ¿on està la gràcia?

Ja he dit abans que l'ordinador gestiona seqüències de zeros i uns. Però les coses que pot fer l'ordinador amb les seqüències de zeros i uns són en realitat només unes poques, i molt, molt elementals. Del tipus de rebre-les, memoritzar-les, analitzar-les, comparar-les i reenviar-les a altres dispositius. L'ordinador pot també crear noves seqüències de zeros i uns a partir d'altres, per adició, substracció o intercanvi de bits, seguint algoritmes matemàtics senzills. A aquestes accions les anomenarem "microaccions elementals".

Una part de la gràcia està en que aquestes "microaccions elementals" es poden combinar entre si, sent ejecutades moltíssimes d'elles, una després de l'altra, de manera extraordinàriament ràpida, obtenint al final una acció concreta. Les possibilitats són realment infinites. Quan un enginyer que està construint un ordinador consegueix una determinada acció concreta gràcies a una combinació de "microaccions elementals" voldrà no haver de repetir aquesta combinació cada vegada que vulgui obtenir la mateixa acció. Seria com construir de nou la instal·lació elèctrica de casa teva cada vegada que vulguessis encendre un llum.

I aquí està l'altra part de la gràcia: les seqüències de "microaccions elementals" també es poden guardar per poder ser aplicades novament quan faci falta, sense necessitat d'haver-les de reconstruir cada vegada. L'enginyer ha creat un circuit. Només falta posar-li un "interruptor" per poder activar-lo. Aquest "interruptor" serà una determinada sequència de zeros i uns que es formarà amb la pulsació de determinades tecles del teclat, formant una paraula fàcil de recordar. Al conjunt "paraula - acció" l'anomenarem "ordre bàsica".

I aquí comença el bo. Aquestes "ordres bàsiques" també es poden combinar entre si per a ser ejecutades de manera seqüencial i donar lloc a altres accions més elaborades. Aquestes noves seqüències també es poden guardar i se'ls hi pot donar un nom. Tindrem així noves ordres, amb les que, al seu torn, en podrem construir altres de més complexes, i així successivament.

Quedem-nos de moment amb que tenim un conjunt de "paraules-accions" (o sigui, un conjunt d'ordres) més o menys elaborat. I que podrem combinar aquestes ordres entre si per aconseguir noves accions més complexes. Això constitueix un autèntic llenguatge, que és difícil d'aprendre, sintàcticament molt exigent i laboriós d'aplicar. En qualsevol cas, l'ordinador sempre necessitarà una "xuleta" que li permeti "interpretar" les ordres, és a dir, en algun lloc han d'estar memoritzades les seqüències corresponents a cada ordre.

Aquestes ordres se li poden donar a l'ordinador de dues maneres: 1. en "mode interactiu", és a dir, una després d'una altra, decidint cada nova ordre en funció del resultat obtingut amb l'anterior. 2. en "mode programa", és a dir, deixant escrita tota la seqüència d'ordres, considerant diferents seqüències alternatives en funció dels diferents possibles resultats que es puguin obtenir en passos previs. I deixant que l'ordinador "decideixi" el camí a seguir, en base a la seva capacitat per avaluar condicions. Això és programar.

Mitjançant la programació podrem arribar a aconseguir que no sigui necessari escriure el nom d'una ordre per que sigui ejecutada, sino que aquest procés es pot "automatitzar" triant una opció en un menú o directament clicant sobre una icona. Al final tindrem un conjunt d'ordres molt elaborades, posades a disposició del'usuari a "tir de clics". Tindrem un programa.

Hi ha molts llenguatges de programació, de diversos "nivells". Llenguatges de baix nivell, amb ordres "properes" a les ordres bàsiques, i llenguatges d'alt nivell, que utilitzen ordres ja més elaborades. Així, pot haver-hi llenguatges més apropiats per unes cosas i altres per altres. És possible, amb alguns llenguatges de baix nivell, fer que l'ordinador pugui prescindir de la "xuleta", oferint-li la seqüència d'ordres directament en el seu propi "llenguatge". És el que s'en diu un programa compilat.

Però anem ja a la "segona pregunta". Especialment avui en día, en que hi ha programes PER A TOT, ¿serveix d'alguna cosa saber programar?


La segona pregunta:


Ja hem dit abans que la situació actual, amb les possibilitats il·limitades dels ordinadors, constitueix un autèntic “paradís per als usuaris”, quedant aparentement poc marge per als ”creadors”. Però compte, el concepte de "possibilitats il·limitades" es presta a interpretació. És cert que les possibilitats són moltes, moltíssimes. No te les podries acabar encara que visquessis vàries vides. Però això no vol dir que siguin il·limitades. I no ho són per la senzilla raó de que són les que són, i no unes altres.

Abans, quan encenies un ordinador, et trovabes amb un "C:\>" parpellejant en àmbar al cantó superior esquerre d'una pantalla negra. S'entén que, per a algú amb mentalitat d'usuari, allò fós un mur infranquejable. Però per a un creador, allò era la màxima expressió de les possibilitats il·limitades de l'ordinador. Perquè allò era una pantalla buida que no et deia que podies fer moltes coses, sino que podies fer el que vulguessis.

I aquí està el quid de la qüestió. En la diferència que hi ha entre "triar el que vulguis" i "fer el que vulguis". Si aprecies aquesta diferència voldràs saber programar. Has de saber que aquí sí que no hi ha límits. Els límits estan en tu mateix: en la teva imaginació, per idear coses a fer, en els teus coneixements, per trobar les solucions necessàries, en la teva capacitat de dur a terme aquestes solucions, i en el teu valor per fer-ho.


El codi informàtic

En les seqüències de zeros i uns els bits individuals s'agrupen de 8 en 8. Cada grup de 8 bits s'anomena un byte. Existeixen 256 bytes diferents. Són totes les combinacions possibles de 8 zeros i/o uns. Els bytes són les veritables unitats del codi informàtic.

No sé si coneixes una mica com va el codi genètic. A mi m'agrada molt establir un paral.lelisme entre els dos codis. El codi genètic es basa en 4 nucleòtids: adenina (A), timina (T), guanina(G) i citosina (C). El codi informàtic es basa en els dos possibles valors d'un bit: zero i u. En el codi genètic els nucleòtids s'agrupen de tres en tres, al que anomenem codons. En el codi informàtic els bits s'agrupen de 8 en 8, que són els bytes. El nombre de codons diferents és de 64, mentre que el de bytes és 256. A una seqüència de codons l'anomenem gen, i es tradueix en una seqüència d'aminoàcids (cada codó un aminoàcid determinat). Una seqüència d'aminoàcids és una proteïna. És a dir, els gens (les seqüències de codons) codifiquen proteïnes. I les seqüències de bytes codifiquen dades. No tots els gens codifiquen proteïnes, també n'hi ha que tenen funcions reguladores. I no totes les seqüències de bytes codifiquen dades, també n'hi ha que codifiquen ordres. Si amb 64 elements la Natura ens ofereix la varietat biològica que ens ofereix, ¡què no es podrà arribar a fer amb una col·lecció de 256 elements!

Els bytes es poden representar de diferents maneres. Una d'elles és directament como la seqüència de 8 bits. Per exemple "01001000". Aquesta seqüència la podem considerar como un número binari (per això s'utilitzen zeros i uns per a representar els bits). Nosaltres estem acostumats a comptar en el sistema decimal. Tenim 10 dígits que representen les quantitats de "zero" a "nou". Per a representar la quantitat "deu" ja no tenim cap dígit específic, per la qual cosa hem d'utilitzar el recurs d'escriure dos dígits i començar altre cop de zero. Així, posem un "u" i un "zero" per a representar la quantidad "deu". Explicat així és força enrevessat. ¡Amb el fàcil que seria dir que després del 9 ve el 10!

Però comptar en base al deu no és l'única manera de comptar. Imaginem-nos un sistema en el que disposèssim de 16 dígits, amb els que representar les quantitats del zero al quinze. Aquest sistema existeix, i s'en diu hexadecimal. En ell les quantitats del "deu" al "quinze" es representen amb lletres, de la "A" a la "F". En aquest sistema ens quedem sense dígits a l'arribar a la quantitat "setze". Es llavors quan hem d'utilitzar el recurs d'afegir un dígit i tornar a començar de zero. És a dir, en el sistema hexadecimal "10" representa la quantitat setze, "11" la disset, i així successivament.

Doncs bé, també existeix el sistema binari, en el que nomès hi ha dos dígits, que representen les quantitats "zero" i "u". En el sistema binari ja hem d'afegir un dígit per a representar la quantitat "dos", que será "10". I "11" és tres, "100" quatre, i així successivament. Doncs bé, resulta que la seqüéncia d'abans ("01001000"), convertida a decimal, és el nombre 72. És a dir, aquesta és una altra manera de representar els bytes, amb els seus equivalents en notació decimal, que irà de 0 a 255 (de "00000000" a "11111111").

També podem representar els bytes en sistema hexadecimal, que té l'avantatge de necessitar només dos dígits per a arribar a 255 (de "00" a "FF"). En hexadecimal el nombre 72 es representa amb "48".

Imaginem-nos ara que tinguéssim una llista de 256 elements diferents. Podriem representar cadascun dels 256 bytes amb un únic element. Aquesta llista existeix. És el codi ASCII. En el codi ASCII hi ha l'alfabet complet, amb majúscules i minúscules, els dígits del 0 al 9 i tots el signes gramaticals i aritmètics. I encara sobra espai per uns quants altres signes diferents, sense cap significat concret. En aquesta llista l'element que ocupa la posició 72 és la lletra "H". Però atenció, l'ordinador no "sap" que allò és la lletra "hac majúscula". Ni tan sols "sap" que està format per dues barres verticals unides per una d'horizontal. De fet, podria tenir qualsevol altre aspecte. L'únic rellevant per a l'ordinador és que es correspongui amb el byte "01001000".

Considerem ara la següent seqüència de bytes:

     01001000 01101111 01101100 01100001

Si la representéssim amb el seus equivalents decimals tindriem: 72, 111, 108 y 97.

I en hexadecimal seria: 48 6F 6C 61.

I substituint cada byte pel caràcter corresponent del codi ASCII tenim: Hola.

Que aquest últim resultat tingui per a nosaltres un significat determinat no és més que el fruit d'un convencionalisme humà, que en algún moment hem hagut d'aprendre. Però l'ordinador és completament aliè a això.

Imagina't una fassana d'una casa amb 32 finestres, que poden estar obertes o tancades. Es podrien disposar de tal manera que codifiquéssin la paraula "Hola". Imagina't ara centenars de milers de "Manhattans", amb els seus milions de finestres, en un paisatge nocturn de finestres enceses i finestres apagades. ¡Aquí sí que es pot guardar informació! Doncs això és la placa de memòria del teu ordinador. Imagina't ara que s'en va la llum. De cop, tot Manhattan a les fosques. Has perdut la informació. Segur que t'ha passar alguna vegada.

Afortunadament, els llenguatges de programació queden molt "allunyats" d'aquesta estructura íntima del codi informàtic. En el fons, programar és més fàcil del que et pugui semblar ara.


Els llenguatges de programació

Hi ha diferents llenguatges de programació. És inevitable que els llenguatges vagin evolucionant. És necessari anar incoporant els avenços tecnològics que es van produint.

Al principi la programació era realment "heroica". S'ajustava perfectament a la idea de que programar és definir una seqüència d'ordres que l'ordinador haurà d'ejecutar una després de l'altra. En el llenguatge BASIC original les ordres s'escrivien cada una en una línia, que estaven numerades correlativament. Hi havia una instrucció molt característica, que era el "GOTO", seguida d'un número de línia. Representava un punt de "bifurcació", en el qual l'ejecució del programa saltava al número de línea indicat si es cumplia una condició determinada. Quan modificaves el codi afegint noves línies entremig, la numeració de las línies subseqüents canviava automàticament. Si aquest canvi de numeració afectava al "destí" del "GOTO", havies de modificar també "a ma" la instrucció corresponent.

Ben aviat va sorgir la idea dels procediments, com conjunts d'ordres agrupades sota un nom. La instrucció "GOTO" o els seus equivalents ja no dirigien a un número de línia, sino al nom d'un procedimient, que podia ser "cridat" des de diferents punts del programa. Hi ha uns procediments especials, que retornen un determinat valor, resultat de l'evaluació d'una sèrie de paràmetres, que li son "passats" al procediment quan es "cridat". Aquests procediments es diuen funcions.

Després va venir la programació "modular". Un mòdul és un conjunt de procediments i funcions, generalment relacionats entre sí, per la seva temàtica o pel que sigui, la qual cosa permet tenir les coses més endreçades a mesura que un programa va creixent en complexitat. A més a més, els mòduls que es van construint poden ser utilitzats més tard en altres programes.

L'evolució natural de les maneres de programar va donar lloc a la programació orientada a l'objecte. Per entendre bé aquest concepte anem a canviar la idea de programa. És cert que un programa és una succesió d'ordres escrites, perquè l'ordinador les executi seqüencialment. Però també podem considerar un programa com una succesió de pantalles interactives. I aquí ja comencem a entendrens millor. Tots sabem que els programes comencen amb una "primera pantalla", i que les pantalles succesives que vagin apareixent dependran de la nostra interacció amb cada una d'elles. Des d'aquest punt de vista, programar consisteix en dissenyar aquestes pantalles. Les pantalles tindran un aspecte, un contingut i uns mecanismes d'interacció. I les ordres que escrivim aniran dirigides a aconseguir aquests objectius. Les pantalles estan formades per diferents elements individuals, que són els "objectes". Cada objecte tindrà el seu propi aspecte, contingut i mecanismes d'interacció. Programar consistirà en definir els objectes que han d'aparéixer en cada pantalla, i determinar el seu aspecte, contingut i automatismes. Els llenguatges de programació en general ofereixen col·leccions d'objectes "prefabricats", en els que es pot canviar el seu contingut i aspecte modificant valors de propietats predefinides. Els objectes poden portar incorporats procediments, generalment anomenats métodes, que determinen els seus automatismes. Els mecanismes d'interacció es gestionen amb els events. Els events són "coses que passen" que poden ser reconegudes pels objectes (per exemple, la pulsació d'una tecla o el pas o el clic del ratolí, però n'hi ha molts més). Es poden escriure procediments específics com a resposta als events. Però el concepte d'objecte és més ampli. Tota la pantalla pot ser considerada en sí mateixa como un objecte. O inclús el propi programa en el seu conjunt. I altres elements necessaris per al funcionamient del programa també són considerats com objectes, encara que no apareguin en la pantalla. Parlem d'objectes visuals i no visuals. Per exemple, elements per a la connexió a arxius. Però n'hi ha molts més. Tots ells tenen les seves propietats, mètodes i events. Al final, programar es "limita" a acoblar objectes entre sí, assignant valors apropiats a les seves propietats, aprofitant els seus mètodes i gestionant els seus events.

Hi ha programes "per programar". Ofereixen una sèrie d'objectes, que es poden incorporar a les pantalles "en construcció" triant-los en un menú i arrossegant-los amb el ratolí. Presenten les seves propietats en llistes desplegables i cada propietat mostra els seus possibles valors, per triar el que més convingui. Tot això és un "macroassistent" que el que fa és escriure automàticament les instruccions corresponents. És a dir, tradueix aquestes accions en codi. Però només amb això no n'hi ha prou. Sempre haurem d'escriure nosaltres codi adicional per acabar de construir el nostre programa. I això s'ha d'aprendre.


Un llarg camí

Tota aquesta evolució va tenir lloc com a conseqüència dels avenços tecnològics, però també de la competència i rivalitat entre les empreses. En un principi només existia IBM. Es dedicava a la fabricació dels ordinadors "d'aquell temps". Aquells primers ordinadors eren màquines pensades per a organismes estatals i eren enormement voluminoses, ocupant habitacions senceres. Eren manipulats per enginyers experts i funcionaven directament amb zeros i uns. La idea d'un ordinador "personal" ni tant sols se li havia passat a ningú pel cap. Però a poc a poc sí que van anar apareixent aparells, que difícilment podien considerar-se ordinadors, però que es basaven en els mateixos principis. Eren poc més que "joguines" per a ús personal. IBM no tenia cap interès en allò, però hi va haver altres empresas que sí. Entre elles Microsoft, d'un tal Bill Gates. Es dedicava a la creació de petits programes.

Va arrivar un moment en que IBM sí va voler fabricar "ordinadors personals" i es va posar en contacte amb Microsoft. Va néixer l'IBM-PC, que funcionava amb MS-DOS. L'IBM-PC era un ordinador personal (Personal Computer) per dues raons. D'una banda, s'havia disminuït la mida de l'ordinador a la seva mínima expressió, havent aconseguit un aparell que es podia posar a sobre d'una taula. Per altra banda, aquesta disminució de mida implicava també una disminució de prestacions, però que es consideraven suficients per satisfer les necessitats d'una persona particular. El terme "PC" s'ha generalitzat per designar en general als ordinadors. El MS-DOS era el Sistema Operatiu de Disc de MicroSoft. Era un llenguatge per gestionar els arxius, que estaven guardats en discs, ordenats en un esquema "arboriforme" de directoris i subdirectoris (posteriorment anomenats carpetes i subcarpetes). El llenguatge permetia seleccionar un disc i "navegar" pel seu arbre de directoris per localitzar, copiar, borrar i ejecutar arxius. Todo això mitjançant ordres escrites. Els primers ordinadors no tenien disc dur. Necessitaven tenir inserit permanentement un "disc de sistema" en una disquetera (Unitat A) y podies posar un disc amb altres arxius en una segona disquetera (Unitat B). Amb el temps, especialment amb l'aparició dels discs durs, les Unitats A i B van deixar de ser necessàries, i els discs durs van passar a ser per sempre la Unitat C. Aquells primers ordinadors personals eren d'aquells que ja hem mencionat abans com a no aptes per a gent amb mentalitat d'usuari.

I llavors va arrivar Steve Jobs, amb la seva empresa Apple i el seu ordinador Macintosh. Era un ordinador diferent, revolucionari, especialment pensat per a usuaris sense conexeiments especials. Se li donaven ordres triant-les amb un ratolí que es desplaçava sobre una pantalla gràfica. Sense necessitat d'escriure-les, ni de conéixer cap llenguatge. Va triunfar.

IBM i Microsoft es van haver de "posar les piles". Va néixer Windows, després d'un "penós" PC-tools. Però aquell primer Windows no era més que un MS-DOS "maquillat", perquè tingués una certa aparença de Macintosh. En qualsevol cas, incorporant plenament la pantalla gràfica, el ratolí i les finestres. Van seguir successives versions de Windows, sense acabar de quallar. A principis del segle XXI Microsoft va fer una mena de "creu i ratlla", un "començar de zero". Es va crear la plataforma .NET. El sistema operatiu segueix dient-se Windows, però es basa en una arquitectura completament diferent.

La plataforma .NET incorpora una extensa col·lecció d'objectes predefinits, que poden ser utilitzats per diferents llenguatges. Es el Framework.NET, que podem traduir literalment com a marc de treball, però que, per entendrens, n'hi direm "conjunt de recursos" o "caixa d'eines". Del Framework.NET han anat apareixent successives versions. En aquest enllaç s'ofereix una descripció detallada de tots els objectes que composen la versió 4.7.2 del Framework.NET, amb les seves propietats, mètodes i events. Els objectes estan agrupats per temes, en el que s'anomena "espais de noms" (Namespaces). A l'hora de programar utilitzant els objectes de Framework.NET s'haurà de tenir en compte la versió. Pot passar que un programa que funcioni bé en un ordinador no ho faci en un altre que tingui una versió de Framework més antiga. Es compleix una màxima universal, que és que cap programa pot fer que un ordinador fagi coses que l'ordinador no sigui capaç de fer.

Donem ara un gran salt endavant i anem directament a les pàgines web. Una pàgina web també és una pantalla que té un contingut, un aspecte i uns automatismes. I també és "construïda" seguint unes instruccions. Aquestes instruccions s'ejecuten en el nostre ordinador, però estan en un altre lloc, en un altre ordinador, en "el núvol". El que nosaltres tenim en el nostre ordinador és un programa que localitza aquestes instruccions i les executa, obtenint com a resultat la visualització de la pàgina en la nostra pantalla. Aquest programa és el navegador. Aquest esquema de funcionament està molt bé, doncs les mateixes instruccions serviran per veure la pàgina web en diferents dispositius. És el navegador el que és específic de cada dispositiu i l'encarregat d'adaptar les instruccions al dispositiu concret. És cert que hi ha diferents navegadors que poden ser utilitzats en un mateix dispositiu. Cada un interpreta les ordres a la seva manera i la visualització final de la pàgina pot ser diferent. Fins i tot pot passar que algunes pàgines puguin veure's amb uns navegadors i no amb uns altres. Això pot ser degut a incompatibilitat de versions. El llenguatge per programar pàginas web va evolucionant, i els navegadors s'han d'anar adaptant. També pot passar que hi hagi errors en el programa, i que uns navegadors els puguin gestionar millor que altres.

Les pàgines web es programen utilizant més d'un llenguatge. El principal és el HTML, que s'encarrega bàsicament de definir el contingut de la pàgina. Per programar qüestions relatives al seu aspecte més detallat s'utilitza el CSS. I pels automatismes i mecanismes d'interacció s'utilitza el Java Script. I tot això està en "el núvol". Intentem entendre què és el núvol. ¿Què és la web? ¿Què és Internet?