копировал программу

Геннадий Башкиров
После окончания школы у меня были неудачные "попытки сдать экзамен" в академию. Ну, это: если бы родители были академиками, тогда — да. А вот — нет.

Случилось со мной небывалое: я поступил в институт. На лекции ходил, туда, сюда. Однажды я заблудился среди переходов и лестниц главного корпуса. Решил вопрос, как учили на первом курсе на уроках программирования: простое перемещение вперед вдоль правой стены. Пришёл к выходу из здания где-то через полчаса. Большой корпус.

Институт селекционировал инженеров и математиков. Между лекциями я, студент первого курса, слоняясь по территории, слышал разговоры. Старшекурсники поговаривали о том, что институт готовил ракетчиков. И, вроде как, на четвёртом курсе, надо было что-то подписывать. По счастью, я учился не на том факультете, и мне это, вроде бы, не грозило.

Я с удовольствием ходил на занятия по программированию, но мне совсем не нравилась ЭВМ ЕС. Это когда монитор — "баба-Яга", а корпус клавиатуры сделан из качественной стали. И клавиши — на пружинках сжатия. Нас только работе с перфокартами не учили. Это, наверное, на четвёртом курсе не моего факультета.

В этом институте учились студенты из разных сословий и из разных городов: из Ивантеевки, из Реутова, из Раменского, из Люберец и из разных "спальных" районов Москвы. Из Ивантеевки, говорят, ходил автобус, а вот из всех остальных мест нужно было добираться на электричке.

Я поступил в институт в "правильный" год: у руководства после Нового года созрело решение перевести студентов с компьютеров ЕС на компьютеры "IBM 286". Самым забавным в страхе ответственных лиц было то, что 90% студентов того факультета, где мне довелось учиться, чуть ли ни ежедневно "нажимали" на "IBM 386". Я сам однажды видёл "трёшку" у знакомых и даже поиграл в "гоблинов". 5 часов подряд.

В просторной аудитории, слегка напоминающей своими размерами и высотой потолка спортивный зал, стояло примерно двадцать терминалов "IBM 286" и один сервер "IBM 386". Такие "страшные" слова я запомнил ближе к летней сессии. Рядом с сервером стоял матричный принтер колоссальных размеров. Он стоял на двух столах. В принтер был вставлен конец рулона, а сам рулон был закреплён на массивной опоре. Бумаги там было метров двести. Наверное. За всё время посещения мной этого института рулон и до половины не уменьшился. Или иглы было жалко: целых 24. Мониторы были цветными, яркость и контраст можно было настроить "под себя", но не разрешалось. То, что мониторы были цветными, я узнал из уст преподавателя. И увидел воочию тогда, когда один парень с нашего курса написал программу раскрашивания произвольной области в любой цвет. Это не было полноценным графическим редактором, но работало. У этого парня не было своего, домашнего, компьютера. Как и у меня, впрочем.

Ну, а самой большой "фишкой" компьютерного класса были клавиатуры. Обычные, заграничные, пластмассовые, 101-клавишные. Они, клавиатуры, были привинчены к столам двумя стальными болтами каждая. Намертво. Не отдерёшь.

Я не знал "DOS"-а (Disk Operation System, — программа работы с диском, — англ.). "Стадо" компьютеров я видел впервые в жизни. На латинскую раскладку клавиатуры, а другой и не было, я нажимал "одним пальцем". То, что компьютеры были объединены в сеть, я узнал на занятии. Объяснение было доступным: "С этой машины можно отправить документ на печать вот сюда." Что я и сделал, когда надо было выполнить соответствующее учебное задание.

15 раз. Я думал, что американский компьютер — это кнопочку нажал и бумага из принтера полезла. Я нажал: принтер — ни гу-гу. Я ещё раз нажал. Никакой реакции. Быть может, я допустил ошибку? Обратился к соседям по классу, спросил, верна ли функция, и получил утвердительный ответ "true". Относительная тишина, лишь сопение и клацание клавиш. Через 15 минут принтер прорвало!

Когда на полу образовалась куча рулонной бумаги внушительной длины, преподаватель задала единственный вопрос: "Кто столько напечатал?" Повисла напряжённая тишина, когда все оторвались от своих занятий и осознали произошедшее. Я ответил, что это сделал я. А на вопрос "зачем так много", сказал, что мне показалось, что принтер не работает, поэтому операцию повторил. Преподаватель оторвала напечатанное от общего рулона, подняла и бросила эту груду на стол. Она сказала, что я должен забрать это себе на память. Потом объяснила, что компьютеры объединены в сеть последовательно, один за другим. Так как я занимал крайнюю машину в сети, сигнал проходил через каждый терминал. "Сначала он дошёл до сервера (вот этот большой ящик), потом вернулся назад (верификация), и только потом отправился к принтеру на печать. Поэтому — 15 минут." Напоследок преподаватель объяснила, что команду достаточно отправить один раз. Она — дойдёт.

