- •Введение
- •Глава 1
- •§ 1. «Алгоритмические джунгли»
- •§ 2. Исходные данные и результаты. Массовость алгоритма
- •§ 4. Понятность алгоритма
- •§ 5. Рекурсивные определения
- •§ 6. Определенность алгоритма
- •§ 1. Роль алгоритмов в науке и технике
- •§ 7. Выводы
- •Глава 2 создание алгоритмов
- •§ 2. Как возникают алгоритмы
- •§ 3. Алгоритмы в математике
- •§ 4. Алгоритм Евклида
- •§ 5. Решето Эрагосфена
- •§ 6. Алгоритм разложения на простые множители. Определение наименьшего кратного двух чисел
- •§ 7. Распознавание алгебраического тождества
- •§ 8. Задачи на построение алгоритмов
- •Глава 3 кризис математики в начале XX века
- •§ 1. Арифметизация математики
- •§ 2. Теория множеств
- •§ 3. Кардинальные числа
- •§ 4. Антиномии
- •§ 5. Выводы из антиномий
- •Глава 4 логические теории алгоритмов
- •§ 1. Рекурсивные функции
- •§ 2. Машины Тьюринга
- •§ 3. Нормальные алгоритмы Маркова
- •§ 4. Эквивалентность описанных теорий
- •Глава 5
- •§ 1. Массовые проблемы. Неразрешимость проблем
- •§ 2. Экстраалгоритм и три неразрешимые проблемы
- •§ 3, Некоторые замечания
- •Глава 6 электронные вычислительные машины и программирование
- •§ 1. Устройство эвм
- •§ 2. Процессоры эвм. Рабочий цикл
- •§ 3. Что такое программа
- •§ 4. Особенности современных эвм
- •§ 5. Входные языки программирования
- •§ 6. Необходимость содержательной теории алгоритмов. Какой она должна быть
- •Г л а в а 7 формальные языки
- •§ 1. Анализ естественного языка
- •§ 2. Искусственные языки. Формальные языки
- •§ 3. Буквы, связи, оболочки, конструкции
- •§ 4. Формальные грамматики
- •§ 5. Нотация Бекуса. Тезаурусы
- •§ 1. Что такое операция?
- •§ 2. Натуральные операции
- •§ 4. Первичные алгоритмы
- •§ 5. Натуральные алгоритмы
- •§ 6. Ограничения на структуру исходных данных сняты
- •§ 8. Соотношение с алгоритмами в интуитивном смысле
- •§ 10. Исследование тупиков (клинчей)
- •§ 11. Формальная семантика формального языка
- •Глава 9 математическое обеспечение эвм
- •§ 1. Анализ эвм и программ
- •§ 2. Что такое математическое обеспечение эвм
- •§ 3. Функциональная классификация программ математического обеспечения эвм
- •§ 4. Операционные системы
- •И автоматизация процессов
- •§ I. Использование эвм для управления
- •§ 2. Информационные системы
- •§ 3. Алгоритмизация процессов
- •§ 4. Язык алгоритмизации процессов
- •§ 5. Наука и искусство алгоритмизации
- •Заключение
- •§ 1. Может ли машина мыслить? Может ли человек решить алгоритмически неразрешимую проблему?
- •§ 2. Детерминированность машин. Самообучение
- •§ 3. Сознание машин. Алгоритмическое моделирование
§ 2. Что такое математическое обеспечение эвм
Читатель заметил, конечно, что наличие операционной системы связано с применением нового языка программ. Обычно этот новый язык называют языком загрузки, в отличие от первого, который называют языком машины. Составление программ непосредственно в языке загрузки (в его письменной форме) ненамного легче, а иногда и труднее, чем составление программ на языке ЭВМ.
Мы уже упоминали раньше о том, что существуют языки программирования, более удобные для программиста, чем языки машины или загрузки. Применение таких языков связано с применением трансляторов. Читатель видит, что использование ЭВМ требует наличия ряда вспомогательных программ, которые не имеют отношения к конкретным задачам, но необходимы для того, чтобы можно было эффективно их решать. Совокупность таких программ называют математическим или программным обеспечением ЭВМ. Такое объяснение термина «математическое обеспечение», конечно, слишком туманно. Кроме программ, входящих в математическое обеспечение, есть и другие программы, содержательные, предусматривающие решение задач. Ведь именно для решения задач и нужны ЭВМ. Чем же отличаются одни программы от других? Прежде всего следует все программы разделить на два класса: программы составленные на языке машины, и программы, составленные на языке загрузки. Первые называются служебными, а вторые — рабочими.
Очевидно, программы пользователей после трансляции все являются рабочими. Но и некоторые программы математического обеспечения тоже являются рабочими. Например трансляторы. В чем же особенность программ математического обеспечения? Эта особенность заключается в определенной взаимосвязи между ними. Программное обеспечение ЭВМ — это не совокупность, а система программ. Их называют системными в отличие от программ пользователей.
Способ объединения программ в систему математического обеспечения ЭВМ избирают в соответствии с целью, для которой создается математическое обеспечение. Этот способ частично относится к компетенции теории алгоритмов, частично выходит за ее рамки. Последнее неизбежно, так как математическое обеспечение предназначено для удовлетворения реальных потребностей, а не для выполнения каких-то абстрактных условий. Способ объединения программ можно коротко охарактеризовать.
1. Системные программы объединены в так называемую системную библиотеку программ. Это значит, что для каждой системной программы точно определено в запоминающих устройствах ЭВМ место, на котором она должна находиться (на магнитной ленте, магнитном диске в оперативной памяти, на перфоносителях; тогда должно быть известно место их хранения в то время, когда они не применяются). Но этого недостаточно. Библиотека программ предполагает наличие массива информации, с помощью которого автоматически можно найти любую программу, включенную в библиотеку. Такой массив называется каталогом (как и в обычных библиотеках). Для того чтобы с его помощью автоматически находить системные программы, нужны программы обслуживания библиотеки. Программы, не организованные в виде библиотеки программ, если их много, практически недоступны.
2. Системные программы должны быть документально оформлены по единым правилам, принятым для данной системы математического обеспечения. При этом, во-первых, должны быть сделаны подробные описания программ, для того чтобы можно было ознакомиться с их функциями, а, во-вторых, должны быть в наличии инструкции по применению программ и оформлению исходных данных.
3. Системные программы должны удовлетворять системе правил, определяющих их структуру как предложений формального языка, для того, чтобы было возможно их взаимодействие при выполнении процессорами. Такие правила называются системными соглашениями.
4. Системные программы должны быть выполнимы на ЭВМ либо непосредственно, либо благодаря наличию других программ в составе математического обеспечения.
Каким из указанных условий не удовлетворяют программы пользователей? Прежде всего эти программы не включены в системную библиотеку. Кроме того, обычно они не имеют документального оформления, требуемого данной системой. Что касается системных соглашений, то программы пользователей им удовлетворяют, так как без этого они были бы невыполнимы с помощью операционной системы. Мало того, они были бы непереводимы с помощью системных трансляторов на алгоритмический язык загрузки.
Программы пользователей обычно выполнимы на ЭВМ с помощью операционной системы. Поэтому четвертому требованию они удовлетворяют. Четвертое требование касается не пользовательских, а системных программ. Оно не допускает включения в систему математического обеспечения некоторых программ до тех пор, пока не будут в нее включены определенные другие программы.
Из описания математического обеспечения ЭВМ видно, что между программами пользователей и системными программами пропасти нет, но есть довольно глубокий ров, наполненный довольно мутной водой. Стоит только документально оформить программу пользователя так, как это принято в данной системе математического обеспечения, и включить эту программу в библиотеку — и все! Пользовательская программа стала системной.
Но читатель должен иметь в виду, что «бессистемное» размножение системных программ может переполнить системную библиотеку, если она рассчитана на малое количество программ.
Некоторые реальные системы математического обеспечения составлялись, видимо, без учета вышеприведенных четырех требований, на основе интуиции их разработчиков. Документированы они недостаточно (потому что при их аморфности документирование связано с большими трудностями), главным образом инструкциями по применению. Системная библиотека «раздергана» на отдельные группы команд и коды и разбросана среди других команд. Развитие такой системы практически невозможно, так как неизвестно, как включать в нее новые программы. Подобные системы представляют собой огромные совокупности команд, в которых сами разработчики ориентируются с трудом и которые незаслуженно вызывают восхищение и почтительный трепет у неискушенных пользователей этих систем.
Автор упоминает о «плохих» системах математического обеспечения потому, что ожидает, что среди читателей окажутся и такие «трепещущие», которые могут заявить, что никаким условиям, подобным вышеприведенным четырем, прекрасное математическое обеспечение эксплуатируемой ими машины не удовлетворяет. А отсюда один шаг до того, чтобы посчитать эти четыре условия не обязательными. Автор решительно утверждает, что чем менее понятной и более сложной кажется система математического обеспечения, тем она хуже.
