Выбрать главу

То есть само устройство-нагреватель превращалось в эдакий исполнительный блок со своей логикой работы, которая была заложена в его схеме, а конкретные параметры работы оно получало от управляющей перфоленты. Схема получалась мудреная, к тому же все-равно полностью не покрывала все растущих потребностей по алгоритмам управления. Так, у людей уже бродили мысли, что на каждом куске графика изменения температуры надо бы отслеживать разные значения той же проводимости или прозрачности. Соответственно, их значения надо бы задавать не для устройства, реализующего график нагрева, а для отдельных отрезков графика. И программы, и схемы управления все усложнялись и усложнялись. И кроме перфолент пока у нас не было другого удобного инструмента для программирования.

Набивку перфолент выполняли сами студенты. Вскоре им надоело перенабивать перфоленты каждый раз, меняя разве что константы — сами-то программы менялись нечасто, а вот конкретные параметры — довольно значительно — ведь даже по одной температуре надо было проводить десятки опытов с шагом в десять градусов, а для каждой температуры — еще и с разным временем — с шагом, скажем, в одну минуту — перфолент получалось просто невообразимое количество — десятки и сотни. Неудивительно, что творческие личности вскоре взвыли от такой работы и постарались как-то ее упростить. Ну народ и начал творить. Первое, что они сделали — это составили "бланковую" программу — перфоленту с командами, но без значений. И отдельно стали набивать перфоленты со значениями. А уже потом совмещать два в одном — протягивали обе перфоленты на двух аппаратах, а общий результат пробивался на третьем — эту перфоленту уже и заряжали в исследовательскую систему. А чтобы понимать — откуда надо брать значение — стали на бланковой перфоленте пробивать служебную дорожку — есть единица — берем с одного аппарата, нет — с другого. Это уже исключало необходимость повторной набивки вручную самой программы — номеров устройств, субустройств, масок ожидания — оставалось только набить перфоленты с самими значениями. Но на ленте значений надо было оставлять соответствующие им позиции пустыми. "А чего бы не сэкономить бумагу?" — подумали наши гении. И ввели на "бланковой" перфоленте еще одну дорожку — теперь, встретив единицу в этой дорожке, управляющая схема брала число с перфоленты значений — и протягивала обе перфоленты, забирая значение со второй перфоленты, а ленту команд просто протягивая дальше. А если отверстия не было, забирала номер устройства с ленты команд, а ленту значений не трогала, пока на ленте команд снова не встретится единица. А потом еще немного подумали — и подключили оба считывателя напрямую к исследовательской системе — то есть заменили предыдущий вариант с набивкой сводной ленты сразу чтением исходных лент, без создания сводной. Да, потребовалось два аппарата, но зато вышла экономия на перфолентах — и на самой бумаге, и на ее пробивке — теперь требовалась только отдельная лента команд и отдельные ленты значений, причем те — уже без пропусков под команды. Так мы постепенно приходили к Гарвардской архитектуре. Хотя тут про такое вообще не слышали — все-таки секретные штуки, но вот я как-то ляпнул в разговоре — так и прижилось. А потом и разведка подтвердила, что да, еще в конце тридцатых была предложена эта схема в Гарварде. Про меня в очередной раз зашептали "Ну точно разведчик…".

Ну а уж для перевода из десятичных в двоичный код народ сначала составил таблицу всех чисел до 1023 и набивал по ней вручную. Потом ее набили на перфоленте, которую протягивали до нужного числа — всего-то пять метров на двух бобинах, жали кнопку — и сигналы со считывающих датчиков поступали на пробивочную машину. но с такой длинной лентой ускорение получалось только если нужные значения были рядом, что получалось не всегда, поэтому ее разбили на ленты для каждой сотни, вставляли нужную и протягивали до нужного числа — надо, скажем, триста семьдесят два — брали полуметровую ленту с числами от трехсот до трехсот девяноста девяти, протягивали до нужного числа — и вперед. Потом народ понял, что каждый раз менять ленту тоже как-то занудно. Тогда сделали несколько считывателей, в каждом установили по длинной ленте на все 1024 числа — и брали значения с них — ведь шаг изменения значений одной переменной невелик — пять-десять-двадцать единиц, самих переменных тоже немного — три-пять-семь, поэтому достаточно семи считывателей максимум, и на каждом протягивать свою ленту — установили начальные значения на всех считывателях, и затем последовательно нажали на каждом кнопку — на ленте значений последовательно пробились нужные двоичные цифры. Потом сдвинули одну из лент, чей шаг отрабатывается — и снова последовательно пробили значения — и так далее. Получалось довольно быстро. Но и эту схему автоматизировали. Действительно — "Чего это мы будем жать кнопки на всех аппаратах?" — ну и добавили схему с механическим переключателем, которая по нажатию всего одной кнопки пробивала значения со всех аппаратов — главное теперь было не запутаться в смене значений на лентах-источниках — для каждой надо было выставить нужный шаг значений. А потом еще подумали, и подключили эти ленты к самой установке, и теперь было достаточно перед каждым экспериментом установить нужные начальные значения на лентах, а уж схема выбора считывателя последовательно проходила ленты и брала с них значения — ленты как бы организовывали вложенные циклы прохода по своим переменным — температуре, давлению, сопротивлению и так далее. Правда, это безобразие вскоре прекратили — все-таки надо было сохранять значения, при которых проходил эксперимент — и для истории, и чтобы повторить без необходимости настройки. Поэтому на время вернулись к предыдущей схеме с готовыми лентами значений, пока кому-то не пришла в голову мысль сдавать в архив не сами ленты, а параметры считывателей — начальное значение и шаг — количество потребной бумаги снова уменьшилось.