Programa

Col·laboració de Júlia DeBalle per al capítol Primers ordinadors

Els programes o software (literalment: conjunt tou) són tots els components intangibles d’un ordinador. És a dir, el conjunt de procediments necessaris per a fer possible la realització d’una tasca específica. També són la contraposició del hardware (literalment: conjunt o part dura), la part física del sistema. Totes dues són imprescindibles per a aconseguir el funcionament de qualsevol màquina.

Els programes inclouen la totalitat d’aplicacions informàtiques, com poden ser els processadors de textos (el més conegut és el Word, de Microsoft), que permeten a l’usuari fer alguna tasca, i també els softwares de sistema, altrament coneguts com sistemes operatius (en nombrarem a dos: el Windows i el Linux, dels que parlarem més endavant). Aquest són els ‘contenidors’ que acullen els programes, en permeten el bon funcionament i faciliten la interacció dels components físics amb la resta d’aplicacions.
Segurament la definició més universal de software és aquesta: «suma total de programes de còmput, procediments, regles, documentació i dades associades que formen part de les operacions d’un sistema de còmput», atribuïda a la IEEE (Institut d’Enginyers Elèctrics i Electrònics). Sota aquest concepte aquí descrit no només hi trobem els programes de còmput per se, sinó també totes les formes possibles que aquests poden prendre com els codis font i la seva documentació (tot allò intangible).

L’operació més simple i característica d’un programa consisteix en llegir diferents seqüències d’instruccions de la memòria d’un dispositiu amb l’objectiu de controlar alguns càlculs. Aquest concepte va ser inventat i va esdevenir real per primera vegada de la mà de Charles Babbage i la seva màquina diferencial. Però la major part del software modern té la seva base en la teoria publicada per Alan Turing en el seu assaig “Sobre els nombres computables, amb una aplicació al problema de la decisió”, de 1936.

Cada software, tot i ser quelcom intangible, adopta una ‘forma’ específica que vol un procés de maduració per arribar-hi. Podríem concretar el seu procés d’escriptura en tres fases principals, que corresponen a les distintes formes que adopta durant la seva ‘vida’:

· Codi font: és el que escriuen els programadors i es tracta d’un conjunt d’instruccions que van dirigides a l’ordinador.

· Codi objecte: és el resultat de la compilació del codi font. La tasca de compilar la fan els compiladors i consisteix en traduir un programa escrit en un llenguatge de programació (codi font) a un altre llenguatge de programació. El resultat és equivalent al primer, simplement es ‘tradueix’. La raó per la que es fa aquesta traducció és aconseguir un llenguatge de nivell inferior (conegut com a llenguatge màquina), que és més fàcil de manejar per a una màquina i menys humà. En resum, podríem dir que el programador escriu en primera instància un text en un llenguatge humà, intuïtiu i en què els símbols tenen a veure amb el significat, i que llavors això es tradueix a formes lògiques, per evitar les ambigüitats i facilitar-ne el processament per part de la màquina.

· Codi executable: és el que resulta d’enllaçar un o diversos trossos de codi objecte, i constitueix un arxiu binari (únicament representat amb zeros i uns) que té un format susceptible de ser carregat a la memòria de l’ordinador per part del sistema operatiu. Així, aquest codi ja és intel·ligible per la màquina i està a punt per a ser executat.

Aquesta matèria pertany a la disciplina d’enginyeria del software i consta de diverses etapes de gestió i desenvolupament. Les principals i imprescindibles les mencionem a continuació:

· Anàlisi: un cop decidit el problema que es vol respondre, en aquesta etapa s’estudia el problema per veure com pot ser resolt per un ordinador.
· Desenvolupament: quan ja se sap com es vol tractar el problema cal dissenyar el programa i escriure’l.
· Construcció: un cop escrit, s’han d’unir les diferents parts de què es compon i traduir el codi font a l’executable (compilar).
· Proves: és el moment de veure que el que s’ha fet funciona correctament i de comprovar que les solucions esperades a determinats problemes són les que s’obtenen.
· Producció: si les proves donen positiu ha arribat l’hora de distribuir el programa.

El software lliure és aquell que garanteix les següents llibertats:
· Pot ser executat amb qualsevol propòsit (privat, educatiu, públic, etcètera)
· Pot ser estudiat i modificat (fet que implica l’accés al codi font)
· Pot ser copiat
· Pot ser millorat i les millores s’han de publicar

En resum, és el que pot ser utilitzat, copiat, estudiat, modificat i redistribuït lliurement i el més habitual és que sigui disponible gratuïtament, tot i que no té perquè ser així. Va acompanyat d’una sèrie de llicències que el diferencien del software de domini públic i que comprenen, entre d’altres, l’obligació de publicar els canvis de les versions millorades, l’obligació de donar crèdit dels qui hi han treballat amb anterioritat als canvis, la prohibició de ser utilitzat com a part de programes amb ànim de lucre, etcètera.

El software de domini públic, en canvi, sempre és gratuït ja que no és de ningú en concret, sinó ‘patrimoni universal’. Aquest no ve reglamentat per cap tipus de llicències i en general això és perquè els drets d’autor han expirat i, per tant, és disponible i modificable per tothom, sense restriccions.

Avui en dia el software lliure més utilitzat del món és el sistema operatiu Linux, del qual existeixen vàries distribucions que es poden descarregar gratuïtament a través d’internet. El nombre d’usuaris que en fan ús augmenta a poc a poc però sense parar, i les diferents versions existents són fruit de l’esforç i cooperació entre milers de programadors altruistes d’arreu del món, la filosofia dels quals xoca contra la del software comercial de Microsoft.

Col·laboració de Júlia DeBalle per al capítol Primers ordinadors