# What is the difference between a function and a procedure

In general, what is the difference between a function and a procedure when talking about programming languages?

The "just call both function" common today comes from ubiquitous C, which originally (K&R, as described in Kernighan and Ritchie's "The C Programming Language", first edition) had just functions (returning ìnt by default). You could (and still can) just ignore the function's return value (really, the result of any expression), and you could just fall through the end (and return gibberish) in a function, giving the functionality of procedures without extra syntax.
Today's more strict C (and C++) still have only functions, but a function can return void (i.e., nothing), making it a procedure. In today's C, in a function returning a value a return has to give a value to return, and just falling off the end of the function isn't valid. If the function returns void, any return has to be bare (no value to return) and falling off the end (no return, for example) is legal.