The lowest-level (closest to how the computer likes to understand things) and oldest programming paradigm is machine code, an imperative paradigm. The directions in machine code are just a set of numbers in a certain order. Assembly language is a little bit less low-level (and a little bit less old). In assembly language, the directions for the computer are given mnemonics (easier-to-remember names), and memory addresses (directions to find a piece of information in the computer) can be given names. These are sometimes called first- and second-generation languages.