Josep Portella
Un vestigi del llenguatge C clàssic
Octubre de 2011
Traduït: Març de 2012
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.