Quand tu l´écris sans parenthèses, c´est une structure du langage, mais quand tu les mets, on appelle ça une procédure, soit une fonction qui ne renvoie pas de résultat.
Quand je vois écris : void echo ( string arg1 [, string ...] )
moi j´appelle ça une fonction, mais comme je l´ai dis plus haut, une fonction un peu particulière.
Quand à print, c´est également une structure du langage sans les parenthèses, et c´est une fonction avec, mais une fonction qui renvoie toujours la même valeur, à savoir 1.
Et la question n´était pas de savoir comment on l´appelle, fonction, procédure ou structure du langage, mais si on devait mettre des parenthèses ou pas. Ce à quoi j´ai répondu qu´on pouvais en mettre mais qu´il ne valait mieux pas (ça prends plus de temps d´interprêter une fonction qu´une structure du langage).