|Home||Chapter 4: Software Basics: The Ghost in the Machine|
Software provides the communication link between humans and their computers. Because software is soft—stored in memory rather than hardwired into the circuitry—it 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 categories: compilers and other translator programs, software applications, and system software. A compiler is a software tool that enables programs written in English-like languages such as Visual Basic 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. It’s 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 such as typewriters, paintbrushes, and file cabinets, making it possible for people to do things with computers that would be difficult or impossible otherwise. Applications and accompanying documentation can be delivered on physical media or downloaded from the Web. Either way, the software purchaser generally buys a license with some restrictions about how the software can be used and shared. Web applications are tools that users typically access through Web browsers. Programmers for businesses and public institutions develop vertical-market and custom packages for situations in which a general commercial program won’t do the job.
Whether you’re writing programs or simply using them, the computer’s operating system is functioning behind the scenes, translating your software’s instructions into messages that the hardware can understand. Popular desktop and laptop operating systems today include several versions of Microsoft Windows, Mac OS X, and Linux. An operating system serves as the computer’s 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 machine’s resources, keeping track of each user’s account, and protecting the security of the system and each user’s data. One of the most important jobs of the operating system is managing the program and data files stored on hard disks and other storage media. Utility programs can handle many of those system-related problems that the operating system can’t solve directly.
Applications, utilities, programming languages, and operating systems all must, to varying degrees, communicate with the user. A program’s 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 command-line interfaces toward a friendlier graphical user interface that uses windows, icons, menus, and pointing devices in an intuitive, consistent environment. Tomorrow’s user interfaces are likely to depend more on voice, three-dimensional graphics, and animation to create an artificial reality.
One of the challenges of working with a computer is keeping track of the masses of information that can be collected, edited, and stored on discs. Most computers use some kind of hierarchical file system involving directories, or folders, to organize files. But modern operating systems have built-in search functions that make it easy to locate files without knowing their exact locations.
Commercial software programs enjoy legal copyright protection in most countries. To encourage creativity, most countries grant copyrights to the creators and publishers of software, music, movies, books, and other intellectual property. But copyright law can stifle creativity if it prevents people from building on the work of others. 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 in many countries around the world.