Представляете себе, чего достигла техника, если она поднимает вопрос об автоматизации автоматов? И ставится он в области вычислительной техники, где в процессе ее совершенствования достигнуты скорости в миллионы и даже миллиарды операций в секунду и которая сама - символ высшей автоматизации.
Но воистину совершенству нет предела. Сжав сто лет в одни сутки при решении сложных задач, люди заглянули в машину и увидели, что здесь, несмотря на гигантские скорости, время не только не уплотнено, а растрачивается попусту.
Значит, у вычислительных машин есть большие резервы?
Признаюсь, что для эффектного начала я несколько погрешил против истины и не сказал о давней и упорной борьбе за экономию времени на электронно-вычислительных машинах. Много думали и думают над проблемой ускорения ввода и вывода данных, чтобы они не сдерживали работу машин. Но моя цель - рассказать о другом: обо всем, что связано с программированием, или, как говорят, математическим обеспечением.
Математик составил уравнения, описывающие сложный процесс. Но решать их на машине нельзя, покуда программист не переведет с языка формул и символов, понятных человеку, на язык цифровых команд, понятных машине. Комплекс программ, облегчающих труд программиста, и называется математическим обеспечением. Для электронно-вычислительных машин оно примерно то же самое, что для человека - образование: без него машина не машина. Именно уровень математического обеспечения определяет успех или неудачу их работы. Уровень математического обеспечения - это уровень "интеллигентности" машины.
Вот почему не жалеют вкладывать средства в автоматизацию программирования. Теперь оно обходится дороже, чем сами машины. В первом поколении машин программ было что-то около 20000, а в третьем - уже 10 миллионов! Возникла необходимость выделения специальных машин для обработки систем математического обеспечения. Возникла даже необходимость создания промышленного производства математического обеспечения, и оно стало уже новой отраслью товарной продукции.
Дальнейшее увеличение производительности труда теперь заключается не только в увеличении скоростей машин, но и в автоматизации процесса программирования, в "уплотнении" программ внутри машин и в создании своеобразной машинной иерархии.
Не сразу увидели эти трудности. Сначала лишь заметили, какая бездна драгоценного времени уходит на составление программ. Три месяца расписывают простую программу, чтобы потом за 20 минут вычислительный автомат решил задачу. Иногда решаются задачи, состоящие из многих тысяч команд. Поэтому можете представить трудоемкость составления программ, если библиотека программ, созданная лишь для одной машины, включает в себя несколько миллионов команд. Такая работа соизмерима с проведением фундаментального научного исследования. Чтобы создать математическую "оснастку" современной машины, необходим труд двух тысяч математиков в течение двух лет!
А отладка? На отладку новой программы тратится в два раза больше времени, чем собственно на работу.
Не нужно быть гением, чтобы придти к мысли заставить саму машину на основе введенных в нее правил составлять для себя программу и тем свести к минимуму объем ручного труда. Можно воспользоваться тем, что электронные машины - это "умные" машины. Можно ввести в их память своего рода начальные программы. Они должны всегда быть при машине, быть ее "рефлексами". Запустил промежуточную программу с некоторыми приемами программирования, она заставляет срабатывать "рефлексы", и приемы программирования как бы используются стандартным образом.
Автоматическое программирование преследует важную цель - помочь программисту сообщить машине, что она должна делать, освободить программиста от необходимости разбивать задачу на последовательные искусственные операции и открыть к машине доступ неспециалистам.
Автоматическое программирование при решении больших задач готовит программы лучше программистов и со скоростью, для них недостижимой. Оно даже обнаруживает ошибки, сделанные человеком при записи условий задачи.
Но не удивляйтесь, если я скажу, что несмотря на все это, буквально вчера современные электронно-счетные машины специалисты называли динозаврами вычислительной техники и между собой поносили их всячески, не обращая внимания на восторги "публики", подогреваемые еще более восторженными рассказами журналистов о "чудо-машинах", "об электронном мозге", "о вычислительных исполинах", "о блистательных творениях рук человека".
Дело в том, что в машине отдельные ее блоки в известной мере независимы и привлекаются к работе не все сразу. Поэтому до сего времени многие устройства в машине больше стояли, чем работали, - неэффективно использовалось дорогостоящее оборудование как на неправильно спроектированной поточной линии станков с разной производительностью.
Оказалось, можно исправить положение, как бы создавая межстаночные заделы, после менее производительных станков.
Уменьшив время простоя в рабочих циклах машины, сделали так, чтобы коэффициент использования всех блоков системы был близок к единице.
Конструкторы "привили" каждому устройству способность работать одновременно и независимо с несколькими программами или с несколькими частями одной программы, то есть решать сразу несколько задач. При таком положении получается, что машину более равномерно загружают, ее устройства работают самостоятельно, не дожидаясь окончания операций "соседа".
Такой метод работы назван мультипрограммированием.
Я вспоминаю разговор с академиком А. И. Бергом в Кибернетическом совете Академии наук, когда он взволнованно говорил (а спокойно говорить о кибернетике он не может), что мультипрограммирование по значению можно сравнить с приходом в свое время книгопечатания.
В том-то и заключается диалектика развития: всякое усовершенствование, всякое новшество приводит со временем к затруднениям, преодолеть которые можно лишь в результате нового усовершенствования.
Мультипрограммирование во многом решает проблему эффективной работы электронных вычислительных устройств. Но усугубилась давнишняя закономерность: чем мощнее становятся электронные вычислительные машины, тем больше времени они затрачивают на непроизводительную работу.
Как говорят на электронно-вычислительном жаргоне, "домоводство" в машине - исключительно трудноорганизуемое и емкое по времени дело. Некоторые машины тратят свыше 80 процентов рабочего времени на электронную бюрократию: на обмен информацией между различными частями машины, на отбор информации.
Решили использовать машины по иерархическому принципу и так покончить с "электронной бюрократией".
Несколько электронно-вычислительных устройств различной степени сложности (каждое из которых выполняет определенный вид работы) соединили в агрегат.
Он связан с пунктами - "конечными" устройствами для ввода и вывода заданий. Здесь в комплекте визуальный аппарат - вроде телевизионного приемника, способного выводить на экран буквенно-цифровую и графическую информацию, клавишная панель и печатающий аппарат. Агрегат, или, вернее, вычислительная система, может работать одновременно с многими сотнями и даже тысячами абонентов. И при этом каждый абонент будет работать так, как будто бы машина предоставлена только ему в личное пользование.
Те из них, у кого несложные задачи, не получат доступа к большой машине. Их запросы распределит в порядке очередности специальная программа - диспетчер. Она следит за очередностью и переключает машину, посылая на обработку задачи в малые электронно-вычислительные устройства, как бы выполняющие роль "подсобных рабочих". Такой принцип работы называется режимом "разделения времени".
Более сложные задачи решит крупная машина. Непосредственный доступ к ней ограничен: его получат лишь немногие через дополнительные пульты. Они рангом выше - могут даже приостановить действие "диспетчера" для "важного" клиента. В основном же крупная машина будет решать задачи, полученные от других электронных машин.
К большой машине присоединят сверхскоростное вычислительное устройство - "пожиратель цифр". Оно, обладая исключительной скоростью, должно справляться с сложнейшими вычислениями. но будет как бы "рабом" центральной машины, выполняющим для нее черновую вычислительную работу большого объема.
Таким образом, вводят нечто вроде градации по интеллекту. Незачем применять большой электронный молот, чтобы расколоть орешек скромной студенческой задачи.
...Вы думаете на этом заканчивается автоматизация автоматов? Она только начинается.