Страница:
Сергей без труда снял шикарную комнату за какие-то копейки и провел чуть ли не лучшие три недели в своей жизни: он бесконечно гулял по пустынной набережной, обедал в кабачках, попивая молодое вино, дышал свежим воздухом, придумывал новый язык программирования и новый механизм организации файлов на жестком диске, размышлял о своих непростых взаимоотношениях с очередной подругой, а также просто мечтал о том о сем. Вообще, он был человек достаточно компанейский, но за все три недели одиночества Сергей так и не заскучал. Наоборот, дни почему-то проходили очень быстро, несмотря на то что он, в общем-то, практически ничем не занимался. И когда пришло время возвращаться в Москву, Сергей даже начал жалеть, что непроизвольный отпуск закончился так скоро, хотя, отправляясь в Сочи, он думал, что один там не выдержит и недели.
В Москву он явился загоревший почти дочерна, но в отделе, где Сергей нагло заявил, что три недели проболел, ему ничего не сказали. Видимо, там не принято было лезть человеку в душу: раз загорел во время болезни, значит, такая болезнь удачная попалась. Ему только напомнили о том, что для работы над дипломом осталось чуть больше трех месяцев, а это очень и очень мало, так что давайте-ка, молодой человек, отправляйтесь завтра в машинный зал – вам там на неделю выделили времени по два часа в день.
Машинный зал «ящика» на «Аэропорте» мало чем отличатся от институтского машинного зала: та же «СМ-4», стойки с перематывающимися бобинами магнитной ленты, здоровенное печатающее устройство, перерабатывающее непрерывный поток широкой перфорированной бумаги, терминалы с монохромными мониторами.
Машинный зал был довольно большой, терминалов на десять, но там, как ни странно, практически никого не было, за исключением парня лет тридцати типично «ботанической» наружности: засаленные польские джинсы, купленные лет пять назад, рубашка с подозрительными пятнами на груди, имеющими то ли пищевое, то ли алкогольное происхождение, длинные спутанные волосы, поповская козлиная бородка, а также почти обязательные в то время очки в допотопной роговой оправе, стекла которых последний раз протирали еще в прошлую пятилетку. Губы парня были плотно сжаты и слегка искривлены, что придавало лицу презрительное выражение. Рядом с парнем стояла здоровенная фаянсовая кружка с чаем, которую явно не мыли пару лет.
На появление Сергея парень вообще никак не отреагировал, продолжая шлепать пальцами по клавиатуре, которая непонятно зачем была разрисована фломастерами.
– Привет, – сказал Сергей. – У меня тут машинное время.
Парень нервно дернул головой, но на приветственные слова ничего не ответил, продолжая бряцать клавишами, и тихонько бормотал что-то ругательное – видимо, относящееся к происходящему на экране.
– Але, – громко сказал Сергей, – на борту! Тут вообще жизнь есть какая-нибудь или нет? Или мне за любой терминал садиться?
Тут парень наконец-то соизволил оторваться от клавиатуры и уставился тусклым взглядом на Сергея.
– Садиться здесь можно только туда, куда я укажу, – заявил парень каким-то скрипучим и очень противным голосом. – Я тут – начальник машины.
– Поздравляю, – сказал Сергей. – Тогда укажи, куда можно сесть. И я сяду, – объяснил он, стараясь говорить очень короткими и односложными фразами. – Кстати, – сказал он, показывая пальцем на кружку, которая внутреннюю белизну давно поменяла на нечто темно-коричневое, – а ты вообще в курсе, что человечество уже изобрело соду?
Парень на вопрос о соде никак не отреагировал и начал задумчиво ковырять пальцем в волосах. Видимо, он никак не мог решить вопрос, за какой из девяти свободных терминалов можно посадить этого нахального неофита.
– А что делать-то будешь? – наконец спросил он Сергея.
– Диплом программировать, – объяснил тот. – Жутко сложное уравнение. Строк на десять.
– Я тебе программу писать не буду, – объяснил парень. – У меня времени нет – работы по горло. Ну то есть, если что, могу и написать, но сам понимаешь, работа серьезная, требует всякого… – он замялся, – сопровождения и так далее. Программировать – это тебе не бидоны возить. Тут башка знаешь как соображать должна? Обычный человек…
– Не надо мне ничего писать, – прервал его Сергей. – Программу я написал, надо просто вбить код, прогнать через интерпретатор, получить результаты и распечатать код вместе с результатами.
– Дай посмотреть, – требовательно сказал парень, протягивая руку за текстом программы.
Сергей молча протянул листок с написанным кодом.
– Только должен тебя огорчить, – торжествующе сказал парень, не заглядывая в бумагу. – У нас тут не какой-то вшивый Basic. У нас тут Modula 2. Так что все надо переписывать.
Сергей промолчал.
Парень, подхихикивая, поднес листок к глазам. Посмотрел на код и поскучнел.
– А, – сказал он вяло, – у тебя уже на Modula? Ну, садись тогда, – и парень махнул рукой на ближайший к нему терминал.
Сергей устроился за клавиатурой, положил рядом текст программы и начал вбивать код. После того как все было перенесено, он запустил интерпретатор, и тот тут же выдал ошибку в самой первой строчке программы. Сергей нахмурился. Там точно не было никакой ошибки. Но он на всякий случай попробовал то так, то сяк изменить написание – пробел вставить, «оператор» написать маленькими буквами – мало ли что. Но это не помогало, интерпретатор упорно выдавал ошибку. Пришлось обращаться за помощью к парню, хотя Сергею это делать совершенно не хотелось.
Парень, поправив очки, посмотрел код на экране, торжествующе улыбнулся и сказал:
– Ну так ты «операторы» неправильно пишешь!
– Как это неправильно? – удивился Сергей. – Что там неправильного?
– Ну так у тебя написано CONST, VAR, PROCEDURE, BEGIN, WRITELN и так далее, – так же торжествующе сказал парень, – а так нельзя!
– Вообще-то, Никлаус Вирт, разработчик этого языка, – заметил Сергей, – считает, что именно так эти «операторы» и должны писаться. Впрочем, конечно, может, он ошибается, тогда ты его поправь.
– Чтобы можно было выводить русский текст, – объяснил парень, – нужно эти «операторы» писать по-русски. И переменные все по-русски. Вообще не должно быть никаких латинских символов – тогда интерпретатор не будет ругаться. Пиши КОНСТ, ВАР, ПРОЦЕДУРЕ, БЕГИН, ВРИТЕЛН.
– Ты что, серьезно? – потрясенно спросил Сергей.
Парень сделал гордое выражение на лице.
– Ну так учись, – сказал он. – Что бы ты без меня делал!
– А какой мудак, – все так же потрясенно спросил Сергей, – сотворил такой интерпретатор? Что, нельзя было подключить обе половины кодовой таблицы и при обработке русского просто переключаться на вторую половину? Там же русский только для текстовых переменных нужен. На черта такой геморрой с языком устраивать?
Парень скривился.
– Это я вообще-то отлаживал интерпретатор, – заявил он. – Только благодаря мне теперь по-русски можно что-то выводить. Если ты такой умный, делай свой.
– Вот тут извиняй, – сказал Сергей, – у меня в этом заведении другие задачи. Ты уж как-нибудь сам. Но я тебе, старичок, на будущее рекомендую все-таки не искать легких путей, которые на самом деле очень тяжелые. Это же надо было так интерпретатор изуродовать…
– Во-во, явился умник, – пробурчал парень, вставая из-за своего терминала. – Если ты такой умный, – сказал он, – тогда сам тут и колупайся. Мне идти пора.
– Удачи, – сказал Сергей, надеясь, что дальше он сам как-нибудь разберется.
Парень ушел. Сергей еще два часа отлаживал программу, заменяя все операторы этими идиотскими русскоязычными «аналогами». Но так как аналоги придумывал ушедший начальник машины, а его сознание страдало потерей контакта с окружающей действительностью, Сергею пришлось изрядно попотеть, перебирая кучу самых дурацких вариантов написания тех или иных операторов. Проблема была еще в том, что количество символов в русских и английских названиях операторов должны были совпадать. Поэтому он потратил минут двадцать на то, чтобы выяснить, как в русском варианте должен выглядеть оператор WHILE. Оказалось, что ВХИЛЕ. Определив это, Сергей дал себе страшную клятву, что на следующей день он принесет сюда молоток и даст начальнику машины по башке изо всех сил – ну просто чтобы этот гад больше не смог нести в мир такой программный кошмар.
Впрочем, начальник машины, видимо, почувствовал, что Сергей по отношению к нему почему-то не испытывает должного уважения, не говоря уж о раболепии, поэтому все последующие дни в то время, когда Сергей приходил в машинный зал, парень там не появлялся.
В конце концов Сергей более или менее освоился с этим идиотским интерпретатором, поэтому смог отладить программу и получить результаты. Распечатав текст программы, он посмотрел на него и грустно вздохнул: выдавать эти два листочка за диплом было просто неприлично.
Тогда он занялся тщательным документированием кода: писал в тексте, что означает каждая переменная и где она используется, зачем вводится этот цикл и что служит условием его прекращения, – в общем, на каждую строчку кода сделал две-три строчки комментариев. Текст увеличился до четырех листочков, но на диплом по-прежнему не тянул.
С этим надо что-то делать, решил Сергей, после чего взялся за код, засучив рукава. Он ввел штук двадцать новых переменных и констант, а потом начал набивать программу совершенно бессмысленными процедурами и циклами, которые занимались решением глубоко личных задач – например, подбором результата вычисления корня из заданного числа путем его подгонки к результату возведения в квадрат стартового числа, постепенно увеличивающегося на сотую долю. Также в текст вошла любимая Сергеем процедура расчета биоритмов, а потом, раздухарившись, Сергей добавил в код еще и классную процедуру очень непростого расчета движения Луны – туда входил прелестный полином, который сразу стал жемчужиной этой многострадальной программы. Одновременно приходилось следить, чтобы все эти вскипающие то здесь, то там процедуры и циклы не мешали выполнению главного уравнения и при этом смотрелись солидно и внушительно. После этих шаманских действий программа уже стала походить на диплом – аж десять страниц кода.
Далее Сергей вспомнил об обычных школьных ухищрениях, которые всегда используются в подобных случаях: поля сверху, снизу, слева и справа на страницах нужно увеличить в 3–5 раз, шрифт увеличить до 14 кегля, а расстояние между строк сделать через три интервала. Распечатал. Программа теперь занимала тридцать шесть страниц, и ее уже было не стыдно показать кому угодно – разумеется, при условии, что этот человек ни черта не понимает в программировании.
Впрочем, специалисты текст также оценили – Сергей показал его знакомому студенту, с которым они сдружились на вычислительном центре института, и тот, посмотрев код, ржал минут двадцать.
На все эти манипуляции ушло не больше недели, а до окончания диплома оставалось больше двух месяцев. Тогда Сергей решил для красоты еще и графики по результатам построить. Но выяснилось, что машина не имеет графического режима как класса – только текстовый. Ну, текстовый так текстовый, решил Сергей, после чего сделал несколько листов с распечатками графиков, которые создавались с помощью псевдографических символов.
Еще пара дней ушла на то, чтобы привести текст программы в божеский вид со стандартными англоязычными операторами, – не показывать же на дипломе все эти дикие ВХИЛЕ и ВРИТЕЛН, – после чего диплом был готов.
Начальник отдела «ящика», посмотрев на распечатки, долго довольно качал головой и приговаривал: «Можешь ведь, когда хочешь». А потом добрался до графиков и спросил:
– Что это такое?
– Это графики, – пояснил Сергей, слегка удивившись. Начальник вообще производил впечатление вполне адекватного человека, хотя и ничего не понимал в программировании.
– Я понимаю, что графики, – сказал начальник. – Но наша машина не умеет делать графики. Как класс.
– У нее нет графического режима, – объяснил Сергей. – А это – графики, сделанные в текстовом режиме с использованием символов псевдографики. Плавную кривую я построить не могу, а поставить точки звездочками – запросто. Это же элементарная задача.
– Михаил, – громовым голосом сказал начальник на весь отдел, – подойдите ко мне!
Из-за стола у окна поднялся Миша – ведущий программист отдела – и подошел к начальнику.
– Это что? – так же громко спросил начальник, показывая графики Сергея.
– Какие-то графики, – честно отметил Михаил и пожал плечами – мол, я-то тут при чем.
– Эти графики, – сказал начальник, – сделаны на нашей машине. У нас. В институте.
– Не может быть, – твердо сказал Миша. – Наша машина не умеет делать графики.
– У нее нет графического режима, – терпеливо повторил Сергей. – А это – графики, сделанные в текстовом режиме с использованием символов псевдографики.
– Как это? – удивился Миша.
– Да просто точки проставлены звездочками, – объяснил Сергей. – По горизонтали в первой строчке делаешь одну ось, другую ось пускаешь по вертикали – одно деление на строку. Звездочка показывает значение: чтобы ее поставить куда нужно, значение превращается в пробелы. Вот и все.
– Понял? – спросил начальник Мишу.
– Ну, в общих чертах, – ответил Миша, всем своим видом показывая, что на фразе «наша машина не умеет строить графики» он будет стоять до конца.
– Короче говоря, – сказал начальник Сергею, – иди за стол к Мише и подробно объясни ему, как строить эти графики. Они нам нужны позарез.
С графиками Сергей и Миша возились три дня. Правда, Миша действительно врубился, и они вдвоем сделали программу построения довольно сложного графика с изменяющимся масштабом.
После этого у Сергея настали тяжелые времена. Начальник при каждой встрече с ним начинал плотоядно улыбаться и все время заводил разговор о том, что хорошо бы Сергею прийти поработать в их отдел. Конечно, сначала он будет младшим специалистом, но это очень ненадолго, обещал начальник. Кроме того, ему сразу выбьют ставку зама главного программиста – с прицелом, пояснил начальник, на должность главного программиста отдела, что дает неслыханные преференции и гигантскую зарплату – сразу в 250 рублей в месяц, ибо на оборонку, родимую, работаем.
Сергей же, поработав в этом отделе, четко понимал, что такого количества чая каждый день его организм не выдержит, а заказы и комбидресы его не интересовали по определению. Так что на все призывы начальника он отвечал крайне уклончиво, намекая на то, что, вообще-то, после института собирался в армию офицером, а на самом деле вообще не планировал работать в «ящиках» – ему интереснее было заниматься совершенно другими вещами.
Чтобы избежать всех этих разговоров, Сергей перестал ходить в «ящик» и пару месяцев до защиты изучал графический режим Turbo Pascal на персональной XT-шке близкого друга, которая ему досталась от американского родственника.
Диплом он защитил на пятерку. Комиссия была погребена под различными программерскими терминами, начальник институтского вычислительного центра, который из уважения к Сергею также пришел на защиту, тащился от упоминаний языка Modula 2, о котором он много слышал, но никогда и в глаза не видел, а когда Сергей, распалившись, начал доказывать комиссии, что это полная глупость – писать программы для ПЗУ крылатых ракет на языке высокого уровня, когда тут явно нужно использовать только Assembler, – комиссия совсем заскучала и председатель объявил, что диплом уже защищен, потому что никаких вопросов у комиссии нет и быть не может. Так что, молодой человек, сказал председатель, вот вам пятерка – и вперед, шуруйте повышать обороноспособность Родины.
После этого Сергей с большим облегчением выяснил, что обороноспособность Родины его не ждет. Родина в начале девяностых вообще переживала тяжелые времена разрушения производства и военно-промышленного комплекса, поэтому выпущенных из института молодых специалистов уже точно никто не ждал – в «ящиках» молились, чтобы избежать сокращений уже имеющихся работников. Так что Сергею выдали диплом и сказали, что если он будет настаивать, то его куда-нибудь все-таки распределят. Может быть. Но если он не будет настаивать, тогда он может катиться на все четыре стороны. Вот эти все четыре стороны как нельзя лучше отвечали интересам Сергея, и он именно туда и отправился, устроившись на работу программистом в маленькую частную фирму.
6. Программер работает дома
В Москву он явился загоревший почти дочерна, но в отделе, где Сергей нагло заявил, что три недели проболел, ему ничего не сказали. Видимо, там не принято было лезть человеку в душу: раз загорел во время болезни, значит, такая болезнь удачная попалась. Ему только напомнили о том, что для работы над дипломом осталось чуть больше трех месяцев, а это очень и очень мало, так что давайте-ка, молодой человек, отправляйтесь завтра в машинный зал – вам там на неделю выделили времени по два часа в день.
Машинный зал «ящика» на «Аэропорте» мало чем отличатся от институтского машинного зала: та же «СМ-4», стойки с перематывающимися бобинами магнитной ленты, здоровенное печатающее устройство, перерабатывающее непрерывный поток широкой перфорированной бумаги, терминалы с монохромными мониторами.
Машинный зал был довольно большой, терминалов на десять, но там, как ни странно, практически никого не было, за исключением парня лет тридцати типично «ботанической» наружности: засаленные польские джинсы, купленные лет пять назад, рубашка с подозрительными пятнами на груди, имеющими то ли пищевое, то ли алкогольное происхождение, длинные спутанные волосы, поповская козлиная бородка, а также почти обязательные в то время очки в допотопной роговой оправе, стекла которых последний раз протирали еще в прошлую пятилетку. Губы парня были плотно сжаты и слегка искривлены, что придавало лицу презрительное выражение. Рядом с парнем стояла здоровенная фаянсовая кружка с чаем, которую явно не мыли пару лет.
На появление Сергея парень вообще никак не отреагировал, продолжая шлепать пальцами по клавиатуре, которая непонятно зачем была разрисована фломастерами.
– Привет, – сказал Сергей. – У меня тут машинное время.
Парень нервно дернул головой, но на приветственные слова ничего не ответил, продолжая бряцать клавишами, и тихонько бормотал что-то ругательное – видимо, относящееся к происходящему на экране.
– Але, – громко сказал Сергей, – на борту! Тут вообще жизнь есть какая-нибудь или нет? Или мне за любой терминал садиться?
Тут парень наконец-то соизволил оторваться от клавиатуры и уставился тусклым взглядом на Сергея.
– Садиться здесь можно только туда, куда я укажу, – заявил парень каким-то скрипучим и очень противным голосом. – Я тут – начальник машины.
– Поздравляю, – сказал Сергей. – Тогда укажи, куда можно сесть. И я сяду, – объяснил он, стараясь говорить очень короткими и односложными фразами. – Кстати, – сказал он, показывая пальцем на кружку, которая внутреннюю белизну давно поменяла на нечто темно-коричневое, – а ты вообще в курсе, что человечество уже изобрело соду?
Парень на вопрос о соде никак не отреагировал и начал задумчиво ковырять пальцем в волосах. Видимо, он никак не мог решить вопрос, за какой из девяти свободных терминалов можно посадить этого нахального неофита.
– А что делать-то будешь? – наконец спросил он Сергея.
– Диплом программировать, – объяснил тот. – Жутко сложное уравнение. Строк на десять.
– Я тебе программу писать не буду, – объяснил парень. – У меня времени нет – работы по горло. Ну то есть, если что, могу и написать, но сам понимаешь, работа серьезная, требует всякого… – он замялся, – сопровождения и так далее. Программировать – это тебе не бидоны возить. Тут башка знаешь как соображать должна? Обычный человек…
– Не надо мне ничего писать, – прервал его Сергей. – Программу я написал, надо просто вбить код, прогнать через интерпретатор, получить результаты и распечатать код вместе с результатами.
– Дай посмотреть, – требовательно сказал парень, протягивая руку за текстом программы.
Сергей молча протянул листок с написанным кодом.
– Только должен тебя огорчить, – торжествующе сказал парень, не заглядывая в бумагу. – У нас тут не какой-то вшивый Basic. У нас тут Modula 2. Так что все надо переписывать.
Сергей промолчал.
Парень, подхихикивая, поднес листок к глазам. Посмотрел на код и поскучнел.
– А, – сказал он вяло, – у тебя уже на Modula? Ну, садись тогда, – и парень махнул рукой на ближайший к нему терминал.
Сергей устроился за клавиатурой, положил рядом текст программы и начал вбивать код. После того как все было перенесено, он запустил интерпретатор, и тот тут же выдал ошибку в самой первой строчке программы. Сергей нахмурился. Там точно не было никакой ошибки. Но он на всякий случай попробовал то так, то сяк изменить написание – пробел вставить, «оператор» написать маленькими буквами – мало ли что. Но это не помогало, интерпретатор упорно выдавал ошибку. Пришлось обращаться за помощью к парню, хотя Сергею это делать совершенно не хотелось.
Парень, поправив очки, посмотрел код на экране, торжествующе улыбнулся и сказал:
– Ну так ты «операторы» неправильно пишешь!
– Как это неправильно? – удивился Сергей. – Что там неправильного?
– Ну так у тебя написано CONST, VAR, PROCEDURE, BEGIN, WRITELN и так далее, – так же торжествующе сказал парень, – а так нельзя!
– Вообще-то, Никлаус Вирт, разработчик этого языка, – заметил Сергей, – считает, что именно так эти «операторы» и должны писаться. Впрочем, конечно, может, он ошибается, тогда ты его поправь.
– Чтобы можно было выводить русский текст, – объяснил парень, – нужно эти «операторы» писать по-русски. И переменные все по-русски. Вообще не должно быть никаких латинских символов – тогда интерпретатор не будет ругаться. Пиши КОНСТ, ВАР, ПРОЦЕДУРЕ, БЕГИН, ВРИТЕЛН.
– Ты что, серьезно? – потрясенно спросил Сергей.
Парень сделал гордое выражение на лице.
– Ну так учись, – сказал он. – Что бы ты без меня делал!
– А какой мудак, – все так же потрясенно спросил Сергей, – сотворил такой интерпретатор? Что, нельзя было подключить обе половины кодовой таблицы и при обработке русского просто переключаться на вторую половину? Там же русский только для текстовых переменных нужен. На черта такой геморрой с языком устраивать?
Парень скривился.
– Это я вообще-то отлаживал интерпретатор, – заявил он. – Только благодаря мне теперь по-русски можно что-то выводить. Если ты такой умный, делай свой.
– Вот тут извиняй, – сказал Сергей, – у меня в этом заведении другие задачи. Ты уж как-нибудь сам. Но я тебе, старичок, на будущее рекомендую все-таки не искать легких путей, которые на самом деле очень тяжелые. Это же надо было так интерпретатор изуродовать…
– Во-во, явился умник, – пробурчал парень, вставая из-за своего терминала. – Если ты такой умный, – сказал он, – тогда сам тут и колупайся. Мне идти пора.
– Удачи, – сказал Сергей, надеясь, что дальше он сам как-нибудь разберется.
Парень ушел. Сергей еще два часа отлаживал программу, заменяя все операторы этими идиотскими русскоязычными «аналогами». Но так как аналоги придумывал ушедший начальник машины, а его сознание страдало потерей контакта с окружающей действительностью, Сергею пришлось изрядно попотеть, перебирая кучу самых дурацких вариантов написания тех или иных операторов. Проблема была еще в том, что количество символов в русских и английских названиях операторов должны были совпадать. Поэтому он потратил минут двадцать на то, чтобы выяснить, как в русском варианте должен выглядеть оператор WHILE. Оказалось, что ВХИЛЕ. Определив это, Сергей дал себе страшную клятву, что на следующей день он принесет сюда молоток и даст начальнику машины по башке изо всех сил – ну просто чтобы этот гад больше не смог нести в мир такой программный кошмар.
Впрочем, начальник машины, видимо, почувствовал, что Сергей по отношению к нему почему-то не испытывает должного уважения, не говоря уж о раболепии, поэтому все последующие дни в то время, когда Сергей приходил в машинный зал, парень там не появлялся.
В конце концов Сергей более или менее освоился с этим идиотским интерпретатором, поэтому смог отладить программу и получить результаты. Распечатав текст программы, он посмотрел на него и грустно вздохнул: выдавать эти два листочка за диплом было просто неприлично.
Тогда он занялся тщательным документированием кода: писал в тексте, что означает каждая переменная и где она используется, зачем вводится этот цикл и что служит условием его прекращения, – в общем, на каждую строчку кода сделал две-три строчки комментариев. Текст увеличился до четырех листочков, но на диплом по-прежнему не тянул.
С этим надо что-то делать, решил Сергей, после чего взялся за код, засучив рукава. Он ввел штук двадцать новых переменных и констант, а потом начал набивать программу совершенно бессмысленными процедурами и циклами, которые занимались решением глубоко личных задач – например, подбором результата вычисления корня из заданного числа путем его подгонки к результату возведения в квадрат стартового числа, постепенно увеличивающегося на сотую долю. Также в текст вошла любимая Сергеем процедура расчета биоритмов, а потом, раздухарившись, Сергей добавил в код еще и классную процедуру очень непростого расчета движения Луны – туда входил прелестный полином, который сразу стал жемчужиной этой многострадальной программы. Одновременно приходилось следить, чтобы все эти вскипающие то здесь, то там процедуры и циклы не мешали выполнению главного уравнения и при этом смотрелись солидно и внушительно. После этих шаманских действий программа уже стала походить на диплом – аж десять страниц кода.
Далее Сергей вспомнил об обычных школьных ухищрениях, которые всегда используются в подобных случаях: поля сверху, снизу, слева и справа на страницах нужно увеличить в 3–5 раз, шрифт увеличить до 14 кегля, а расстояние между строк сделать через три интервала. Распечатал. Программа теперь занимала тридцать шесть страниц, и ее уже было не стыдно показать кому угодно – разумеется, при условии, что этот человек ни черта не понимает в программировании.
Впрочем, специалисты текст также оценили – Сергей показал его знакомому студенту, с которым они сдружились на вычислительном центре института, и тот, посмотрев код, ржал минут двадцать.
На все эти манипуляции ушло не больше недели, а до окончания диплома оставалось больше двух месяцев. Тогда Сергей решил для красоты еще и графики по результатам построить. Но выяснилось, что машина не имеет графического режима как класса – только текстовый. Ну, текстовый так текстовый, решил Сергей, после чего сделал несколько листов с распечатками графиков, которые создавались с помощью псевдографических символов.
Еще пара дней ушла на то, чтобы привести текст программы в божеский вид со стандартными англоязычными операторами, – не показывать же на дипломе все эти дикие ВХИЛЕ и ВРИТЕЛН, – после чего диплом был готов.
Начальник отдела «ящика», посмотрев на распечатки, долго довольно качал головой и приговаривал: «Можешь ведь, когда хочешь». А потом добрался до графиков и спросил:
– Что это такое?
– Это графики, – пояснил Сергей, слегка удивившись. Начальник вообще производил впечатление вполне адекватного человека, хотя и ничего не понимал в программировании.
– Я понимаю, что графики, – сказал начальник. – Но наша машина не умеет делать графики. Как класс.
– У нее нет графического режима, – объяснил Сергей. – А это – графики, сделанные в текстовом режиме с использованием символов псевдографики. Плавную кривую я построить не могу, а поставить точки звездочками – запросто. Это же элементарная задача.
– Михаил, – громовым голосом сказал начальник на весь отдел, – подойдите ко мне!
Из-за стола у окна поднялся Миша – ведущий программист отдела – и подошел к начальнику.
– Это что? – так же громко спросил начальник, показывая графики Сергея.
– Какие-то графики, – честно отметил Михаил и пожал плечами – мол, я-то тут при чем.
– Эти графики, – сказал начальник, – сделаны на нашей машине. У нас. В институте.
– Не может быть, – твердо сказал Миша. – Наша машина не умеет делать графики.
– У нее нет графического режима, – терпеливо повторил Сергей. – А это – графики, сделанные в текстовом режиме с использованием символов псевдографики.
– Как это? – удивился Миша.
– Да просто точки проставлены звездочками, – объяснил Сергей. – По горизонтали в первой строчке делаешь одну ось, другую ось пускаешь по вертикали – одно деление на строку. Звездочка показывает значение: чтобы ее поставить куда нужно, значение превращается в пробелы. Вот и все.
– Понял? – спросил начальник Мишу.
– Ну, в общих чертах, – ответил Миша, всем своим видом показывая, что на фразе «наша машина не умеет строить графики» он будет стоять до конца.
– Короче говоря, – сказал начальник Сергею, – иди за стол к Мише и подробно объясни ему, как строить эти графики. Они нам нужны позарез.
С графиками Сергей и Миша возились три дня. Правда, Миша действительно врубился, и они вдвоем сделали программу построения довольно сложного графика с изменяющимся масштабом.
После этого у Сергея настали тяжелые времена. Начальник при каждой встрече с ним начинал плотоядно улыбаться и все время заводил разговор о том, что хорошо бы Сергею прийти поработать в их отдел. Конечно, сначала он будет младшим специалистом, но это очень ненадолго, обещал начальник. Кроме того, ему сразу выбьют ставку зама главного программиста – с прицелом, пояснил начальник, на должность главного программиста отдела, что дает неслыханные преференции и гигантскую зарплату – сразу в 250 рублей в месяц, ибо на оборонку, родимую, работаем.
Сергей же, поработав в этом отделе, четко понимал, что такого количества чая каждый день его организм не выдержит, а заказы и комбидресы его не интересовали по определению. Так что на все призывы начальника он отвечал крайне уклончиво, намекая на то, что, вообще-то, после института собирался в армию офицером, а на самом деле вообще не планировал работать в «ящиках» – ему интереснее было заниматься совершенно другими вещами.
Чтобы избежать всех этих разговоров, Сергей перестал ходить в «ящик» и пару месяцев до защиты изучал графический режим Turbo Pascal на персональной XT-шке близкого друга, которая ему досталась от американского родственника.
Диплом он защитил на пятерку. Комиссия была погребена под различными программерскими терминами, начальник институтского вычислительного центра, который из уважения к Сергею также пришел на защиту, тащился от упоминаний языка Modula 2, о котором он много слышал, но никогда и в глаза не видел, а когда Сергей, распалившись, начал доказывать комиссии, что это полная глупость – писать программы для ПЗУ крылатых ракет на языке высокого уровня, когда тут явно нужно использовать только Assembler, – комиссия совсем заскучала и председатель объявил, что диплом уже защищен, потому что никаких вопросов у комиссии нет и быть не может. Так что, молодой человек, сказал председатель, вот вам пятерка – и вперед, шуруйте повышать обороноспособность Родины.
После этого Сергей с большим облегчением выяснил, что обороноспособность Родины его не ждет. Родина в начале девяностых вообще переживала тяжелые времена разрушения производства и военно-промышленного комплекса, поэтому выпущенных из института молодых специалистов уже точно никто не ждал – в «ящиках» молились, чтобы избежать сокращений уже имеющихся работников. Так что Сергею выдали диплом и сказали, что если он будет настаивать, то его куда-нибудь все-таки распределят. Может быть. Но если он не будет настаивать, тогда он может катиться на все четыре стороны. Вот эти все четыре стороны как нельзя лучше отвечали интересам Сергея, и он именно туда и отправился, устроившись на работу программистом в маленькую частную фирму.
6. Программер работает дома
Работать дома Сергей начал сразу после окончания института. Частная фирма, куда он устроился, принадлежала его студенческому другу Грише, и, собственно, предприятие как таковое существовало практически только на бумаге. Единственный компьютер, принадлежавший фирме, прислал Гришин американский родственник. Это драгоценное устройство – мощнейший комп IBM PC–XT с цветным EGA-монитором и аж с двадцатимегабайтным жестким диском – установили у Григория дома, куда Сергей и ездил каждый день как на работу. Сам Григорий программировать не умел, но зато довольно ловко загонял разработки Сергея то туда, то сюда. Особым успехом у клиентов пользовались тогда программы по профессиональной астрологии, которой Сергею пришлось заниматься.
Через некоторое время выяснилось, что Гриша вовсе не намерен делиться с Сергеем заработанными деньгами. Собственно, зарплату Сергей также не получал – считалось, что ему уже за счастье просто работать за таким крутым компьютером. Поэтому Сергей со студенческим другом и его фирмой расстался, после чего стал изыскивать другие источники заработка – более эффективные.
На его счастье, новая работа подвернулась очень быстро. Один дальний родственник Сергея – то ли троюродный дядя, то ли четвероюродный шурин брата папы маминой кузины – создал свой первый кооператив за две недели до того, как Горбачев подписал знаменитое постановление о начале в СССР свободного капиталистического труда. Быстро разбогатев и счастливо избежав почти неизбежной в те годы быстрой смерти от бандитской пули, родственник наоткрывал этих кооперативов десятками, объединил их в крупный холдинг и стал там генеральным директором. К счастью, даже разбогатев, «дядя» не приобрел замашек «нового русского», поэтому в быту вел себя скромно, ездил на черной «Волге» и не забывал о своих родственниках, даже дальних, которых всячески поддерживал.
Не забыл он и о Сергее. Прознав, что его дальний седьмой племянник на десятом киселе аж программист, причем вполне толковый, «дядя» предложил Сергею поработать в одном из новых подразделений, входящих в холдинг. Правда, у подразделения пока еще не было собственного офиса, но программисты ведь могут работать и дома, сказал «дядя», поэтому вот тебе, Сереженька, компьютер, присланный «дядиным» американским партнером с барского плеча, садись дома и работай. Что делать – скажет начальник подразделения. Главное – не сачкуй, а то уволю и не посмотрю, что ты мой типа как племянник, сказал «дядя».
Сергей, конечно, был в эйфории от счастья. У него! Дома! Собственный! IBM PC-штоп-я-сдох-AT 286! Не какая-то там вшивая икстишка – привет Грише! А настоящая AT! С мегом оперативки! С сорокамегабайтным диском, штоп я сдох! С шикарным VGA-монитором – правда, черно-белым, но это же VGA, елкин дуб!
Первую неделю, когда эта прелес-с-с-с-с-сть только приехала в его съемную квартиру, Сергей не мог спать вообще. Он не отходил от компьютера, гладил системный блок по верхней крышке, любовался роскошным разрешением монитора и легким ходом трехкнопочной мыши. Правда, компьютер был изрядно подержанным – именно что с барского плеча американского партнера, – но кто в то время обращал внимание на подобные мелочи?
Вы и представить себе не можете, какое удовольствие было взять бутылочку с растворителем, сесть у компьютера и начать отчищать: системный блок с его волнующей кнопкой включения и такой красивой панелькой спереди, клавиатуру с дерзко зовущими клавишами, застенчивую мышь и стильный плоский дисплей.
Сергей при этом никуда не торопился, наоборот – он старался работать как можно медленнее, чтобы оттянуть тот момент, когда компьютер станет чище, чем при покупке, – ему хотелось как можно дольше продлить это предвкушение скорого обладания суперсовременного персонального компьютера. «Я буду твоим единственным хозяином, я буду обладать тобой», – шептал себе под нос Сергей, даже не замечая, насколько двусмысленно подобные заявления звучат по отношению к бездушному куску железа.
Но Сергею было наплевать на то, как это звучит. Он доводил компьютер до невиданного уровня чистоты, засыпал лицом на клавиатуре и, проснувшись, снова начинал свои неспешные манипуляции с тряпочкой и растворителем. Что он в эти дни ел и ел ли что-нибудь вообще, Сергей не помнил. Ему было все равно. Он не испытывал чувства голода, а если вдруг нечто подобное ощущалось – это только оттеняло чувство восторга от обладания настоящим персональным компьютером.
Наконец, все было готово: компьютер сиял, как новенький, рабочее место было должным образом подготовлено, вычищено и вылизано, и Сергей запустил машинку в рабочем режиме. (Разумеется, привезя устройство домой, Сергей не удержался от того, чтобы не запустить несколько раз «эйтишку». Но сам себе дал обещание сначала привести компьютер в чувство, а потом уже плотно садиться за работу.)
С этого момента у Сергея и началась домашняя работа, которая продолжалась с небольшими перерывами много лет. Поначалу Сергей боялся, что дома он нормально работать не сможет: вон ведь сколько всяких соблазнов вокруг, да и не очень было понятно, как вообще самого себя организовать, – Сергей не отличался железобетонной твердостью характера. Однако оказалось, что тут отлично срабатывает знакомое всем компьютерным специалистам чувство «уплывание в иные миры», проявляющееся сразу же, стоит только включить компьютер и сесть за клавиатуру. Это чувство отлично было описано у Стругацких в книге «Понедельник начинается в субботу», причем описано исчерпывающе и буквально в паре предложений: «Было еще рано – всего седьмой час. Я включил „Алдан“ и немножко поработал. В девять часов вечера я опомнился, с сожалением обесточил электронный зал и отправился на пятый этаж».
То же самое происходило с Сергеем. Вставал он поздно – часов в десять утра. Плотно завтракал, к одиннадцати садился за компьютер и «немного работал», отвлекаясь только на то, чтобы сбегать на кухню и сделать себе очередную гигантскую чашку чая. При этом прийти в себя и встать из-за компьютера он мог в девять вечера, десять, двенадцать или три-четыре утра.
Как-то раз, когда делал особенно заковыристую утилитку, Сергей провозился ровно сутки: он сел за машину, как обычно, в одиннадцать утра и очнулся только в одиннадцать следующего дня, когда желудок настойчиво требовал чего-нибудь более существенного, чем крепкий чай и сигареты. Сергей тогда еще сильно удивился, когда увидел, что на дворе светло, – он считал, что еще только одиннадцать вечера. Действительность в виде электронного будильника грубо оборвала его светлые мечты.
Таким образом, с организацией рабочего времени проблем не было никаких: Сергей поначалу опасался, что не сможет заставить себя работать по восемь часов в день, а оказалось, что ему нужно заставлять себя работать не больше двенадцати часов в день, потому что бывало и по шестнадцать – восемнадцать.
Но тут проявились совершенно другие проблемы. Их было две. Первая была самая сложная и опасная. Она называлась очень просто – компьютерные игры.
Разумеется, Сергей играл в компьютерные игры. Да и как можно было не играть в игры, когда на современных персоналках это все выглядело таким естественным, ярким и увлекательным?!! Как можно было не погонять в Formula-1, не заглотнуть золота в Digger, не завоевать Рим в «Центурионах», не покрутить руль в Test Drive 2, не выполнить задание в Ranger, не дойти до верхнего уровня в Arkanoid, не уничтожить жирного негодяя в Rick Dangerous, не замочить всех гадов в Crime Wave, а главное – не очистить от фашистской сволочи замок в Wolfenstein?!!
Поначалу игрушки мешали Сергею не сильно. Когда он работал у Григория, там было вообще не до игрушек – нужно было все делать очень быстро, а кроме того, Гриша периодически крутился за спиной и наблюдал, чем же таким Сергей занимается.
Но дома, во время тотального отсутствия контроля, ситуация заметно изменилась в худшую сторону. Причем изменялась постепенно.
Сначала Сергей стал позволять себе вечерком на сон грядущий поиграться в какой-нибудь экшн. Так, просто чтобы быстрее заснуть. Почему всем остальным людям можно на ночь почитать книжку, спрашивал Сергей сам себя, а мне нельзя отдохнуть душой и телом, глядя на то, как у врага вылетают мозги?
Игры – они вообще действуют умиротворяюще, уверял себя Сергей, по полночи ворочаясь на постели, не в силах унять боевое возбуждение, возникшее после какой-нибудь стрелялки-мочилки. Да и логические игры спокойствия не добавляли. Сергей как-то поставил симпатичную игрушку под названием Simcity, где нужно было строить инфраструктуру города и наполнять муниципальный бюджет, и подумал, что вот уж тут-то обязательно возникнет покой и умиротворение. Но в результате он, добившись положительного годового баланса, вроде как умиротворенный отправился спать, а потом каждые полчаса просыпался, вскакивал и бежал к компьютеру – посмотреть, как растут запасы родины. А потом опять не мог заснуть, пытаясь высчитать, потянет ли он на эти деньги сразу и стадион, и аэропорт…
Через некоторое время выяснилось, что Гриша вовсе не намерен делиться с Сергеем заработанными деньгами. Собственно, зарплату Сергей также не получал – считалось, что ему уже за счастье просто работать за таким крутым компьютером. Поэтому Сергей со студенческим другом и его фирмой расстался, после чего стал изыскивать другие источники заработка – более эффективные.
На его счастье, новая работа подвернулась очень быстро. Один дальний родственник Сергея – то ли троюродный дядя, то ли четвероюродный шурин брата папы маминой кузины – создал свой первый кооператив за две недели до того, как Горбачев подписал знаменитое постановление о начале в СССР свободного капиталистического труда. Быстро разбогатев и счастливо избежав почти неизбежной в те годы быстрой смерти от бандитской пули, родственник наоткрывал этих кооперативов десятками, объединил их в крупный холдинг и стал там генеральным директором. К счастью, даже разбогатев, «дядя» не приобрел замашек «нового русского», поэтому в быту вел себя скромно, ездил на черной «Волге» и не забывал о своих родственниках, даже дальних, которых всячески поддерживал.
Не забыл он и о Сергее. Прознав, что его дальний седьмой племянник на десятом киселе аж программист, причем вполне толковый, «дядя» предложил Сергею поработать в одном из новых подразделений, входящих в холдинг. Правда, у подразделения пока еще не было собственного офиса, но программисты ведь могут работать и дома, сказал «дядя», поэтому вот тебе, Сереженька, компьютер, присланный «дядиным» американским партнером с барского плеча, садись дома и работай. Что делать – скажет начальник подразделения. Главное – не сачкуй, а то уволю и не посмотрю, что ты мой типа как племянник, сказал «дядя».
Сергей, конечно, был в эйфории от счастья. У него! Дома! Собственный! IBM PC-штоп-я-сдох-AT 286! Не какая-то там вшивая икстишка – привет Грише! А настоящая AT! С мегом оперативки! С сорокамегабайтным диском, штоп я сдох! С шикарным VGA-монитором – правда, черно-белым, но это же VGA, елкин дуб!
Первую неделю, когда эта прелес-с-с-с-с-сть только приехала в его съемную квартиру, Сергей не мог спать вообще. Он не отходил от компьютера, гладил системный блок по верхней крышке, любовался роскошным разрешением монитора и легким ходом трехкнопочной мыши. Правда, компьютер был изрядно подержанным – именно что с барского плеча американского партнера, – но кто в то время обращал внимание на подобные мелочи?
Вы и представить себе не можете, какое удовольствие было взять бутылочку с растворителем, сесть у компьютера и начать отчищать: системный блок с его волнующей кнопкой включения и такой красивой панелькой спереди, клавиатуру с дерзко зовущими клавишами, застенчивую мышь и стильный плоский дисплей.
Сергей при этом никуда не торопился, наоборот – он старался работать как можно медленнее, чтобы оттянуть тот момент, когда компьютер станет чище, чем при покупке, – ему хотелось как можно дольше продлить это предвкушение скорого обладания суперсовременного персонального компьютера. «Я буду твоим единственным хозяином, я буду обладать тобой», – шептал себе под нос Сергей, даже не замечая, насколько двусмысленно подобные заявления звучат по отношению к бездушному куску железа.
Но Сергею было наплевать на то, как это звучит. Он доводил компьютер до невиданного уровня чистоты, засыпал лицом на клавиатуре и, проснувшись, снова начинал свои неспешные манипуляции с тряпочкой и растворителем. Что он в эти дни ел и ел ли что-нибудь вообще, Сергей не помнил. Ему было все равно. Он не испытывал чувства голода, а если вдруг нечто подобное ощущалось – это только оттеняло чувство восторга от обладания настоящим персональным компьютером.
Наконец, все было готово: компьютер сиял, как новенький, рабочее место было должным образом подготовлено, вычищено и вылизано, и Сергей запустил машинку в рабочем режиме. (Разумеется, привезя устройство домой, Сергей не удержался от того, чтобы не запустить несколько раз «эйтишку». Но сам себе дал обещание сначала привести компьютер в чувство, а потом уже плотно садиться за работу.)
С этого момента у Сергея и началась домашняя работа, которая продолжалась с небольшими перерывами много лет. Поначалу Сергей боялся, что дома он нормально работать не сможет: вон ведь сколько всяких соблазнов вокруг, да и не очень было понятно, как вообще самого себя организовать, – Сергей не отличался железобетонной твердостью характера. Однако оказалось, что тут отлично срабатывает знакомое всем компьютерным специалистам чувство «уплывание в иные миры», проявляющееся сразу же, стоит только включить компьютер и сесть за клавиатуру. Это чувство отлично было описано у Стругацких в книге «Понедельник начинается в субботу», причем описано исчерпывающе и буквально в паре предложений: «Было еще рано – всего седьмой час. Я включил „Алдан“ и немножко поработал. В девять часов вечера я опомнился, с сожалением обесточил электронный зал и отправился на пятый этаж».
То же самое происходило с Сергеем. Вставал он поздно – часов в десять утра. Плотно завтракал, к одиннадцати садился за компьютер и «немного работал», отвлекаясь только на то, чтобы сбегать на кухню и сделать себе очередную гигантскую чашку чая. При этом прийти в себя и встать из-за компьютера он мог в девять вечера, десять, двенадцать или три-четыре утра.
Как-то раз, когда делал особенно заковыристую утилитку, Сергей провозился ровно сутки: он сел за машину, как обычно, в одиннадцать утра и очнулся только в одиннадцать следующего дня, когда желудок настойчиво требовал чего-нибудь более существенного, чем крепкий чай и сигареты. Сергей тогда еще сильно удивился, когда увидел, что на дворе светло, – он считал, что еще только одиннадцать вечера. Действительность в виде электронного будильника грубо оборвала его светлые мечты.
Таким образом, с организацией рабочего времени проблем не было никаких: Сергей поначалу опасался, что не сможет заставить себя работать по восемь часов в день, а оказалось, что ему нужно заставлять себя работать не больше двенадцати часов в день, потому что бывало и по шестнадцать – восемнадцать.
Но тут проявились совершенно другие проблемы. Их было две. Первая была самая сложная и опасная. Она называлась очень просто – компьютерные игры.
Разумеется, Сергей играл в компьютерные игры. Да и как можно было не играть в игры, когда на современных персоналках это все выглядело таким естественным, ярким и увлекательным?!! Как можно было не погонять в Formula-1, не заглотнуть золота в Digger, не завоевать Рим в «Центурионах», не покрутить руль в Test Drive 2, не выполнить задание в Ranger, не дойти до верхнего уровня в Arkanoid, не уничтожить жирного негодяя в Rick Dangerous, не замочить всех гадов в Crime Wave, а главное – не очистить от фашистской сволочи замок в Wolfenstein?!!
Поначалу игрушки мешали Сергею не сильно. Когда он работал у Григория, там было вообще не до игрушек – нужно было все делать очень быстро, а кроме того, Гриша периодически крутился за спиной и наблюдал, чем же таким Сергей занимается.
Но дома, во время тотального отсутствия контроля, ситуация заметно изменилась в худшую сторону. Причем изменялась постепенно.
Сначала Сергей стал позволять себе вечерком на сон грядущий поиграться в какой-нибудь экшн. Так, просто чтобы быстрее заснуть. Почему всем остальным людям можно на ночь почитать книжку, спрашивал Сергей сам себя, а мне нельзя отдохнуть душой и телом, глядя на то, как у врага вылетают мозги?
Игры – они вообще действуют умиротворяюще, уверял себя Сергей, по полночи ворочаясь на постели, не в силах унять боевое возбуждение, возникшее после какой-нибудь стрелялки-мочилки. Да и логические игры спокойствия не добавляли. Сергей как-то поставил симпатичную игрушку под названием Simcity, где нужно было строить инфраструктуру города и наполнять муниципальный бюджет, и подумал, что вот уж тут-то обязательно возникнет покой и умиротворение. Но в результате он, добившись положительного годового баланса, вроде как умиротворенный отправился спать, а потом каждые полчаса просыпался, вскакивал и бежал к компьютеру – посмотреть, как растут запасы родины. А потом опять не мог заснуть, пытаясь высчитать, потянет ли он на эти деньги сразу и стадион, и аэропорт…