La setmana passada explicàvem que els sistemes operatius permetien la interacció entre les màquines i els programes dels usuaris. Però com podem programar un ordinador i, cosa encara més important, amb quin llenguatge de programació ens guanyarem més bé la vida?
Com sempre, farem d’entrada una mica d’història. Ja sabeu que hi ha qui pensa que sóc un dinosaure digital 🙂
Els primers ordinadors es programaven amb cables, després amb llenguatge màquina (primera generació) i al cap d’un temps van aparèixer els llenguatges de baix nivell o assembladors (segona generació); tenien la mateixa estructura i variables que el llenguatge màquina, però ja s’hi van introduir noms i variables per fer la vida més fàcil als programadors.
Amb el temps van aparèixer els llenguatges d’alt nivell (tercera generació), que miraven d’acostar el llenguatge de programació al de les persones, cosa que encara no han aconseguit. Però les regles relativament estrictes que cal seguir per escriure en programa cada vegada són més laxes i semblants al llenguatge humà.
Perquè us en feu una idea, de les diferències, aquestes són les instruccions per a sumar dos nombres (x, y) i que ens torni el valor t, en llenguatge C:
int sum(int x, int y)
{
int t = x+y;
return t;
}
I aquestes són les mateixes instruccions, però en assembler per a un processador x86 (segona generació):
sum:
pushl %ebp
movl %esp,%ebp
movl 12(%ebp),%eax
addl 8(%ebp),%eax
movl %ebp,%esp
popl %ebp
ret
I així seria si haguéssim de fer-ho en codi màquina:
0x401040 <sum>:
0x55
0x89
0xe5
0x8b
0x45
0x0c
0x03
0x45
0x08
0x89
0xec
0x5d
0xc3
El primer llenguatge de programació d’alt nivell es deia Plankalkül i fou creat per Konrad Zuse, un dels grans pioners de la computació, el 1945. Però mai no es va implantar: no va ésser fins el 1998-2000 quan es va implantar com a feina científica per a honorar-lo.
Classificació. Els més importants
Els llenguatges es poden classificar en:
–Compilats: abans de fer-se servir, el programador ha de ‘compilar’ el programa, és a dir, passar per un procés de comprovació de l’estructura i sintaxi i conversió del codi llegible per humans a codi executable per l’ordinador.
–Interpretats: no cal el pas previ del compilador, sinó que a mesura que s’executa es tradueix a codi executable.
Històricament, quasi tots els llenguatges eren compilats per no haver de convertir el codi cada vegada que s’executava, cosa que els feia més lents. Amb la interactivitat dels ordinadors i la potència més gran del maquinari ha esdevingut més habitual de treballar amb llenguatges interpretats.
El primer llenguatge de programació d’alt nivell va ésser el Fortran, creat al començament dels anys 1950, molt utilitzat a les universitats perquè era molt adaptat per a resoldre problemes matemàtics, numèricament intensius. Fortran venia de FORmula TRANslation (‘traducció de fórmules’) i van caldre tres anys (del 1954 al 1957) per a crear-lo. Amb el temps s’hi han incorporat millores: les versions Fortran 77, Fortran 90 i 95, 2003 i 2008 i la versió 2015 en preparació, perquè encara es fa servir tot i que només per a càlcul científic i anàlisi numèrica.
Per solucionar alguns dels problemes del Fortran es va crear l’ALGOL (ALGOrithmic Language) amb idees i conceptes que van ésser la base de molts llenguatges moderns, com ara Pascal (creat per Wirth al final dels anys 1960, anomenat així en honor de Blaise Pascal i famós comercialment pel compilador Turbo Pascal de Borland, que es venia per 49 dòlars), el llenguatge C i l’Ada, en honor d’Ada Lovelace (1815-1852), matemàtica, filla de Lord Byron i considerada la primera programadora de la història per un mètode de càlcul d’una seqüència de nombres de Bernoulli per a la màquina analítica de Charles Babbage.
En l’àmbit de negocis, el llenguatge més popular va ser Cobol, acrònim de COmmon Business Oriented Language (‘llenguatge comú orientat a negocis’): va néixer el 1960 amb l’objectiu de tenir un llenguatge comú a molts ordinadors que eren incompatibles entre si. Cobol tenia grans capacitats d’autodocumentació, una bona gestió de fitxers i dels tipus de dades i era un llenguatge que semblava l’idioma anglès. Segons un estudi de Gartner Group del 2005, el 75% de les dades generades per negocis s’han processat amb programes Cobol.
Al final dels anys 1960 IBM va crear l’RPG II com a successor de l’RPG, llenguatge molt utilitzat als equips mitjans de la casa, que és com dir la majoria d’equips d’aquell temps (el 1130, el System/3, el Sytem/32, el System/34, el System/36, etc.), màquines que es venien com xurros i per a les qual hi havia una gran demanada de programadors. RPG és la sigla de Report Program Generator (‘programa generador d’informes’).
I en l’àmbit d’usuari el Basic es va imposar com a llenguatge fàcil d’aprendre i executar perquè en gairebé totes les màquines per a usuari (Apple II, PC, Atari, Spectrum, MSX, Commodore, etc.) hi havia un intèrpret de Basic perquè tenien petites memòries que no podien incloure llenguatges massa grossos ni ‘exigents’. Basic és l’acrònim de Beginner’s All-purpose Symbolic Instruction Code (‘codi simbòlic d’instruccions multipropòsit per a principiants’). El llenguatge fou inventat el 1964 per Kemny i Kurts al Darmouth College. Cap al 1991 Microsoft va presentar la versió del programa per a entorns gràfics que va batejar com a Visual Basic, amb derivats com el VBScript (Visual Basic Script per a pàgines web ASP), el VBA (Visual Basic for Applications) per a programar macros dins l’Office, i el Visual Basic .NET per a la plataforma .NET.
Els llenguatges més utilitzats actualment són C, C++ i Java i els llenguatges específicament adreçats a la web com PHP, JavaScript i Ruby on Rails (encara que després explicaré que no és exactament un llenguatge, sinó un ‘framework’).
El llenguatge C fou creat al principi del 1970 per Ritchie i Thompson als laboratoris Bell d’AT&T com a successor del llenguatge B. Es va crear per tenir un llenguatge proper al codi assemblador, però més flexible i senzill, i va servir per a crear el sistema operatiu Unix. Encara és el més utilitzat per desenvolupar sistemes operatius i programari bàsic.
Com us podeu imaginar, a partir del C es va crear el C++ el 1985, també als laboratoris Bell, en resposta a la necessitat de tenir un llenguatge orientat a objectes. La programació orientada a objectes, POO o bé OOP en anglès, es basa en un model de programació centrat en objectes que contenen dades i procediments coneguts com a mètodes. Tots els llenguatges moderns suporten l’orientació a objectes.
PHP és un llenguatge multiplataforma interpretat que es fa servir per generar dinàmicament al servidor pàgines web. Es distribueix amb llicència de programari lliure. Va sorgir el 1994 com un conjunt de scripts fets per Rasmus Lerdof en Perl, un llenguatge molt utilitzat en l’Unix i Linux. Però fins el 1997, en què Suraski i Gutmans no van reescriure el ‘parser’ i van crear la base del PHP3, no es va convertir en el llenguatge d’abast total que és ara.
Com podem començar a aprendre’n
Si remeneu per Google trobareu molts cursos, alguns de gratuïts, que us en donaran les primeres nocions. Com sempre, heu de destriar quines són les fonts fiables dels milers de resultats que us sortiran amb la cerca.
El més recomanable és CodeCademy, on trobareu cursos d’HTML i CSS, JavaScript, jQuery, PHP, Python i Ruby. Són llenguatges de programació de pàgines web i les lliçons són en anglès, francès i espanyol, principalment.
A la web del profe trobareu molts recursos per a aprendre a programar HTML, PHP i MySQL, Python i més recursos que us poden ésser molt útils.
A la web de Codeavengers també trobareu més de cent hores de lliçons per a aprendre HTML, CSS i JavaScript, en anglès i espanyol.
I si sou del grup que ja en sap i en vol ensenyar, aquells mestres una mica guillats que es pensen que ensenyar a programar als seus alumnes és una tasca important, passeu per Code.org, una organització no lucrativa perquè a les escoles els estudiants puguin aprendre a programar, i on cinquanta-dos milions de persones s’han apuntat ja a fer una hora de codi. A Code.org fan una crida a tots els mestres del món per a fer una hora de codi, un esdeveniment per a persones entre 4 anys i 104, la setmana del 8 al 14 de desembre de 2014, amb què s’ha aconseguit que Barack Obama sigui el primer president dels EUA a fer un programa.
Per iniciar-vos-hi, us donaria les recomanacions següents:
–feu-ho amb un llenguatge interpretat, que pugueu veure ràpidament on us equivoqueu i que us permeti d’alegrar-vos quan l’encerteu, sense passar per la fase de compilació;
–els llenguatges actuals són força complicats i requereixen la utilització de ‘frameworks’ o ambients de treball encara més complicats: no intenteu fer coses gaire complicades d’entrada, com una app per a Android, perquè no és el millor objectiu si encara no sabeu què és un programa;
–una feina senzilla seria intentar programar una pàgina web amb HTML5;
–i una vegada completada la primera fase, passeu a fer-ho amb PHP.
Si el projecte us engresca, necessitareu un servidor web per a veure com respon l’ordinador al vostre programa. Per això la millor alternativa és instal·lar el MAMP o, encara millor, el LAMP, però això serà el tema de la setmana vinent.
Però com ens hi guanyarem la vida?
Segons un article de Quartz publicat fa uns quants dies a partir d’un estudi de l’economista Jonathan Rothwell de la Brookings Institution, amb dades compilades per Burning Glass a partir de milers d’anuncis de feina als EUA, els programadors més ben pagats són els que dominen Ruby on Rails.
Com deia abans, no és un llenguatge, sinó un ‘framework’ o entorn de treball del llenguatge Ruby. Un ‘framework’ inclou programari de suport, llibreries, apis, eines i un entorn gràfic per a desenvolupar la feina. Si voleu aprendre’n, a la mateixa web en trobareu bones guies en perfecte anglès.
Diu Paulo Coelho: ‘Hi ha un llenguatge que va més enllà de les paraules.’ És evident que no es refereix al llenguatge informàtic, però ja sabeu la meva capacitat d’extrapolar-ho tot al meu terreny… Sí que és segur que és un sistema de comunicació com a mínim entre màquines, però rere la màquina sempre hi ha un cervell humà.