CS10001 Class Note: Chapter 4Software Basics: The Ghost in the Machine Objectives Describe three fundamental categories of software and their relationship Explain the relationship of algorithms to software Discuss the factors that make a computer application a useful tool Describe the role of the operating system in a modern computer system Describe how file systems are organized Outline the evolution of user interfaces from early machine-language programming to futuristic virtual-reality interfaces Explain why unauthorized copying of software is against the law Linus Torvalds and the Software Nobody Owns Linus Torvalds Best known as the Linux creator The Linux operating system is the best-known example of open source software. Today Linux powers Web servers, film and animation workstations, scientific supercomputers, and a handful of handhelds. Computer programs The three major categories of software: Compilers and other translator programs: enable programmers to create other software Software applications: serve as productivity tools to help computer users solve problems System software: coordinates hardware operations and does behind-the-scenes work the computer user seldom sees Application vs. Operating Systems Processing with Programs Food for thought The hardware in a computer system is equipped to produce whatever output a user requests. A fast, stupid machine Programmers begin with an algorithm: a set of step-by-step instructions written in a natural language, for example, English. The steps are often ambiguous, error-prone generalities. The steps are translated into the vocabulary of a programming language. Debugging is done to correct errors. The language of computers Machine language: numeric codes that represent basic computer operations High-level language: falls between machine language and natural human language (C++, Java, VB.NET, etc.) Compilers translate high-level language into machine language. Natural languages: resembles languages used by humans Translation software Software Applications: Tools for Users Consumer applications Many software companies have replaced or supplemented the printed documentation with: Tutorials Reference materials Help files Online help Updating: minor bug fixes and enhancements Upgrading: Users can upgrade a program to the new version by paying an upgrade fee to the software manufacturer. Newer releases often have additional features and fewer bugs. Service Packs contain minor revisions and are usually free. Compatibility It allows software to function properly with the hardware, operating system, and peripherals. Programs written for one type of computer system; may not work on another. Disclaimers Software manufacturers limit their liability for software problems by selling software “as is.” EULA (End User License Agreement ) Licensing: Commercial software is copyrighted so it can’t be legally duplicated for distribution to others. Software license Volume licenses Distribution of software via: Direct sales Retail stores Mail-order catalogs Web sites Not all software is copyrighted Public domain software Shareware Web applications Web applications fall into several categories: Some Web applications perform simple data-processing tasks that could also be performed by traditional programs running on stand-alone PCs Most Web applications take advantage of the Web’s connectivity Many Web applications leverage the Web’s strength as a huge repository of information Some Web applications support online business transactions News-oriented Web applications provide up-to-the-minute reports Other Web applications support a more traditional form of information broadcasting Vertical-market & custom software Tends to cost far more than mass-market applications Job-specific software: Medical billings Library cataloging Legal reference software Restaurant management Single-client software needs System Software: The Hardware-Software Connection What the operating system does System software A class of software that includes the operating system and utility programs, handles these details and hundreds of other tasks behind the scenes. Operating system functions: Supports multitasking Manages virtual memory Maintains file system Responsible for authentication and authorization Utility programs and device drivers Utility programs Serve as tools for doing system maintenance and repairs that aren’t automatically handled by the operating system Make it easier for users to: Copy files between storage devices Repair damaged data files Translate files so that different programs can read them Guard against viruses and other potentially harmful programs (as described in the chapter on computer security and risks) Compress files so they take up less disk space Perform other important, if unexciting, tasks Symantec Norton Utilities is a popular utility package that includes software tools for recovering damaged files, repairing damaged disks, and improving disk performance. Device drivers Small programs that enable I/O devices—keyboard, mouse, printer, and others—to communicate with the computer Included with the operating system, bundled with peripherals, or given away as separate products Where the operating system lives Some computers store their operating system in ROM. Others include only part of it in ROM. The remainder of the operating system is loaded into memory in a process called booting, which occurs when you turn on the computer. Most of the time the operating system works behind the scenes. Interacting with the operating system, like interacting with an application, can be intuitive or challenging, and it depends on something called the user interface. The User Interface: The Human–Machine Connection User interface The interface defines the look and feel of the computing experience from a human point of view. Desktop operating systems MS-DOS is an operating system in which the user interacts using characters rather than graphics: Letters Numbers Symbols Features include: Command-line interface (commands are typed) Menu-driven interface (commands are chosen from on-screen lists) GUI (Graphical User Interfaces), pronounced “gooey” Mac OS was developed by Macintosh in 1984 using GUI. Microsoft Windows is now the most popular operating system. UNIX and Linux UNIX was developed at Bell Labs before personal computers were available. Linux was created by Linus Torvalds and continues to be a work-in-progress. UNIX has dominated the multi-user server market for decades. Many choose to use dual-boot PCs to switch between Windows and Linux, simply, by rebooting. UNIX allows a timesharing computer to communicate with several other computers or terminals at once. Linux is free for anyone to use or improve. UNIX remains the dominant operating system for Internet servers. Some form of UNIX is available for personal computers, workstations, servers, mainframes, and supercomputers. Hardware and software platforms Windows Vista – 5 versions Windows Server 2008 Windows XP Windows CE Windows Mobile Mac OS X (10) Mac OS 9 Linux, Sun solais, and UNIX variations BlackBerry OS Palm OS Cross-platform applications, such as Microsoft Office and Adobe Photoshop, are programs available in similar versions for multiple platforms. Mac users can buy software emulation programs that: Create a simulated Windows machine in the Mac Translate all Windows-related instructions to Mac equivalents Future applications may be tied to networks rather than to desktop platforms Microsoft.NET strategy Java, a platform-neutral computer language developed by Sun Microsystems for use on multiplatform networks Virtual machines Tomorrow’s user interfaces Future user interfaces will be built around emerging development technologies such as: The end of applications Natural-language interfaces Agents Virtual realities File Management: Where’s My Stuff? Organizing files and folders One solution to this problem is to organize data files logically. Both Windows and the Mac support the notion of common system folders with selfexplanatory names: My Documents (Documents) My Pictures (Pictures) My Music (Music) File-management utilities View, rename, copy, move, and delete files and folders Hierarchies help with organization Help with locating a file Get size, file type, and last modification date Managing files from applications Operations: Open, Save As, Save, and Close Locating files Modern operating systems include search tools that can help you find files New operating systems have built in file management tools to help users keep track of files Virtual folders can “contain” files located all over your computer Defragmentation: the cure for fragmented files As you work with a file, its contents become scattered into different tracks and sectors of your hard drive. Software Piracy and Intellectual Property Laws The piracy problem The software industry is a $50 billion a year business sector. Billions of dollars and tens of thousands of jobs are lost each year to software pirates. One-third of all software is illegally copied. Intellectual property and the law Intellectual property includes the results of intellectual activities in the arts, science, and industry. Laws ensure that mental labor is justly rewarded and encourage innovation. (Copyright, Trademark, Patent, etc.) The information age requires the outdated and inconsistent intellectual property laws to be changed and adapted. Inventing the Future Tomorrow’s Evolving Applications and Interfaces The WIMP (windows, icons, menus, and pointing devices) interface is easier to learn and use than earlier character-based interfaces. The SILK interface incorporates many important emerging user interface software technologies: Speech and language Image and virtual reality Knowledge Lesson Summary This chapter provides some general answers to the “What is software” question, along with details about each of the three major categories of software: Compilers and other translator programs, which enable programmers to create other software Software applications, which serve as productivity tools to help computer users solve problems System software, which coordinates hardware operations and does behind the scenes work the user seldom sees Popular operating systems include Windows, Mac OS X, UNIX, and Linux. The user interface is a critical communication component in operating systems, applications, programming languages, and utilities. Tomorrow’s interfaces are likely to rely on three-dimensional graphics and animation to create virtual realities. Software piracy is a major concern in the computer industry.