El Blog de Trespams

Blog personal sobre tecnologia, gestió de projectes i coses que se me passen pel cap

Aprendre a programar

Al 2007 a Bulma és l'any especialment dedicat a les Jornades als Instituts. Es tracte d'un conjunt de xerrades més o manco formals on s'intenta explicar a la gent tant què és això del programari lliure com fer demostracions del que se pot fer.

La meva xerrada va de com està evolucionant l'e-bussines a l'empresa turística, mostrant com està evolucionant el negoci des de que explotà la bimbolla tecnològica, i de com i amb què s'estan fent les webs.

A Manacor en el torn de preguntes, se'm demanà quin era el millor llenguatge per aprendre a programar per la web. En línia amb la xerrada la contesta és que bàsicament el llenguatge de programació que es tri no té massa importància. El que importa és que permeti tenir clars i fixar els coneixements i les tecnologies que farem servir. Per exemple, un llenguatge o IDE que ens amagui que el que tenim per devall d'una plana web és html no es convenient, ja que en aquest cas l'alumne no estaria aprenent els conceptes, sinó una eina.

A partir d'aquesta premisa podem anar cercant el llenguatge que més s'adapti als continguts que es vulguin donar. En aquest punt suposam ja que l'alumne té els conceptes de programació bàsica clars: sap què és una variable, coneix les sentències de control de flux, sap fer funcions, sap què és un punter, etc. Per tant es tracta de que aprengui com es diferencia la programació d'aplicacions d'escriptori de la programació web i que conegui les tecnologies que li permetran en el futur guanyar-se'n les sopes.

L'elecció del llenguatge de programació doncs dependrà del que considerem més important: que l'alumne aprengui a manejar un llenguatge concret com C# o Java aplicats al desenvolupament web o que aprengui els conceptes. L'elecció de Java o C# no és dolenta, però la corba d'aprenentatge en aquests entorns és molt gran, i per tant, ens podem trobar que els exemples siguin massa senzills com per a ser vàlids. El problema fonamental és que no hi ha temps d'aprendre la tecnologia web, el llenguatge de programació, les llibreries i els bastiments necessàries com per poder fer una aplicació que permeti a l'alumne trobar-se amb les dificultats que es trobaria en un projecte real. Si anam al món Java, per exemple, ens podem trobar que per fer una aplicació web necessitam conèixer el llenguatge, el model MVC, un bastiment per aquest model (Struts, Spring, ...), la creació de servlets, com es despleguen, fer anar el tomcat, fer anar un bastiment de persistència com l'hibernate, fer anar una caché com EhCache, aprendre JSP-EL i els tags, ... Potser massa per uns alumnes que tenen més assignatures i per unes assignatures amb un nombre d'hores de docència molt determinat.

Una possible solució és anar cap als llenguatges dinàmics (PHP, Python, Ruby) i amb l'ajuda d'un bastiment per al desenvolupament web, com per exemple Cake per PHP, Django per Python o Rails per Ruby. Particularment el que conec més i millor és Python i Django, però qualsevol dels altres podria cobrir fàcilment els objectius d'aprendre la tecnologia i que el llenguatge i el bastiment en sí no fos una limitació a l'hora de fer programes, que en aquest cas poden ser prou grans com per a ser útils. Els llenguatges dinàmics tenen un grau de realimentació molt gran: el cicle de desenvolupament, proves, resultat és molt curt, i per tant es poden veure els conceptes que es volen provar molt ràpidament. Més realimentació implica més motivació, menys por a fer proves i menys peresa a l'hora d'aprendre, ja que ara pràcticament qualsevol cosa que es vulgui provar, qualsevol concepte, no duu més temps que el temps necessari per escriure'n el codi.

Què passa amb C# o Java, que és el que les empreses demanen, dirà algú. Doncs que una vegada tenim els conceptes apresos es pot anar molt més fàcilment a aprendre com es fa en C# o Java, però ja aprendrem damunt una base sòlida i per comparació amb els conceptes que ja coneixem. La corba d'aprenentatge serà molt més suau. I això no vol dir que les empreses demanin C# o Java, això normalment ho fan les consultores. Amb Java o C# hi ha molt més a guanyar per una consultora, ja que els projectes duen molt més temps que fets en un llenguatge dinàmic (entre un factor 3 i 10), però hi ha ja molts d'exemples de grans empreses que estan apostant molt for pels llenguatges dinàmic per fer les seves webs. L'estat actual de la tecnologia ens permet fer tota la capa web amb un llenguatge dinàmic i connectar-nos a una capa de serveis que ens proporciona XML. El llenguatge amb que estigui feta aquesta capa de serveis tampoc importa molt, però per exemple la combinació de Java + XFire o Axis és perfectament recomenable, i aconseguim un alt grau de paral·lelisme en el desenvolupament, separació efectiva entre distintes capes de les aplicacions, reutilització (donada bàsicament pels servies web) i a la vegada una resposta als canvis molt alta gràcies a la utilització dels llenguatges dinàmics.

El que veu l'usuari final a la web és HTML, amb Javascript i CSS segurament, però el que no veu és un llenguatge de programació. Li importa poc amb què hagis programat l'aplicació, importa el que li mostres i com d'aviat pots respondre a les seves necessitats.

blog comments powered by Disqus