The feature that makes computers so useful is their generality. Unlike most tools, that have a specific function, computers can perform any arbitrary data manipulation task. However, they need a list of detailed instructions on how exactly to perform any given task. Programming languages are the tools we use to provide those instructions.