Llenguatges de programació: classificació, tipus i recursos d’aprenentatge

Introducció

Lev Manovich va definir els nous mitjans segons cinc principis bàsics: representació digital, modularitat, automatització, variabilitat i transcodificació.

D’aquests principis la representació digital és la condició de possibilitat de tota la resta; si no haguéssim estat capaços de codificar numèricament la informació, no seria possible la revolució digital com l’entenem.

La codificació de la informació, la transformació del llenguatge natural a dades numèriques que l’ordinador pot interpretar, és la base dels llenguatges de programació. Aquests llenguatges permeten comunicar a la màquina la informació en un format que pot interpretar i programar determinades accions amb un objectiu determinat.

Els llenguatges de programació permeten reproduir les relacions que s’estableixen entre els objectes per a automatitzar processos amb un objectiu concret.

Tipus de llenguatges de programació

Un llenguatge de programació és un idioma artificial dissenyat per a expressar processos que poden ser reproduïts per màquines. Es fan servir per a crear programes que controlen el comportament físic i lògic d’una màquina i per a expressar algorismes amb precisió.

En diem llenguatge perquè està format per un conjunt de símbols, regles sintàctiques i semàntiques que en defineixen l’estructura i el significat dels elements i expressions.

Des de la creació dels primers llenguatges s’han formalitzat diferents classificacions que, a l’hora de la veritat, s’entrecreuen. Classifiquem els llenguatges de programació segons el nivell d’abstracció, segons la forma d’execució i de processar ordres, segons el paradigma de programació que usen, etc.

Una de les classificacions més útils és aquella que classifica els llenguatges segons el paradigma de programació. Tot seguit enumerarem alguns dels paradigmes més importants:

Paradigma imperatiu. Descriu la programació com a una seqüència d’instruccions o ordres que canvien l’estat d’un programa. Es basa en les ordres condicionals que permeten al programa reprendre un bloc d’ordres determinat si es compleix una condició. Aquests van ser els primers llenguatges de programació i és el paradigma en què es basa el llenguatge màquina (0 i 1). Encara hi ha molts llenguatges que usen aquests principis. Un dels inconvenients principals és la falta de flexibilitat a causa de la seqüencialitat de les instruccions. En aquest paradigma s’inclou el paradigma procedimental i és el contrari del paradigma declaratiu.

Paradigma funcional/estructurat. La programació es divideix en blocs (procediments i funcions) que es poden comunicar entre si o no. Cada funció recull un procediment tancat i es podria entendre com un petit programa en si mateix. Les funcions permeten, mitjançant la subdivisió dels processos en petites accions, l’aprofitament del codi per a altres objectius o en altres parts d’un programa.

Altres paradigmes interessants són el paradigma orientat a objectes, el paradigma lògic i el paradigma funcional.

Una altra gran classificació important és entre els llenguatges interpretats i els llenguatges compilats:

Llenguatges interpretats. La màquina només entén el llenguatge binari. Els llenguatges interpretats són aquells que per definició no estan escrits en codi binari i que requereixen un programa auxiliar (l’intèrpret) que tradueix el llenguatge per tal que la màquina el pugui processar i executar.

Exemples: BASIC, MADLAB, PHP, Perl, etc.

Llenguatges compilats. En aquests llenguatges, un programa annex anomenat compilador fa el procés de transformació a un llenguatge intel·ligible per a la màquina, abans de la finalització del programa. L’arxiu resultant es pot executar sense la necessitat de cap altre programa intermediari; és el que s’anomena arxiu executable.

Exemples: C, C++, Cobol, ADA, Pascal, etc.

Els llenguatges compilats tenen el gran avantatge que no necessiten cap suport extern per a executar-se; no obstant això, són menys flexibles, ja que cada modificació en el codi, o en les fonts del programa, implica necessàriament una recompilació del programa per a aplicar els canvis.

Els llenguatges de programació més usats

El C és un llenguatge de programació orientat a la implementació de sistemes operatius, concretament UNIX. El C és un dels llenguatges més eficients quant a codi resultant i és el llenguatge més popular per a crear programari de sistemes. És un llenguatge molt adaptable ja que treballa tant a baix nivell com a alt nivell de manera que permet un alt control sobre la màquina.

Manual de C: http://www.fismat.umich.mx/mn1/manual/

Història: http://www.faqs.org/docs/artu/c_evolution.html

El PHP és un llenguatge de programació basat en scripts en el servidor, creat originàriament per al desenvolupament de contingut dinàmic a la web. Va ser un dels primers llenguatges que es podien incorporar en un document HTML. El servidor interpreta el codi i genera la pàgina web resultant.

Informació del grup PHP: http://es2.php.net/

Manual i preguntes més freqüents de PHP: http://us.php.net/manual/en/faq.general.php

Curs en català de PHP: http://ca.programacionweb.net/cursos/curso.php?num=10

Curs de PHP: http://www.phpya.com.ar/

Recull de cursos de PHP: http://www.aulaclic.net/cursos/mostrar.php?id=25&texto=PHP&clase=c

Història del llenguatge: http://www.php.net/history

El Python és un llenguatge de programació interpretat, centrat a produir un codi net i llegible amb una sintaxi molt clara; això el fa especialment interessant per a introduir-se en el món de la programació ja que, si bé és molt senzill començar a programar amb Python, les opcions de programació avançada són també molt interessants.

És un llenguatge de programació multiparadigma: orientació a objectes, programació imperativa, etc., i també és multiplataforma. Està publicat amb una llicència oberta.

El Java és un llenguatge de programació que deriva principalment de C i C++, s’ha de compilar i es pot executar en qualsevol arquitectura gràcies a la màquina virtual Java (JVM). El Java és un llenguatge de propòsit general basat en classes i orientat a objectes. La principal virtut del codi Java és que és compilat independentment de la màquina on s’hagi d’executar, cosa que permet el que s’anomena WORA (write once, run anywhere). Actualment és un dels llenguatges més usats amb més de deu milions d’usuaris i s’usa principalment per a crear aplicacions de client-servidor en web.

Web per a desenvolupadors en Java: http://learncodethehardway.org/

Especificació del llenguatge: http://docs.oracle.com/javase/specs/

Història: http://www.cad.com.mx/historia_del_lenguaje_java.htm

Classificació de llenguatges més usats: http://blog.uchceu.es/informatica/indice-tiboe-ranking-de-lenguajes-de-programacion-mas-utilizados/

Actualment el nombre de llenguatges disponibles està en evolució constant. De mica en mica els llenguatges evolucionen i donen lloc a nous llenguatges enfocats a tasques concretes: la programació visual, la programació per a sistemes operatius mòbils, l’art, etc.

Alguns exemples més són Processing, Ruby i JavaScript.

Recursos per a aprendre a programar de manera gratuïta a la Xarxa

Avui dia hi ha molts portals dedicats a oferir de manera gratuïta cursos de programació i espais per a practicar de manera interactiva amb un servidor que verifica el codi i ens ajuda a aprendre a programar en els diferents llenguatges de programació disponible.

La majoria permeten crear un perfil personal i fer un seguiment de l’evolució i dels cursos que es fan:

CodeAcademy: http://www.codecademy.com/#!/exercises/0

Google Code University: http://code.google.com/edu/

Mozilla Developer Network: https://developer.mozilla.org/en-US/learn

Khan Academy: https://www.khanacademy.org/cs/tutorials/programming-basics

EloquentJavascript: http://eloquentjavascript.net/

LearnRuby: http://rubykoans.com/

Codeschool: http://www.codeschool.com/

 

Publicat per Ferran Adell

Ferran Adell es especialista y docente en Tecnología y Sociedad. Estudió Filosofía y realizó un Máster sobre Filosofía contemporánea enfocado a la comprensión de la sociedad actual. Sus temas centrales de investigación giran en torno al uso de las tecnologías en la educación y la comprensión del medio digital en distintos àmbitos de la cultura; especialmente, en el uso de los videojuegos y los mundos virtuales en las comunidades de aprendizaje y las nuevas formas de educación digital. Además, realiza tareas de Digital Manager para pequeñas empresas y asociaciones, abarcando desde la programación y gestión web hasta la gestión de comunidades y la creación de estrategias de márketing digital. La edición digital de libros en formatos libres y los cambios en la forma de acceder a la información en el siglo XXI completan sus actuales dedicaciones que se reparten entre las facultades de humanidades y las de tecnología e informática.