machines
a means of communicating between programmers
a vehicle for expressing
high-level designsa notation for algorithms
a way of expressing relationships between concepts
a tool for experimentation
a means for controlling computerized devices