IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Tipus de llenguatges. Classificacions

non-blocking vs blocking

La majoria de llenguatges de programació són bloquejants/blocking (Java, PHP). Un exemple llenguatge de programació no bloquejant és Node.js (https://en.wikipedia.org/wiki/Node.js) on les comandes no s'executen de forma ordenada (una comanda abans d'executar-se a d'esperar que l'anterior comanda finalitzi) sinó que s'executen en paral·lel i s'utilitza el concepte de callbacks per realitzar tasques un cop executades altres tasques (signal completion)

Els llenguatges de programació no bloquejant permeten realitzar operacions no bloquejants utilitzant Threads per realitzar operacions I/O sense bloquejar el procés principal. Android per exemple és un llenguatge de programació basat en Java que per tal d'evitar els ANR obliga a executar qualsevol operació bloquejant apart del fil d'execució principal (en Android el fil execució principal és el fil d'execució de la part gràfica de l'aplicaió. Vegeu AsyncTask)

event-driven

aka event-driven programming paradigm (Vegeu Design patterns/paradigms).

Definició: event-driven programming és un flux d'aplicació controlat per esdeveniment o canvis en l'estat de l'aplicació

Aquest paradigma de programació es ben conegut des dels anys 1960 i ha estat sempre associat a la programació d'aplicacions amb UI/User interface (vegeu Xerox que van ser els primers en definir el concepte d'UI). També utilitzem aquest paradigma de programació a Javascript per manipular el DOM.

El més important és definir un mecanisme central que sigui l'encarregat d'escoltar a l'espera d'esdeveniments (o canvi d'estat de l'aplicació) i d'executar els mètodes associats a aquells esdeveniments. Aquests mètodes són anomenats callbacks. Sovint els callbacks són configurats passant Closures (funcions anònimes) al mètode encarregat d'establir el callback o tros de codi que cal executar un cop succeeix l'esdeveniment però també es possible associar a un callback una funció o mètode amb nom.

Vegem alguns exemples:

Javascript:

Els mètodes:

.on*() com per exemple element.onclick()

que permeten definir l'interacció dels usuaris amb els elements d'un document HTML (DOM).

Ajax

Un altre exemple és el patró Promise (ES6) i l'execució de callbacks després d'una operació I/O bloquejant. En el cas de Ajax l'operació bloquejant sol ser una petició a un recurs remot via HTTP (XHR). En aquest cas sol interessar definir els callbacks en cas que falli la crida, un altre en cas que funcioni i un altre per a tots els casos (patró fail/success/always).

NodeJS

Utilitza events/esdeveniment amb EventEmitter utilitzat per exemple en core modules com Server, Socket o http o el paradigma promise es executat en mòduls com fs.

Resources:

Llista

Vegeu també


Enllaços externs