The very first programmers realised that they were having to write the same piece of code multiple times. The very first attempts at code reuse were really just 'goto' statements in assembler. Store the current address in memory, jump to a piece of code and have the code return to the original jump site stored in memory.