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