За один семестр я выучил команды "DOS" и больше не "плавал", и изучил базовый курс языка программирования, в конце которого всех ждал зачёт. Предыдущий, зимний экзамен на знание не-"ДОС"-а, я сдал хорошо и мне предлагали "отлично". Преподаватель в обязательном порядке учитывала материальный достаток каждого отдельно взятого студента, и "крутых" вопросов на знание матчасти не задавала. Позже, когда мне пришлось оставить институт, я тот рулон в печку отправил.

Зачёт на знание "DOS"-а и "оболочки" "Norton Commander" — это да. У меня так получилось. Официально, зачёт был на знание языка программирования, умения объяснить каждый использованный операнд, провести компилляцию и создать исполняемый (*.exe) файл. Что я и показал в итоге под "дружные аплодисменты" преподавателя и самого продвинутого, по части математики, студента, моего однокурсника. Для сдачи зачёта нужно было написать три разных программы за два часа. Я написал одну за час. Маленькую. Моя программа считала площадь произвольной фигуры. Времени едва хватило, несмотря на то, что я догадался, как обойти утомительную операцию набора текста программы на английском языке. Моё "ноу-хау" — не плагиат. Закон я не нарушал даже тогда, когда мне настоятельно предлагали украсть что угодно и перепродать кому-нибудь, нажившись на спекуляции. Пересдача зачёта — это провал. Во всех смыслах. На дворе — зима середины 90-х. А ещё: снег сугробами, мороз и далеко ехать. И автобус к институту не ходит. Нет, маршрут — есть, автобуса — нет. Зима, наверное.

Слово в защиту кода. Операнды начала и конца программы одинаковые в рамках языка, операторы условия, вывода данных на экран или модули повтора функции идентичны по строению. Если бы тогда существовала функция подстановки операторов из словаря или, даже стационарный, манипулятор "мышь", навсегда привинченный к столу, а ещё лучше — на шарикоподшипнике, то процесс написания программы был бы упрощён, но этого не было. Приходилось быстро соображать.

С помощью "Norton Commander", как в анекдоте про программиста, который искал слона, я вышел на сетевой диск. Убедившись, что все заняты написанием своих программ, я, в режиме просмотра, изучил пяток не очень сложных готовых программ. В "DOS"-е не существовало операции "скопировать часть текста в буфер обмена", поскольку не было, собственно, буфера обмена. Я скопировал два чужих файла в свою субдиректорию, в режиме "Edit" выкинул из каждой программы тяжеловесные модули, которые я, в любом случае, не смогу объяснить и, тем более, успеть набрать на клавиатуре за отведённое время, и, удостоверившись, что всё работает без проблем, терпеливо дожидался первого, готового к "экзекуции".

"Кто готов?" — спросила преподаватель. Первым был готов тот, кто лучше кого бы то ни было на потоке разбирался в математике, вторым — тот, кто "шарил" в теормехе... Третьим был тот, кто написал программу-раскраску, а может, он и экстерном сдавал: давно это было. Я "попал под раздачу" потому что явно бездельничал и вертел головой. Свою, маленькую, программу я "сдал" сразу. Да и вопросов не возникло. Две другие, "свои" программы, я объяснил, ни разу не заикнувшись. Да и уровень кода высот не брал: низэнько. Преподаватель и однокурсник-математик "хором" загадочно улыбались. Я выполнил формальную составляющую и ждал вердикта. Преподаватель предложила мне провести отладку трёх программ, то есть задействовать программную среду-компиллятор и создать исполняемые файлы, чтобы с любого компьютера можно было бы эти файлы запустить. Напомнила, как это сделать. Я сказал "так точно" и начал нажимать клавиши двух простых команд. Минут двадцать у меня на это ушло. Зачёт я сдал. Преподаватель и однокурсник-математик загадочно улыбались.

Я искал ответ, что означает "улыбка Джоконды". Слишком просто всё было; или учли, что я, после школы, был с ком-пью-те-ром на "Вы"?! Во время занятий по программированию я находил свободное время, чтобы повторить те операции, которые выполнял на зачёте. Я нашёл ответ. Простым перебором. Во время копирования по сети, в "DOS"-среде, файл терял расширение и превращался из формулы "8.3" в формулу "8.0". То, что некоторые файлы теряли расширение, я замечал и раньше, но значения этому не придавал. Со всего потока, а необычные случаи сдачи сессии обязательно обсуждались, никто не догадался скопировать программу. Я единственный.


13 июня 2017 года — 24 августа 2017 года.