Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
English for Students of programming.doc
Скачиваний:
3
Добавлен:
09.11.2019
Размер:
545.28 Кб
Скачать

1. Programming languages;

2. The authoring system.

Software

The physical components of a computer (the hardware) are not useful by themselves. Before they can function as intended, computers need programs to coordinate the activities of these physical components. In addition, they need programs designed to perform specific tasks, such as word processing, payroll calculations, budget analyses, data manipulation, or the presentation of information to students. All such programs are known as software.

A program is a series of instructions that tells the computer what to do. When the computer actually follows the instructions, we say that it executes the program. Computers will do only what they are told; they cannot make inferences or reach decisions by themselves. Consequently, every detail must be provided, because with missing steps or details the program will fail to perform as desired.

Programs of all types share one common feature. They consist of a list of instructions that the central processor can recognize. In reality, we rarely write the instructions that the processor itself needs; rather, we write instructions that are later translated into these by a special program called either a compiler, condenser, or an interpreter, depending on how it performs the translation. At the processor level, instructions are very primitive, consisting of short sequences of bits representing numbers, which makes them difficult to use. Fortunately, instructions have been developed that are more meaningful to people, such as PRINT or GOTO that have meanings similar to their English-language counterparts. These are far easier to use and are called high-level. A whole set of instructions is called a language.

Programs fall into three broad categories: operating systems, programming languages, and application programs. The term software applies to all of these. Just as hardware includes printers, VDU’s, card readers, and a host of other devices, so software includes all the various types of programs that exist. Operating systems control and coordinate the activities or operations of the computer; programming languages enable people to write programs; and application programs consist of the instructions necessary to perform specific tasks. For example, a system program would enable the computer to send the results of a payroll program to a printer.

Operating systems are programs that control the computer and are supplied with it. Part of the operating system controls the operation of the hardware such as activating printers and disk drives. Another part accepts input from the keyboard. Other parts perform tasks like allocating memory to various programs, or determining the order in which programs should be processed.

Each operating system is designed specifically for the computer it controls and thus enables the computer to optimize the use of the hardware features. Unfortunately, some operating systems are so badly written or so poorly documented that this is not always the case. This state of affairs is changing, however, and operating systems are becoming increasingly easy to use. Generally, users cannot and should not make changes to operating systems.

Programming languages. As mentioned earlier, the central processor receives instructions in machine language, a very primitive or low-level form of communication. Because it is so difficult for people to write extensive programs in machine language, there developed very rapidly what became called high-level languages. These are languages that use instructions similar to English words.

An application program is one that performs a specific task or solves a particular problem. It also has the general characteristic that it was either written specifically for a particular purpose, or designed in such a way that it could be tailored to a particular situation.

A school, for example, may use computers extensively to provide instruction and remediation. To keep track of how various students are progressing, it may be necessary to have the computer accumulate the results of each student’s performance and automatically update the student’s records each time new data are obtained. A program that keeps track of grades could first access these records and then print out a composite report for the teacher. Such an application program could be designed specifically for a particular school taking into account some of the unique details of the school’s operation.

Instead of writing this record-keeping program just for one particular school, however, an alternative approach would be to investigate the needs of a number of schools before designing the program, and to incorporate into the program the capability of satisfying many schools’ needs. Each school that implemented the program would have to make minor adjustments to suit its own unique needs. A program like this is also an application program, but it differs from the one above in that it has a general structure and can be manipulated to meet a variety of specific needs. In general, such programs are less expensive to buy because they have a larger market, but they have more constraints built into them.

In the field of educational computing, application programs include instructional programs, programs that handle grades, and various programs that allows a teacher to create and administer tests or drills.

Software, therefore, is what makes computer hardware useful. It consists of all types of programs: those that allow the various parts of a computer to function and to operate together; the languages that enable one to write new programs and the programs that perform specific tasks.

Read the text. Distinguish operating systems, programming languages and application programs, define software.

Software quality

We all want our software systems to be fast, reliable, easy to use, readable, structured and so on. But these adjectives describe two different sorts of qualities. On one side, we are considering such qualities as speed or ease of use, whose presence or absence in a software product may be detected by its users. These properties may be called external quality factors.

Other qualities applicable to a software product, such as being modular, or readable, are internal factors, perceptible only to computer professionals who have access to the actual software text. In the end, only external factors matter. If you use a Web browser or live near a computer-controlled nuclear plant, little do you care whether the source program is readable or modular if graphics take ages to load, or if a wrong input blows up the plant. But the key to achieving these external factors is in the internal ones: for the users to enjoy the visible qualities, the designers and implementers must have applied internal techniques that will ensure the hidden qualities. The internal techniques are not an end in themselves, but a means to reach external software qualities.

Here are the most important external quality factors, whose pursuit is the central task of object-oriented software construction.

Correctness and robustness

Correctness is the prime quality. If a system does not do what it is supposed to do, everything else about it matters little. It is still difficult to produce software without defects (bugs), and too hard to correct the defects once they are there. Techniques for improving correctness and robustness are of the same general flavors: more systematic approaches to software construction; more formal specifications; built-in checks throughout the software construction process; better language mechanisms such as static typing, assertions, automatic memory management and disciplined exception handling, enabling developers to state correctness and robustness requirements, and enabling tools to detect inconsistencies before they lead to defects. Because of thus closeness of correctness and robustness issues, it is convenient to use a more general term, reliability, to cover both factors.

Compatibility

Compatibility is important because we do not develop software elements in a vacuum: they need to interact with each other. But they too often have trouble interacting because they make conflicting assumption about the rest of the world. An example is the wide variety of incompatible file formats supported by many operating systems. A program can directly use another’s result as input only if the file formats are compatible. Lack of compatibility can yield disaster. The key to compatibility lies in homogeneity of design, and in agreeing on standardized conventions for inter-program communication.

Approaches include:

  • Standardized file formats where every text file is simply a sequence of characters.

  • Standardized data structures where all data, and programs as well, are represented by binary trees.

  • Standardized user interfaces where all tools rely on a single paradigm for communication with the user, based on standard components such as windows, icons, menus etc.

Portability

Portability addresses variations not just of the physical hardware but more generally of the hardware-software machine, the one that we really program, which includes the operating system, the window system if applicable, and other fundamental tools.

Ease to use

This requirement poses one of the major challenges to software designers preoccupied with ease to use: how to provide detailed guidance and explanations to novice users without bothering expert users. A well-designed system, built according to a clear, well thought-out structure, will tend to be easier to learn and use than a messy one.

Timeliness

Timeliness is one of the great frustrations of our industry. A great software product that appears too late might miss its target altogether. This is true in other industries too, but few evolve as quickly as software. Timeliness is still, for large projects, an uncommon phenomenon. When Microsoft announced that the latest release of its principal operating system, several years in the making, would be delivered one month early, the event was newsworthy enough to make (at the top of an article recalling the lengthy delays that affected earlier projects) the frontpage headline of ComputerWorld.

Read the text. Give your definitions of the most important external quality factors. Think of more examples of external quality factors.

E-Commerce

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]