(Fоrtrаn Моnitor System — мониторная Фортран-система) и системе IВSYS/IBJOB
для IВМ 7094, авторы были поражены тем, насколько они элегантны, структурно
завершены и не похожи на исторических предшественников сегодняшних систем.
FMS и IBSYS/IВJOВ обладали почти всеми основными свойствами развитых
систем, включая наличие управления во входном потоке, высокоуровневой
поддержки операций ввода-вывода, механизма перемещения программ и
независимости от устройств. Кроме того, в этих системах использовалась идея
«сокрытия» машины под операционной системой и другими элементами
программного обеспечения.
Системы FMS и IВSYS были построены на хорошей концептуальной основе.
В конце 50-х годов в связи с расширением возможностей вычислительных машин,
увеличением их сложности и возникновением уже тогда серьезной проблемы
стоимости программирования и профессиональной подготовки программистов
пришлось пересмотреть с целью повышения эффективности установившиеся
традиции работы на вычислительной машине. Часть прежних обязанностей
программистов взяли на себя компиляторы, и дефицитные ресурсы стали
использоваться для автоматизации программирования. Получили широкое
распространение предшественники языков Фортран и Кобол. Появились
макроассемблеры (до сих пор непревзойденные по изощренности), а также системы
управления вводом-выводом, во многом подобные современным. Удалось
реализовать принцип перемещаемости программ, поскольку подпрограммы из
разных библиотек, в том числе библиотек ввода-вывода, вызывались при
выполнении различных операций в различные области памяти. Уже существовали
интерпретаторы, хотя применялись они не часто из-за значительного замедления
процесса вычислений по сравнению с компиляцией и последующего выполнения
программ на машинном языке.
Чтобы получить представление о степени развитости ранних языков
программирования, мы можем рассмотреть макроассемблер — автокодировщик
IOCS. Автокодировщик имел стандартные макрокоманды GЕТ, РUТ, ОРЕN, СLOSE,
SЕЕК. SСAN, функции которых близки к функциям аналогичных операторов
современных систем. Кроме того, в рамках программ на языке Ассемблера можно
было с помощью конструкций, напоминающих предложения JCL, осуществлять
распределение устройств ввода-вывода, давать описания меток и указывать, какой
тип доступа, прямой или последовательный, требуется для работы с диском.
Описывался каждый используемый программой файл, причем описание включало
адрес начала и размеры рабочей области, размер блока и формат записей
(переменной или фиксированной длины). Почти все типы параметров, известные
сегодня, существовали и в прежних системах.
Первые системы программного обеспечения включали программу-сборщик,
или, как ее еще называли, связывающий загрузчик. Такой загрузчик позволял
помещать в единую область памяти и совместно выполнять независимо
скомпилированные программы, а также связывать программы пользователей с
необходимыми библиотечными подпрограммами. До появления загрузчиков