Computer languages can be categorized into different generations based on their level of abstraction from machine language. First generation languages are machine languages that use binary, while assembly languages as second generation are closer to machine language with mnemonic codes. High-level languages of the third generation like FORTRAN and COBOL are easier for humans to read and write. Fourth generation languages attempt more natural language programming, and fifth generation use visual interfaces to generate code compiled by lower level languages. The key aspects of a program include variables, statements, keywords, instructions, and the ability to perform tasks through organized lists of commands.