Software provides the communication link between humans and their computers. Because software is softstored in memory rather than hard-wired into the circuitryit can easily be modified to meet the needs of the computer user. By changing software, you can change a computer from one kind of tool into another.
Most software falls into one of three broad categories: compilers and other translator programs, software applications, and system software. A compiler is a software tool that enables programs written in Englishlike languages such as Visual Basic, .NET, and C# to be translated into the zeros and ones of the machine language the computer understands. A compiler frees the programmer from the tedium of machine language programming, making it easier to write quality programs with fewer bugs. But even with the best translators, programming is a little like communicating with an alien species. Its a demanding process that requires more time and mental energy than most people are willing or able to invest.
Fortunately, software applications make it easy for most computer users today to communicate their needs to the computer without learning programming. Applications simulate and extend the properties of familiar real-world tools like typewriters, paintbrushes, and file cabinets, making it possible for people to do things with computers that would be difficult or impossible otherwise. Integrated software packages combine several applications in a single unified package, making it easy to switch between tools. For situations in which a general commercial program wont do the job, programmers for businesses and public institutions develop vertical-market and custom packages.
Whether youre writing programs or simply using them, the computers operating system is functioning behind the scenes, translating your softwares instructions into messages that the hardware can understand. Popular operating systems today include several versions of Microsoft Windows, the Mac OS, and several versions of UNIX. An operating system serves as the computers business manager, taking care of the hundreds of details that need to be handled to keep the computer functioning. A timesharing operating system has the particularly challenging job of serving multiple users concurrently, monitoring the machines resources, keeping track of each users account, and protecting the security of the system and each users data. One of the most important jobs of the operating system is managing the program and data files stored on nonvolatile memory devices, such as hard disks and optical discs. Utility programs can handle many of those system-related problems that the operating system cant solve directly. Popular operating systems today include several versions of Microsoft Windows, the Mac OS, and several versions of UNIX.
Applications, utilities, programming languages, and operating systems all must, to varying degrees, communicate with the user. A programs user interface is a critical factor in that communication. User interfaces have evolved over the years to the point where sophisticated software packages can be operated by people who know little about the inner workings of the computer. A well-designed user interface shields the user from the bits and bytes, creating an on-screen façade or shell that makes sense to the user. Today, the computer industry has moved away from the tried-and-true command-line interfaces toward a friendlier graphical user interface that uses windows, icons, mice, and pull-down menus in an intuitive, consistent environment. Tomorrows user interfaces are likely to depend more on voice, three-dimensional graphics, and animation to create an artificial reality.
Commercial software programs enjoy copyright protection. The purpose of granting copyrights to the owners of intellectual property is to stimulate creativity. However, copyright law can stifle creativity if it prevents people from building on the work of others. For this reason, a tension exists between the needs and desires of producers and the needs and desires of consumers. Despite copyright protections for computer programs, software piracy has flourished, particularly in countries like China and Russia.