2. Abstraction: High-level languages provide a higher level of abstraction than low-level languages. This means that they hide the details of how the computer actually works, allowing programmers to focus on the logic of their programs without having to worry about the underlying hardware.