to make the messages more secure against anything from tampering to unauthorized reading
to translate messages from one machine’s programming language into another
to allow an unintelligent machine to handle a sophisticated task
to keep many small bits of data together in a single package