Josep Portella

Un vestigi del llenguatge C clàssic

Octubre de 2011
Traduït: Març de 2012

© 2012 Josep Portella Florit
Aquesta obra està sota una llicència de
Reconeixement-SenseObraDerivada 3.0 Creative Commons.

A la majoria de les estructures de control de certs llenguatges de programació amb sintaxi basada en C, com per exemple PHP o JavaScript, existeix la possibilitat d'agrupar sentències entre claus ({}) o bé posar una sola sentència sense claus. No obstant això, a la declaració de funcions no existeix aquesta opció, tal com passa al llenguatge C; les claus son obligatòries encara que hi hagi una sola sentència.

Intueixo que els dissenyadors d'aquests llenguatges no es van parar a pensar si havien o no havien de donar l'opció d'ometre les claus a funcions d'una sola sentència, sinó que simplement van veure que a C es feia així i no li van donar més voltes.

Tècnicament no hi hauria problema a deixar ometre les claus a la declaració de funcions d'una sola sentència a PHP i JavaScript. De fet, es permet fer-ho al nou estàndard 1.8 de JavaScript. Per altre banda, a C no es pot per compatibilitat amb el C clàssic o K&R, el llenguatge tal com va ser definit a la primera edició de El Llenguatge de Programació C de Kernighan i Ritchie.

Si comparem la declaració d'una funció que retorna el quadrat d'un enter en C estàndard (ANSI C)

int
square (int x)
{
  return x * x;
}

amb la mateix funció en C clàssic

int
square (x)
     int x;
{
  return x * x;
}

podem veure que canvia el lloc on es declara el tipus del paràmetre, i que en C clàssic es necessiten les claus per distingir una declaració de tipus de paràmetre d'una sentència. En el C estàndard això ja no es fa així, de manera que si no necessités ser compatible amb l'estil clàssic de declaració de funcions, llavors seria possible ometre les claus a funcions d'una sola sentència.