prototype

2003.02.13

Douglas Edric Stanley

Dans des langages de programmation dits « compilés » (cf. le langage C), on doit préfacer son programme par une liste qui annonce au « compilateur » toutes les fonctions qui seront utilisées plus loin dans le programme à proprement parler. En gros, cela signifie que le programmeur indique à la machine le nom de toutes les sous-parties, ce qu'elles savent accepter comme information, et ce qu'elles peuvent renvoyer comme information à une autre partie du programme. Comme un programme peut contenir des centaines, voire de milliers de sous-parties imbriquées les unes dans les autres, cette liste au préalable devient essentielle pour que la machine puisse prévenir si le compte n'est pas bon, où si une des sous-parties se comporte différément que prévu. Il n'y a qu'une machine ou un idiot savant qui puisse gérer une telle complexité, d'où l'importance d'un lieu privilégié de l'annonce du schéma de complexité du programme. Cette liste s'appelle la liste des « function prototypes ».

Prototype n.m. est emprunté (1552) au bas latin prototypos « forme primitive », substantivation (avec hellénisation de la finale) de l'adjectif prototypus « primitif », emprut au grec tardif prôtotupos « primitif, le premier type ».
– Alain Rey, et al. ; Dictionnaire historique de la langue française ; 1995 ; pp. 1657

In modern, properly written C programs, all functions must be declared before they are used. This is normally accomplished using a function prototype. Function prototypes were not part of the original C language, but were added by C89. Although prototypes are not technically required, their use is strongly encouraged. (Prototypes are required by C++, however)... When you use prototypes, the compiler can find and report any questionable type conversions between the arguments used to call a function and the type of its parameters. The compiler will also catch differences between the number of arguments used to call a function and the number of parameters in the function.
– Herbert Schildt ; C: The Complete Reference ; 2000 ; pp. 166

There are two styles in which functions are declared. In the new style, the types of parameters are explicit and are part of the type of the function; such a declaration is also called a function prototype. In the old style, parameters are not specified.
– Brian W. Kernighan, Dennis M. Ritchie ; The C Programming Language: ANSI C ; 1978 ; pp. 202

Une prototype est à entendre ici dans les deux sens étymologiques : forme de type « primaire » et forme de type « première », que nous redefinissons en passant par la compilation comme l'espace avant l'execution du programme.