For what purpose are high-level programming languages used for

1. Give control over the hardware to execute tasks quickly

2. Provide code that controls the computers hardware

3. Translate low-level programming languages into machine code

4. Write programs for general applications