Programar l'ordinador: què ens pot aportar a classe?

(Publicat a Cantabou #38, juny 2015)

Joan M. Mas, assessor de TIC del CEP d’Inca

Abans i ara

Als inicis de la informàtica d’usuari —parlem de començament dels anys 80— la majoria d’aquells que s’atrevien amb l’ordinador ho feien amb una gran curiositat envers l’arquitectura i el funcionament de la màquina. L’usuari normalment volia saber quins eren els components del maquinari i com interactuaven entre ells; de quina manera funcionava el programari i com es processaven les ordres i, per suposat, com es podien redactar programes personalitzats, per exemple per fer els càlculs habituals a la seva feina o als seus estudis.

Els programes disponibles per als ordinadors personals eren escassos i limitats, però hi havia l’opció d’escriure programes a mida amb algun llenguatge de programació relativament senzill, com ara BASIC. L’assignatura d’informàtica solia tractar aquests continguts, i es considerava necessari aprendre unes nocions bàsiques dels comandaments del sistema operatiu i algun llenguatge de programació.

Aquí tenim un petit programa en el llenguatge Python: demana el número del DNI i, utilitzant l'algorisme adient, en calcula la lletra del NIF corresponent. El programa en sí es redueix a les línies que comencen en color negre i la final (quatre línies). La resta són indicacions del mateix sistema i comentaris que expliquen que es fa a cada passa. Si teniu curiositat per veure com es pot fer exactament la mateixa operació amb diferents llenguatges de programació, podeu visitar bit.ly/1TdhUeg .
Tan bon punt van aparèixer sistemes operatius i aplicacions basades en finestres, en especial cap a la segona meitat dels anys 80, es van imposar ràpidament. L’ús de l’ordinador ja no exigia la memorització d’una sèrie d’ordres més o menys críptiques; es podia triar d’entre un seguit d’opcions, un veritable menú oferit per les aplicacions d’una manera consistent i previsible. L’ensenyament de les Tecnologies de la informació i la comunicació (o informàtica) es va centrar en aspectes procedimentals, sobre tot de la gestió del sistema operatiu basat en finestres i de les aplicacions d’ofimàtica.

El programari s’ha fet cada cop més intuïtiu i potent. I amb internet, les possibilitats de col·laboració i ús social de les aplicacions s’han fet consubstancials a les TIC. Més recentment, les tauletes i dispositius mòbils ens fan insistir encara més en aquesta tendència: la interacció amb l’usuari, realitzada amb gestos i moviments que recorden el que faríem amb objectes reals a un escriptori, com ara desplaçar-los. Ja no se’ns fa estrany veure un infant molt petit utilitzant jocs o aplicacions educatives amb el telèfon intel·ligent o la tauleta.

A moltes escoles s'empra com a iniciació al codi el llenguatge que descriu les pàgines web (una combinació del llenguatges HTML i CSS). Aquesta captura mostra un editor en línia que mostra instantàniament el resultat del codi escrit a l'esquerra (http://scratchpad.io).


Recuperant el valor de programar

Totes aquestes tendències van arraconar gairebé del tot l’ús educatiu de la programació informàtica de l’escola. Tret d’algunes excepcions, podem dir que a la majoria de sistemes educatius, l’aprenentatge de la programació informàtica havia gairebé desaparegut durant dues dècades.

Durant els darrers anys, però, observem algunes tendències que, d’alguna manera tanquen el cercle: tornem a interessar-nos per manipular el maquinari i aprendre a fer i modificar programari; tot això, és clar, en un sentit diferent dels de trenta o quaranta anys enrere.

Cada vegada són més necessàries persones amb qualificació professional o competència per programar en diferents sectors de l’economia (a mesura que la informatització i automatització s’estén per tots els sectors). Les oportunitats de treball, i de desenvolupar una carrera professional vocacional, en relació a aquestes capacitats augmenten i es diversifiquen. Hi ha una diferència significativa entre la indústria del maquinari i la del programari. Mentre obrir-se pas en la indústria del maquinari és difícil i existeix una competència poc menys que insuperable, és possible que qualsevol persona o equip, des de qualsevol lloc, pugui crear programes o aplicacions per als dispositius mòbils. En resposta a aquests reptes, alguns països capdavanters —Estònia n’és un exemple paradigmàtic— estan adoptant una estratègia per aprofitar el valor educatiu del codi informàtic i estan introduint les mesures necessàries per fer-hi lloc als curricula.

Dues innovacions molt significatives en el maquinari que s’obren pas a moltes escoles són els micro-ordinadors de baix cost, com el Raspberry Pi, i els kits de robòtica, exemplificats per Arduino. A més, anem pel camí de la Internet de les coses: tota mena de sensors i ginys mecànics que executen ordres que s’han generat automàticament o s’han transmès a distància. Combinant això amb eines de programació més potents i intuïtives, disposem de solucions de cost molt reduït per experimentar sense por, i d’eines per aprendre programant i programar a mesura que s’aprèn, d’una manera motivadora i creativa.

Per planificar una seqüència de passos dins del programa informàtic se solen utilitzar uns diagrames amb uns símbols estandaritzats per indicar l'inici i el final (òval o rectangle arrodonit), les entrades / sortides (romboide), les operacions que cal fer amb les dades (rectangle) les condicions que es poden verificar o no (rombe).


Programar, per a què?

Hi ha nombrosos estudis que destaquen els beneficis d’aprendre a programar. Citem-ne us quants, els més evidents:
  • millorar les destreses per resoldre problemes;
  • desenvolupar el pensament lògic i analític;
  • potenciar l’atenció als detalls;
  • ser perseverant en les tasques;
  • aprendre a fer-se preguntes i explicitar-les;
  • ser creatiu i treballar col·laborativament, perquè molts programes es desenvolupen en equip i sovint no hi ha una manera única de fer les coses. Un treball en equip ben estructurat permet arribar a solucions més diverses i més creatives.

Per tant, quan programem, estem aprenent de debò, mobilitzem unes estratègies d’aprenentatge poderoses, i perfeccionem unes habilitats que aniran molt més enllà del projecte concret que estem fent amb l’ordinador.

Seymour Papert (Schwarz, 1999) diu que el veritable poder de l’ordinador com a eina educativa rau en la seva capacitat de facilitar i extendre les capacitats naturals dels nins i nines i permetre’ls dissenyar, fer hipòtesis, explorar, experimentar, avaluar, extreure conclussions: en poques paraules, aprendre, i a més, fer-ho per ells mateixos.

Programar, com?

Fer un programa consisteix en indicar una successió de passos que s'han d’executar per tal d’obtenir un resultat: reunir una sèrie de dades —que l’usuari introdueix o el programa recupera des de l’ordinador o la xarxa, per exemple accedint a un fitxer determinat—, fer una sèrie d’operacions amb aquestes dades, tot decidint l’ordre necessari (aquí és on es poden aplicar condicions, efectuar bucles, encadenar processos...) i, finalment, obtenir un resultat.

Conceptualment, explicar com es fa una recepta de cuina o com es fa una divisió és un programa; també es pot considerar així una partitura musical: instruccions i components per a obtenir un resultat. Per fer un programa informàtic cal tenir un entorn o llenguatge de programació capaç d’enviar a la màquina les instruccions que pensem. Els llenguatges de programació són molt variats i, lògicament, la seva complexitat i potència són igualment diferents.

Cal enfrontar-se a un terminal i teclejar ordres com les que mostram a l’exemple de Python del començament de l’article, per aprendre a programar? Realment, no: és possible treballar amb totes les característiques d’un autèntic llenguatge de programació, però utilitzant blocs visuals que indiquin totes les instruccions. L’aplicació més popular d’aquest tipus és Scratch, un projecte del MIT, Masssachussets Institute of Technology.



scratch.mit.edu
Scratch (scratch.mit.edu) és sens dubte la millor manera en què podem iniciar els estudiants, per petits que siguin, en els conceptes de programació. Gairebé sense adonar-se'n, amb Scratch aprendran a manejar blocs lògics, interaccions, condicions, variables... els elements de la programació de debò.


Què és Scratch? És una eina visual, amb la qual es poden crear presentacions, jocs, aplicacions... amb tota mena d’elements textuals, gràfics i sonors. S’hi poden programar tota mena d’interaccions amb l’usuari. Els blocs que fan que s’executin aquestes aplicacions són visuals i descriptius, però funcionen d’una manera equivalent als dels llenguatges de programació ordinaris. Així, s’hi pot aprendre, de manera pràctica i intuïtiva, què és una variable, una funció, una condició, un bucle... contextualitzat en el desenvolupament d’un projecte propi, cosa que fa que sigui més motivador i posi en joc la creativitat.

Scratch es pot utilitzar com un programa independent (que es pot descarregar i instal·lar lliurement) o en forma d’aplicació web, executada al navegador, accedint a scratch.mit.edu. Qualsevol ordinador dels que formen part de les dotacions dels centres dels darrers anys inclou de sèrie Scratch (a més d’altres opcions per aprendre codi més “serioses”, com Python i Perl. El mateix sistema operatiu Linux pot rebre ordres en forma de scripts, per executar tasques més o menys complexes.)

Per esbrinar com s'ha programat un joc o una aplicació de Scratch, si sou a scratch.mit.edu, n'hi ha prou amb fer clic al botó "com està fet". I si voleu fer-ne una modificació, el botó "Reinventa" crea un nou projecte a partir de l'original.

També hi ha una altra manera d’iniciar els alumnes en la programació: utilitzar una calculadora programable, o un programa de càlcul, com Speedcrunch (de codi obert, per a tots els sistemes operatius). Abans d'entrar en altres  formes de programar, una aplicació així ens serveix per resoldre operacions matemàtiques (més o menys complexes, segons el nivell) i començar a familiaritzar-se amb expressions, constants, variables, funcions... Per suposat, també es poden aprofitar les capacitats de càlcul i operacions programables a un full de càlcul, com Libreoffice Calc.

Els programes de calculadora matemàtica tenen l’avantatge de que es poden utilitzar per realitzar càlculs relacionats i començar, així, a manejar idees bàsiques del que fa falta per a programar.


Programar, qui?

Sovint adjudiquem els continguts educatius a un especialista determinat d’una manera molt restrictiva que, tanmateix, no coincideix amb la realitat. De la mateixa manera que l’ús de les TIC ara es contempla a totes les àrees, de manera clarament transversal, l’aprofitament de l’aprenentatge de la codificació pot abordar-se, igualment, a moltes àrees i matèries.

Ens pot semblar obvi que a classe de matemàtiques puguem aprofitar l’aprenentatge del codi, i el mateix podem dir de la classe de tecnologia. Anant més enllà, però, hi ha moltes oportunitats d’utilitzar la programació de manera creativa i adaptada a les necessitats de moltes altres àrees curriculars. Els docents de llengües podem crear i utilitzar programes per analitzar els textos, combinar-los i fer-hi mil coses més; a socials podem fer el mateix amb dades. A l’aula de plàstica, podem crear art generatiu o paramètric, amb llenguatges com Processing. Existeixen nombroses possibilitats de generar i manipular sons i música a partir de codi; i fins i tot a filosofia es pot veure, de manera pràctica i immediata, com s’aplica la lògica a nivell de la màquina!

Per tant, el camp d’aplicació educativa de la programació és més una idea preconcebuda que una restricció real: son molts, gairebé tots, els docents que poden treure profit de les qualitats educatives d’aprendre a codificar. Com ja s’ha dit, un bon punt de partida pot ser Scratch, per la seva forma intuïtiva de treballar. Les portes a eines de programació més sòlides, però, i serioses estan obertes en qualsevol moment.

Altres possibilitats: jugar i programar

Els exemples que hem comentat són només una part de les opcions disponibles per iniciar-se en la programació a l’àmbit escolar. Els jocs, tant de consola com d’ordinador o de dispositius mòbils són, sens dubte, una altra possibilitat per iniciar-se en aprenentatges que, de manera motivadora i engrescadora, introdueixen conceptes i destreses pròpies de la programació de codi.

Tenim, en aquest sentit, altres possibilitats, com Gamemaker (yoyogames.com/studio) i Kodu (kodugamelab.com), pensats per a la creació de jocs interactius. Minecraft (minecraftedu.com  i minecraft.net) és un altre joc on els usuaris creen els seus mons virtuals, i són moltes les seves possibilitats educatives. Destaquem també un joc molt especial per a consola, Little big planet, al qual es posa en joc al màxim la creativitat i la col·laboració per crear jocs de plataformes.

Lego disposa d’una gran varietat d’aplicacions educatives relacionades amb la robòtica i la programació, com ara Robots i Mindstorms. S’hi pot accedir des de la seva pàgina d’educació, a education.lego.com.

Finalment, volem fer esment també d’algunes aplicacions que utilitzen el codi o els blocs de programació per a la generació d’imatges. Així, es pot veure immediatament el resultat de la seqüència de codi en forma d’imatge estàtica o animacions. Destaquen dins d’aquesta categoria Processing (procesing.org) i Nodebox (nodebox.net). Ambdues aplicacions tenen llicències lliures i es poden descarregar, aprendre i utilitzar sense restriccions.

Un exemple de programació de gràfics amb Processing (que a la web és interactiu, en resposta al moviment del cursor). A aquest exemple, amb una trentena escassa de línies, comentaris inclosos, es genera una sofisticada aplicació visual.

Com en puc aprendre?

No manquen opcions: per començar, res millor que començar a utilitzar Scratch i aprendre amb la pràctica!

Dins del programa d’activitats de formació a distància de la Conselleria d’Educació s’han oferit formacions de Scratch, com ara el curs Scratch: d’usuari a creador de projectes. A més, Scratch està molt ben documentat. Hi ha moltíssims manuals, tutorials, exemples... que es poden trobar fàcilment a la xarxa. Cal destacar la comunitat catalana de Scratch (scratchcatala.com), i la pàgina oficial del projecte (scratch.mit.edu), a la qual hom pot crear un compte d’usuari per pujar projectes, editar-ne d’altres ja fets... La pàgina crearjocs.blogspot.com també aplega algunes adreces útils i orientacions pràctiques per treballar amb Scratch.

Per anar una mica més enllà i aprendre algun llenguatge de programació, com Python o JavaScript, hi ha nombroses iniciatives i cursos introductoris en diferents plataformes de cursos massius oberts online (moocs). Sempre hi ha algun curs d’introducció a la programació disponible al MOOC Coursera (coursera.org). Destaquem iniciatives com code.org i codecademy.com.

En conclusió

Començar a programar, per a un docent que no coneix el tema, no és tan complicat com pugui semblar. Es pot començar pas a pas, amb coneixements molt intuïtius i simples, i anar progressant. No cal cap equipament especial per començar a treballar amb codi i veure immediatament els resultats. Es pot començar, com hem vist, amb estudiants molt joves amb aplicacions com Scratch.

Amb alumnes un poc més grans, a moltes escoles s’introdueixen els conceptes de programació amb llenguatges de descripció (o marcatge), com html i css (ambdós utilitzats per a indicar al navegador d’Internet com s’ha de mostrar una pàgina) i a continuació progressen cap a llenguatges de programació autèntics, com Python o Java. No manquen opcions, a l’hora d’aprendre programació orientada a objectes: Ruby, PHP, Perl... per fer projectes fàcilment aplicables.

Les oportunitats educatives d’aprendre a programar són clares. I encara és més interessant el fet que ens en podem beneficiar en el context del treball basat en projectes, amb la intervenció multidisciplinar de diferents docents. I programar no és un vedat exclusiu per a matemàtiques o tecnologia; en podem treure profit a gairebé qualsevol àrea o matèria.

Referències: