explain the difference between the functions of applications, programming languages, and operating systems.