Программное обеспечение и его разработка
Шрифт:
а) обеспечивать, чтобы работа системы никогда не прекращалась, т. е. программы должны управлять аппаратурой, данными и другими программами так, чтобы при возникновении ошибок работа возобновлялась без вмешательства человека.
б) обеспечить, чтобы программа выполняла задание за определенный период времени: таким образом, программы должны управлять распределением временных отрезков и состояниями составных частей, меняя, если это необходимо, последовательность выполнения работ.
в) интерфейс с пользователем ориентирован на удобство работы пользователя, а не системы, при этом пользователь может использовать систему с минимумом специальных навыков.
Разрабатывать программное обеспечение очень и
Глава 2
Вычислительная машина и способы ее использования
Едва ли возможно изучать законы полета, не изучая самого самолета. Обсуждение этих законов обычно проводится в предположении, что слушатели понимают основные принципы действия рулей, закрылков и т. п. К моему ужасу, я часто обнаруживал, что мое представление об аппаратуре вычислительной машины немного, но в главном отличается от представлений моих коллег. Итак, прежде чем заняться более глубоким изучением программного обеспечения, мы просто обязаны изучить ЭВМ и способы ее использования.
Одним из значений слова «определить» является «установить границы». Предлагаемое ниже определение как раз и обрисовывает и устанавливает границы. Определение дается в два этапа, сначала определяется собственно вычислительная машина, а затем запоминаемая программа и универсальная ЭВМ.
Определение: Вычислительная машина — устройство, которое автоматически и непрерывно что-то вычисляет, выбирая свои действия из множества заранее установленных.
Подробнее обсудим некоторые моменты.
Вычислить: «Выяснить или определить с помощью какого-либо процесса». Это слово можно интерпретировать многими способами, я использую его в самом широком смысле. Сравнить — это вычислить. Измерение это также вычисление.
Автоматически и непрерывно: Пущенное в ход человеком, данное устройство будет работать «до конца» — до тех пор, пока задание не будет выполнено полностью. Теоретически оно может работать бесконечно долго, если управляемый устройством процесс не имеет логического конца. Здесь мы отмечаем способность проводить операции в течение длительного периода времени без вмешательства человека.
Выбор действия из множества заранее установленных: Человек вводит несколько альтернативных вариантов последовательностей операций, а вычислительная машина в соответствии со своими собственными внутренними процессами «выбирает» ту ветвь, которую надо выполнять в данный момент. Все ветви заранее определяются человеком, который программирует для этой машины.
Это определение подходит для всех вычислительных машин, а не только для универсальных. Попробуем теперь обрисовать различия между специализированными и универсальными ЭВМ. Наиболее четкое из всех когда-либо встречавшихся мне разграничений проведено в высказывании знаменитого Джона фон Неймана, написавшего в 1946 г. меморандум, навсегда связавший его имя стой архитектурой ЭВМ, которая используется нами и до сих пор. В этом меморандуме впервые появилась четкая формулировка определения универсальной вычислительной машины. Там говорилось, что во всех специализированных машинах, которые применялись уже много лет, все команды были встроены таким образом, что являлись неотъемлемой частью самого устройства. Другими словами, алгоритм, выполняемый машиной, является частью конструкции этой машины. Фон Нейман указал, что машина может и другим способом контролировать ход операций — с помощью чисел, заносимых в машину.
Очевидно, что машина должна иметь возможность запоминать некоторым образом не только цифровую информацию, необходимую для проведения данных вычислений, например граничные значения, таблицы функций и промежуточные результаты вычислений, а также и команды, которые управляют последовательностью операций, выполняемые с числовыми данными. В специализированной машине эти команды являются неотъемлемой частью устройства и составляют часть разрабатываемой структуры. Универсальная машина должна иметь возможность проводить любые вычисления, которые могут быть выражены как вычисления над числами.
Универсальная вычислительная машина — это такая вычислительная машина, команды которой записаны в память и могут быть достаточно быстро заменены там другими командами без какого-либо инженерного вмешательства.
Даже если бы смена команд происходила медленно (скажем, за несколько часов), мы все же имели бы универсальную машину, хотя и медленную.
Это определение отделяет универсальную цифровую вычислительную машину (ЦВМ) от ручного калькулятора и от сложных автоматов, плотно заселивших наше технологическое общество.
Это определение может быть применимо к замечательным и недорогим устройствам, которые производятся на основе больших интегральных схем (БИС). Оно проводит различие между электрической схемой и вычислительной машиной, между калькулятором и ЭВМ.
Это определение охватывает все вычислительные машины, будь то микро-, мини-, миди- или макси-машины. Различие между микро- и мини-ЭВМ очень нечеткое, и постепенно сотрется по мере прогресса БИС. Через несколько лет все вычислительные машины станут микро-ЭВМ и будут целиком располагаться на одном полупроводниковом кристалле.
Не будем продолжать обсуждение этого определения. Это уведет нас в сторону от вопросов программного обеспечения. Всякое определение важно, а это к тому же точно и полезно.
То, как будет использоваться вычислительная машина, определяет и потребность в программном обеспечении. Здесь нам полезно будет взглянуть, как человек использует орудия труда. Мак Лухан утверждает, что каждое орудие представляет собой продолжение функций человеческих органов.
Дополняемый орган | Орудие |
---|---|
Нога | Колесо, велосипед, автомобиль, самолет |
Кулак | Камень, дубинка, ружье |
Кожа | Одежда |
Глаз | Телескоп, микроскоп, радиолокатор |
Рот, ухо | Радио, микрофон |
Мозг | Бумага (память), калькулятор, арифмометр |
Мозг | Вычислительная машина |
Воля [3] | Вычислительная машина |
3
Имеется в виду воля как способность принимать решения в ходе выполнения какого-либо задания. — Прим. перев.