Навстречу своему лучу. Воспоминания и мысли - Виктор Кротов
Шрифт:
Интервал:
Закладка:
Программировали мы… На каком языке? – нетерпеливо спросит современный юный программер. Ни на каком. Ещё не было тогда нам известно о языках программирования. Писали мы на специальных бланках последовательность одноадресных команд. То есть в каждой строке был указан числовой код команды (например: взять число из такой-то ячейки в сумматор, или прибавить к сумматору содержимое ячейки с таким-то адресом, или записать содержимое сумматора в ячейку с указанным адресом, или передать управление на команду под таким-то номером) и адрес – номер ячейки, где хранится нужное число. Из этих строк и состояла программа.
Что можно запрограммировать таким образом? Теоретически – что угодно (кто сомневается, пусть прочитает про машину Тьюринга). Правда, «что угодно» было тогда довольно ограниченным. Мы писали программы для итеративных методов приближённых вычислений. Выполнялась программа одну-две минуты, но составление, подготовка и отладка занимали один-два месяца.
Однажды, чтобы к моменту отладки примерно знать результат, я произвёл те же расчеты (только с гораздо меньшим числом итераций-повторений) на механическом арифмометре. Несколько дней трещал на нём очень рьяно, примерную оценку результата получил, но понял, что ЭВМ – это великое дело.
Написав программу, мы сдавали её преподавателю; он относил плоды наших титанических усилий в ВЦ «на набивку». Когда мы приходили туда на практическое занятие, нас ждали… метры киноплёнки. На чёрной целлулоидной ленте были пробиты (отперфорированы) наши команды в виде рядов маленьких прямоугольных отверстий (каждый ряд соответствовал строке на бланке). Чтобы запустить плёночную перфоленту (многослойное кольцо) на вводном устройстве, нужно было склеить её начало с концом, причём с переворотом, как ленту Мёбиуса, – это позволяло прокручивать её многократно. Сначала вводили программу, потом исходные данные, потом запускали программу на выполнение. На панели высвечивался результат. Ряд лампочек означал число в двоичной системе (горит лампочка – 1, не горит – 0). Для удобства лампочки были разбиты на триады, так что можно было считывать результат не в двоичном, а в восьмеричном виде (всё-таки компактнее). До распечаток ещё было далеко.
Найдя ошибки в командах или в исходных данных на вводной перфоленте, мы могли кое-что исправить. Вставить строку не получалось, надо было всё отдавать на перфорацию заново. Но исправить 0 на 1 (ввод тоже имел двоичную форму), то есть пробить дырочку, можно было ручным перфоратором, похожим на дырокол. Чтобы исправить 1 на 0, устраняя пробитое отверстие, приходилось вставлять в него маленький прямоугольный кусочек плотной чёрной бумаги (такие кусочки почему-то назывались «мόзги»), выглаживая его ногтем, чтобы закрепить в дырке.
Описываю это без сожалений о каменном веке программирования, лишь восхищаюсь тем, как разительно изменилась компьютерная техника на моей памяти. Каким естественным, разнообразным и творческим стало программирование. Каким ошеломляюще-непостижимым был бы мгновенный перенос из того времени в это!
Насколько же ещё более ошеломляющим, ещё более непостижимым будет переход в вечную жизнь… Может быть, уже сейчас пора готовиться, вглядываясь в те чудеса, которые нам приоткрыты.
У входа в гильдию
Обеспечив практику в самом ВЦ Академии наук, пятьдесят вторая школа дала нам возможность заглянуть в преддверие своего рода гильдии программистов, которая в те времена только формировалась. А вход в неё был очень узок. Ведь не было ещё персональных компьютеров. Языки программирования (бытовал термин «язык высокого уровня») были новинкой, с которой могли познакомиться лишь редкие рафинированные специалисты. Далеко ещё до баз данных, дружеских интерфейсов, деления на прикладников и системщиков, до прочих основ программисткой цивилизации.
Но перед нами был открыт вход и в другую гильдию, гораздо более древнюю и традиционную – математическую. Здесь уже почти всё зависело от собственных способностей и энтузиазма. Именно чистая математика привлекала меня больше всего, хотя значительную часть жизни мне довелось заниматься программированием. Ещё бы – к чистой математике нас выводил Герман Григорьевич, а вычислительную практику вели другие люди, по-своему замечательные, только с меньшим педагогическим потенциалом.
Тогда я не подозревал, насколько математическая школа, а потом и мехмат предопределят житейскую канву моей жизни. Впрочем, так я и не стал членом гильдии математиков (по диплому – да, по духу – нет), а в гильдии программистов, хоть и побывал, но со временем постепенно из неё выпал.
Наверное, существуют своего рода гильдии-ловушки: если выберешь её как свою профессию, то потом некуда из неё деваться, приобретённые навыки лишь для неё и пригодны. Но и математика, и программирование могут как навсегда приютить в своих неоглядных глубинах, так и распахнуть тебе выход в любую сторону, чем я и воспользовался.
Нестандартность мировосприятия
Хочется мне так думать или на самом деле оригинальность мыслей (и даже поведения) ценилась среди нас выше всего? Ну, во всяком случае, достаточно высоко.
Весь класс оживлялся, когда Юра Портнов начинал сотрясать авторитеты классиков. Или когда Пете Оренштейну удавалось переспорить кого-то из учителей. Юра Барон отличался романтическим аристократизмом и тихим тонким юмором. Серёжа Петров – наоборот – острил громко и напропалую. Но у каждого складывался свой самобытный стиль. Витя Яковенко писал удивительным почерком, с наклоном влево, а позже, на мехмате, я узнал, что он по самой сложной формуле способен тут же увидеть изображение соответствующего графика функции в пространстве.
Серёжа Абрамов из параллельного класса для буквенных обозначений на геометрических чертежах использовал вместо привычных A, B, C, D,.. только букву «А»: А1, А2, А3, А4,.. – да хоть и А87.
На мехмате МГУ, где у нас тоже частично проходила практика, мы научились (вне учебной программы, как можно догадаться) оригинальной игре по названию «гоп-доп». В неё играли двое на двое или трое на трое. Команды садились друг против друга за широкий стол.
– Гоп! Гоп! Гоп!.. – говорил капитан одной команды, задавая произвольный ритм так, чтобы притупить бдительность соперников.
– Доп! Доп! Доп!.. – быстро отвечал на каждый «гоп!» капитан команды напротив и бодро стукал монеткой по столу, тут же пряча руку с ней вниз, где располагались в ожидании остальные руки членов команды.
В какой-то момент, стараясь выбрать его максимально неожиданно, ведущий выпаливал:
– Руки на стол!
Второй капитан должен был тут же положить монетку в одну из рук, прятавшихся за столом, и все руки одновременно бухались ладонями вниз на поверхность стола. Это надо было сделать как можно громче, чтобы не слышно было, под какой ладонью звякнула монетка.
После этого первой команде надо было угадать ладонь с монеткой. По напряжению рук, по выражениям лиц… Если угадали – менялись ролями.
Грохот гоп-допа вызвал бурную дискуссию между учениками и учителями о его допустимости в школе, полемику в настенной газете и… административное запрещение этой забавы, разрушительной для столов. Насколько уж оно соблюдалось – дело другое.
Любопытный эпизод случился в нашем девятом классе в феврале. Было тепло, текли ручьи. Петя Оренштейн поспорил с Юрой Портновым, что тот ни за что не пробежит от школы до метро в плавках. А тот возьми да прими вызов. Летом, на пляже, ведь ходят люди в плавках, и ничего. Ставка была немалая – десять рублей (1961 года). Пари стало известно на весь класс и всех взбудоражило.
К началу бега у нескольких человек в руках оказались фотоаппараты. Не спеша, во главе большой процессии сочувствующих, временами приветственно помахивая ручкой, Портнов добежал в плавках и в бабочке (она тоже входила в условия пари!) до метро. В подъезде одного из ближайших домов Оренштейн с ним рассчитался, на чём, казалось бы, дело и кончилось.
Но ничего подобного! Оно продолжилось на следующий день. Левитас собрал нас на комсомольское собрание, и пропесочил за эту аморальную выходку (обнажёнка, да ещё деньги). Мы хихикали, но понимали безвыходность его положения: он обязан был отчитать нас. Постановили, что такого не повторится, однако фотографии экстравагантного променада ещё долго ходили по рукам.
Был у нас и свой школьный КВН. Остроумия на нём хватало, и оно высоко ценилось членами жюри. Как и оригинальность мышления вообще.
Запомнился один конкурс, в котором двум представителям команд дали задание: съесть по большущему яблоку, кто быстрее. Представитель соперников принялся уплетать своё яблоко с невероятной скоростью. Казалось, его победа неизбежна. Но наш Андрей Соловской быстро обгрыз яблоко, проделав узенькую дорожку «по экватору», и положил его на стол жюри со словами: