A procedure is a name for a sequence of statements. A function is a name for a sequence of statements which computes a value.
Does the function or procedure name depend on parameter types (signature)?
Does the binding between signature and statement sequence depend on argument(s) (method)?
Which data types can a function deliver as a result?
Is recursion allowed, forbidden but detected, or simply forbidden?
Can subroutines have parameters?
Which data types can be used for parameters and for arguments?
Which conversions are implicit, if any?
How are arguments and parameters related: