The term "function prototype" is particularly used in the context of the programming languages C and C++ where placing forward declarations of functions in header files allows for splitting a program into translation units, i.e. into parts that a compiler can separately translate into object files, to be combined by a linker into an executable or a library.
In object-oriented programming, interfaces and abstract methods serve much the same purpose.
In early versions of C, if a function was not previously declared and its name occurred in an expression followed by a left parenthesis, it was implicitly declared as a function that returns an int and nothing was assumed about its arguments.
In this case the compiler would not be able to perform compile-time validity checking of the number and type(s) of arguments.
By placing function prototypes in a header file, one can specify an interface for a library.