Первым программируемым устройством, которым я пользовался, был калькулятор Б3-21 (я его всегда происзносил как "бэ-зэ", но внезапно оказывается, что это не "зэ" а тройка). Я на нем, правда, не программировал. Он был у папы на работе, и папа его иногда приносил считать свою диссертацию. Но на нем я научился обратной польской нотации.
А потом у папы на работе появился калькулятор МК-56, который поселился у нас дома. И вот тут я прочитал инструкцию и научился, как его программировать. Тут как раз началась официальная кампания популяризации компьютеров, и в журналах типа "Науки и жизни" и "Техники-молодежи" стали печатать статьи про Бейсик и программируемые калькуляторы. Ну, Бейсик найти было не так просто, а вот калькуляторы были самым доступным вычислительным устройством.
В "Технике-молодежи" стали печатать сериал Михаила Пухова "Путь к Земле", где каждая часть фантастического рассказа сопровождалась программой на калькуляторе, позволявшей симулировать космическое пилотирование, происходящее в рассказе. И этот сериал дал мне толчок. Вот, правда, не помню, интересовался я писанием программ для автоматизации решения квадратных уравнений в домашней работе до того, или уже после того. Сериал этот начал публиковаться осенью 1985 года, так что это дает нам датировку - мой 6-й класс школы (тогда еще 10-летней). Самый первый выпуск был еще до начала сериала, летом, в разделе "Клуб любителей фантастики", где публиковали фантастические рассказы. Я его увидел у кого-то в пионерлагере, и как-то не особо заметил, а потом приехал домой, прочитал внятно, и проникся. А потом они ввели отдельный раздел "Клуб электронных игр", который и начался с собственно того сериала. Потом, правда, была проблемка, что подписки журнала на следующий год мне не досталось. Не помню, как оно так сложилось, то ли папа про него забыл, то ли оказалась выбрана квота подписок на почтовое отделение ко времени когда мы (папа) почухались. В киосках тогда журналы не очень-то и продавали. "Технику-молодежи" я, наверное, ни разу не видел. Но в одном из магазинов технической книги, около кинотеатра "Россия" (их у нас было два - у "России" и у ДК "Металлург"), был букинистический отдел, куда кто-то сдал старые журналы из этой серии. И я потом постепенно собрал весь комплект. И вот я этими играми проникся.
После окончания сериала стали публиковать другие игры для калькулятора (иногда тоже сопровождающиеся тематическими рассказами). Вообще потрясающе, что можно сделать на калькуляторе из программы на 96 шагов. Они в "Пути к Земле" какую только баллистику не считали, а потом и атмосферный полет. Потом и самолет симулировали, и экономические игры и даже программу для шахмат (но только для эндшпиля с малым количеством фигур - не могу сказать, что оно меня сильно впечатлило, шахматами я не особо интересовался). Но, конечно, процесс был стратегический: вводишь параметры очередного кусочка, нажигаешь кнопку С/П (Стоп/Пуск), и где-то минуту ждешь пока посчитается, потом считываешь результаты из регистров памяти. Я расчерчивал бумагу и записывал всю последовательность, чтобы представить себе траекторию полета.
Потом появились даже динамические игры. Когда калькулятор считал, его дисплей (точнее, "индикатор" по тогдашней терминологии) показывал мерцание обрабатываемых в регистре X цифер (буквой X обозначался регистр-вершина стека, архитектура там была тянутая у Хьюлетт-Паккарда, со стеком и вводом операций в обратной польской нотации). И вот кто-то (впервые это было напечатано в "Науке и жизни", но потом и "Техника-молодежи" подтянулась) догадался, что если зациклить операцию, которая не меняет регистр X, то получается довольно-таки читаемое изображение на экране без останова программы. Ну как читаемое, я обычно накрывал голову и калькулятор одеялом, чтобы оно лучше читалось в темноте. А вводить управляющее воздействие без останова программы можно переключателем режима для тригонометрических операций (градусы-радианы-грады). Поэтому там сидишь смотришь как оно мерцает, потом начинает мерцать одно и тоже число - ориентируешься и быстренько переключаешь переключатель пока не перестало мигать, и на следующий круг. Там, правда, у разных моделей, этот переключатель был в разном порядке, у портативного Б3-34, под который писались программы в журнале, он был в другом порядке, чем у моего совместимого с ним по программам, но настольного МК-56. Но ничего, и так играть было можно. Я, помню, даже сам написал динамическую игру с симуляцией провода аэросаней по извилистой дороге и послал ее в журнал, но ее не сочли заслуживающей публикации.
Программы в калькуляторе не сохранялись: каждый раз после включения калькулятора надо было вводить программу заново, и без ошибок. Проверять было не так просто: программа отображалась на экране в виде шестнадцатиричных кодов команд, и чтобы ее проверять, надо было помнить эти коды. Но они со временем вполне себе запоминались. Но самой типичной ошибкой было, что кнопка нажималась не до конца и какая-то команда не вводилась. Поэтому во время ввода программы было важно следить за счетчиком команд, чтобы он соответствовал ожидаемому.
Потом вышли более новые калькуляторы МК-61, у которых память программы была длиннее на что-то типа 5 шагов, и были дополнительные команды. Некоторые игры работали только на них. Тут у нас в школе в классе математики появились МК-61, и я помню периодически одалживал у учительницы математики калькулятор домой. И делился с ней своими познаниями о программировании.
И вот я программировал на калькуляторе, и читал в "Науке и Жизни" статьи про Бейсик. Может даже и книжку какую-то про Бейсик тоже (книжки тогда было найти непросто, не так что пошел да купил какую захочешь) и точно помню книжку про Фортран. Из тогдашних впечатлений от Фортрана, помню, что мне тогда был непонятен смысл форматного вывода, и в частности зачем оператор FORMAT шел отдельно от собственно операторов ввода-вывода.
На Фортране у папы были какие-то расчеты для диссертации. Он, помню, меня и сводил на завод показал ЕС ЭВМ, где для него это считали (программу писала тетенька-программист по папиным формулам). Что странно, машина эта вроде была не в отделе АСУП (Автоматизированных Систем Управления Предприятием, где я потом работал) и не АСУТП (Автоматизированных Систем Управления Технологическими Процессами, где я тоже потом работал), а в каком-то отдельном месте, видимо в какой-то цеховой автоматизации. Прям набивали перфокарты. Оттуда помню, что английские буквы пропечатывались на перфокарте прямоугольной дырочкой, русские буквы - круглой дырочкой. Мне для примера дали перфокарту с пропечатанным моим именем.
А потом я записался в компьютерный кружок.
Клуб "Компьютер"
Мой одноклассник, Максим Грейлих, ходил в археологический кружок в городском Дворце пионеров. И в какой-то момент в начале 8-го класса (то есть это была осень 1987 года) их (то есть, занимающихся в кружках во Дворце пионеров) послали с миссией завлекать в Дворец пионеров одноклассников. Уж не помню, раздали им бумажки про имеющиея кружки, или устно рассказывали. Скорее всего устно рассказывали. Макс, помнится, пришел ко мне домой, и говорил, что ты же интересуешься компьютерами, так у них есть компьютерный кружок.
Для более молодых читателей поясню, что кружки тогда были бесплатные - приходи, записывайся, и ходи, но им для выполнения плана нужна была некая минимальная посещаемость, так что старались завлекать желающих.
Идея ездить в кружок в город (это было обиходное выражение, да может и сейчас есть - центр Челябинска назывался как минимум у нас просто "город", другие районы по расположенным там большим заводам - ЧМЗ, ЧТЗ, АМЗ, кроме Северо-Запада, который был задуман как спальный район и так и назывался "Северо-запад" или среди детей "Северок"), так вот, идея ездить в кружок в город меня не сильно завлекала - это ехать на троллейбусе час с пересадкой. Но там были живьем компьютеры, про которые я уже года два читал, так что я проникся и пошел записываться. И потом много лет ездил - сначала в клуб, потом в институт, потом еще и на работу.
Помню, как я ехал в троллейбусе записываться в клуб, а рядом стояла еще пара пацанов, высокий и низкий, и беседовала, а потом на остановке я вышел и они вышли, и в итоге оказалось, что они пришли записываться в тот же кружок, их звали Миша и Дима, и мы потом были в одной группе.
Кружок этот был Клуб "Компьютер". В городе тогда было два детских компьютерных клуба - "Инфор" (да, именно так, без "м") при ВЦ ЧПИ (политехнического института), и "Компьютер" при Дворце пионеров. Еще была 31-я школа с математическим уклоном, тоже в центре, недалеко от Дворца пионеров, со своим компьютерным кабинетом. Такой был далеко не в каждой школе, например в расположенной на ЧМЗ 91-й школе с математическим уклоном, его не было. А 31-я школа была типа как городским флагманом. Там в центре были как раз собраны с разных сторон от Дворца пионеров Самая Престижная В Городе 1-я школа с английским уклоном и 31-я с математическим.
Клуб "Компьютер" к тому времени существовал наверное уже год, если не два, но вот тогда впервые переехал в собственно Дворец пионеров и получил свой компьютерный класс из БК-0010 и "преподавательской" ДВК-2м. Про что было до того, я не особо знал, и не особо помню. До того, как я понимаю, они ходили к компьютеру в какое-то НИИ, где все по очереди втыкали в ДВК-2. "Старшее поколение" клуба, из которого у меня завелись друзья, во все это лично ходило, а я только что-то слышал из их упоминаний.
Основательницей клуба "Компьютер" была Галина Анатольевна Шиншинова (кстати, Ольга Шиншинова, в 2020 году появлявшаяся в "Что? Где? Когда?" - ее внучка), но по случаю расширения в свое помещение добавилась вторая преподавательница Галина Петровна Юровская. Я вообще был в группе у Галины Петровны.
Но клуб был не только про компьютеры, а еще и социальным клубом. По воскресеньям в нем устраивались общие мероприятия - лекции, чаепития, просмотр фильмов. Среди прочего оборудования клуб получил видеомагнитофон "Электроника ВМ-12", новейшее достижение советской электронной промышленности. Кассеты с фильмами тогда тоже добывались непростыми способами, часто методом переписывания друг у друга, как и с аудиокассетами. Ну и вот время от времени кто-то откуда-то приносил кассеты. В частности, фильм "Звездные войны" я впервые посмотрел именно там. Потом, чуть позже, массово появились видеосалоны (типа как небольшие кинотеатры, где показывали кино на телевизоре, большом для того времени и небольшом для нынешнего) и продажа уже записанных кассет в киосках.
Помню, одно из мероприятий в Клубе было "посвящение в программисты". Коля Марьенко, бывший тогда президентом клуба, завернутый в простыню-тогу поверх моднючих тогда клетчатых штанов-"бананов" и белой рубашки с тоже моднючим узким галстуком-"селедкой", прикладывал к голове посвящаемых железную клавиатуру от ДВК. Я, кстати, позже был тоже президентом клуба, но в упор не помню, проводил ли я такое посвящение. Наверное проводил. Оно как-то больше запоминается со стороны посвящаемого.
Другим запомнившимся мне мероприятием был КВН между командами "Компьютера" и "Инфора". Там, помнится, Андрей Спасибожко был капитаном команды "Инфора", а я - "Компьютера" (то есть, это дело было уже позже, когда я был президентом клуба). Там, помнится, мы заранее записывали песню на фонограмму, и надо было для комического эффекта выдать громкое высокое "и-и-и-и-и". Никто почему-то не сподобился, пришлось мне самому попробовать. И я выдал такой писк, что аж сам удивился.
Теперь про собственно программирование. В БК-0010 не было Бейсика, в нем вместо того был Фокал (Focal) - чуть другой, но очень похожий по сути язык. Особенностью Фокала было то, что в нем операторы можно сокращать до одной буквы, что экономит память для программ. И за эту способность его предпочли создатели компьютера. Бейсик, теоретически, тоже был, но он был создан позже и не на том же заводе, его надо было загружать с магнитофона (потом его засунули в ПЗУ в следующей модели БК-0010.01).
Класс состоял из примерно десятка (двенадцати?) БК-0010 с мелкими телевизорами "Шилялис" в качестве мониторов, и ДВК-2м в качестве "преподавательской машины" с дисководами ( с дискетами, никаких жестких дисков тогда еще у нас не было). Они были еще и объеденины в типа сеть, позволяющую сохранять программы с БК на дисковод ДВК, и наоборот, читать их с дисковода. Сеть эта была сделана в звездообразной топологии, с отдельным кабелем от ДВК к каждой из БК. Внутри кабеля жил интерфейс ИРПС (советский стандарт - последовательный типа RS-232, но с токовой петлей, которая давала больше дальности). Но как-то я не особо помню чтобы мы записывали на дискеты. Дискет было мало, они были жутко дефицитные и клубные. Плюс к тому работать с сетью умел только Фокал, а компилированные программы, как тогда говорили, "в машинных кодах", ни загружать из сети ни записывать было невозможно. Вместо того записывали на магнитофоны, которые тоже были в комплекте (но в меньших количествах, чем компьютеры). Для магнитофонов у каждого из нас была своя кассета - кассеты тоже были дефицитны, но вполне доступны. Программы обычно записывали в трех экземплярах - читались они ненадежно, чтоб хоть один да прочитался. И чтение было чувствительно к настройке позиции головки, чтоб была такая же как при записи. Поэтому магнитофоны были пронумерованы, и старались читать с того же собственно магнитофона, на котором было записано, и в бумажке к кассете, где записывали, какая программа находится на каком счетчике длины магнитофона расположена, писали и номер магнитофона. Интересно, что хромовые кассеты, которые якобы должны давать особо чистое воспроизведение, для записи программ не годились - читаемые с них программы не распознавались компьютером. То ли все-таки про особо чистое воспроизведение - туфта, а на самом деле они искажали сигнал, то ли на входе к компьютеру стоял фильтр, который отыгрывал назад искажения обычных кассет, и искажал сигнал с хромовых, не знаю.
Компьютеры, особенно ДВК, были жутко чувствительны к статическому электричеству. Зимой в Челябинске сухо и, помню, в школе у нас было развлечение: берешь меховую шапку за завязки и начинаешь ее крутить в воздухе, чтоб она шоркалась об стену. Это накапливает статику, которую потом подкрадываешься и разряжаешь пальцем об кого-нибудь, об жопу или об ухо. Запросто получалось с сантиметр искры, а то и больше. Особо коронно получалось в кабинете биологии, где на стенах были деревянные панели, об них набиралось гораздо больше статики, чем об крашеные стены. Ну а тут эта статика наоборот создавала проблемы и компьютер перезагружался, если к нему подходил кто-то со статическим зарядом. Даже необязательно трогал, а просто мимо проходил. Пол был линолеумный, ходили в носках (чтобы не носить грязь с ботинок), статика накапливалась вовсю. Очень обидно, когда набиваешь-набиваешь программу, а она опа, и пропадает.
Что изучали: помню занятия про модульную арифметику (тогда она меня не особо впечатлила), про массивы (массивы я уже знал из чтения книжек про Бейсик и Фортран, и помогал другим понять), про сортировку. Сортировка была для меня интересным открытием. Ее сначала задали на дом попробовать придумать самим, и я придумал методом тыка пузырьковую сортировку, но не осознал, как она работает. В ней делаются последовательно проходы, где сравниваем и если нужно меняем два соседних числа, потом второе из этих чисел со следующим, и так далее. Меня поразило то, что с каждым следующим проходом можно не включать в процесс последне число с предыдущего прохода - оно и так уже правильное, но понять, почему оно именно так, я тогда не смог. Это было мое первое столкновение с неочевидными алгоритмами.
Программы для компьютера я тогда писал как раньше для калькулятора - заранее дома на бумажке, чтобы придя к компьютеру, можно было их быстренько вколотить и посмотреть, как оно работает.
В конце занятия нам давали минут 15 поиграть. Фокал был медленным языком, поэтому приличные игры для БК писались на ассемблере (ну или кто из авторов мог - те компилировали в кросс-системе, вот в частности как я позднее узнал, тот самый Бейсик был написан в кросс-системе). Из игр мне запомнились "Клад" - это вариация Lode Runner с беганием по настилам и лесенкам и собиранием кладов, "Тетрис" - эту все знают, и "Диверсант" - там давалась пушка, которой требовалось сбивать пролетающие самолеты и выбрасываемых с них парашютистов-диверсантов.
Моей первой сколько-нибудь крупной программой стала игра (на Фокале). Тогда в молодежно-культурном журнале "Ровесник" печатали с продолжением перевод романа "Военные игры" ("War games") про мальчика, увлекающегося программированием. И упоминалась игра "Звездные налетчики", без описания ее сути (ну, на родине-то романа ее все видели как минимум в игровых автоматах). Это игра "Space invaders", где ряды жабообразных космических кораблей пришельцев ездят влево-вправо и постепенно опускаются, и их надо стрелять из пушки. Но я этого ничего не знал, мне понравилось название из журнала, которое я интерпретировал по-своему. Она игралась с перспективы звездного налетчика, где надо было подстрелить корабли земных защитников, которые елозились по экрану в виде символов "солнышко" (который заменял собой вражеский доллар в советской версии ASCII - кружок с четырьмя "лучами" по углам). На них надо было навести прицел и пульнуть лазером. Перебив всех защитников, предоставлялась возможность пульнуть в Землю, которая в результате раскалывалась и взрывалась. На изображении земли (из векторов, которые я старательно офицровал по контурам континентов в школьной контурной карте) проводился зигзаг, соединяющий точки выстрелов, этот зигзаг расширялся, потом экран мигал (там в БК-0010 была фича переключить изображение в "негатив"), и в конце концов стирался - кирдык Земле.
Про эту программу я делал доклад на ежегодной конференции НОУ, Научного Общества Учащихся, то была моя первая конференция. Они проходили где-то зимой, и та конкретно (точнее, секция программирования от нее) была в ВЦ ЧПИ. Помню как мы собирались вместе в клубе, и потом шли все пешком в ЧПИ. Брошюрка с программой от конференции у меня долго лежала. Еще одна история от той брошюрки состоит в том, что та конференция была 17-я, что было принято в СССР писать римскими цифрами, и в тексте заменять латинскую V (которой не было на русской пишущей машинке) русской У, а единицы в шрифте пишмашинки были предусмотрительно изображены в виде I, так что название с римскими цифрами в итоге выглядело как "ХУII конференция НОУ", на что мне еще один друг из клуба, Тарас Ласюченко, радостно указывал, и мы хихикали.
Примерно тогда же, зимой, мне запомнилась воскресная лекция, которую проводил Витя Русалеев. Он был из первой группы клуба, где был и Коля Марьенко, Костя Соколов, Вера и э-э-э вроде Лена, фамилий уже не помню (помню только от людей, с которыми мы потом долго общались, да и то не всех), которые были на два года старше меня. Витя первым изучил язык ассемблера (БК и ДВК имели одинаковую архитектуру процессора, скопированную с PDP-11), и делился знанием. Понимание того, как собственно устроены команды компьютера (а у PDP-11 они красиво организованы) стало для меня откровением. Я все еще думаю, что это самый правильный подход к изучению программирования: начать с простого и компактного высокоуровневого языка типа Бейсика, потом машинный язык, потом Си, который наглядно показывает как высокий и низкий уровни соединяются, ну а потом всякое прочее. Популярный нынче для обучения Питон представляется мне очень неудачным выбором для первого языка: даже если отвлечься от невероятно уродливого синтаксиса, он громадный и нашпигован диким количеством сложных конструкций, причем сложных сразу по нескольким направлениям. Начинающий не в состоянии понять Питон целиком, а это на самом деле очень важный учебный момент: понять систему программирования целиком, с одного конца до другого, чтобы знать о ней все что возможно, и не осталось никаких тайн.
Примерно тогда же я купил и прочитал книжку про язык Паскаль. Он меня не впечатлил. Классический виртовский Паскаль совершенно непригоден к обработке строк, поскольку строк переменной длины там просто нет. И это делает его очень ущербным. Из новых для меня концепций там была динамически распределяемая память. Но она там объяснялась плохо, по аж трем причинам. Во-первых, примеры были невнятные, и было непонятно, чем оно лучше сермяжных массивов. Во-вторых, рассуждения про построение структур данных из динамической памяти (типа тех же списков) были чересчур абстрактными. Главное что там отсутствовало - то, что указатель - это по сути адрес. Это совершенно ключевой момент, который я прочухал после изучения ассемблера, и тогда вся динамическая память встала на свои места. В-третьих, концепция динамического распределения была явно новой и для всей советской программистской мысли. В книжке рассказывалось, что альтернативным способом освобождения памяти было распределять и освобождать кучу последовательно в виде стека mark/release: запоминать место вершины кучи, а потом освобождать сразу все что с тех пор выделено, возвращая вершину кучи на это запомненное место.
Другой запомнившейся воскресной лекцией было где папа Ильи Тамбовцева, бывший заведующим кафедрой физики в университете, рассказывал про сверхпроводимость с демонстрацией левитации магнитов.
Система групп была в клубе довольно гибкой, и Витя Русалеев довольно часто появлялся на наших занятиях, и я потом тоже появлялся в других группах. Компьютеры БК были для нормальных занятий, а ДВК был свободен, и вот им пользовались люди, приходящие вне своей группы. Витя (с кличкой "Вирус") наверное был главным клубным гигантом мысли, и во многом стал для меня образцом для подражания, я потом поступал в институт по его стопам.
Клички были атрибутом клуба "Инфор", в котором Витя тоже поучаствовал. В "Инфоре" была атмосфера подражания хакерству (доходящие сведения про которое были весьма отрывочны, в советской прессе периодически появлялись статьи про Буржуазные Нравы Со Злыми Хакерами), ну а конечно каждому приличному хакеру нужна кличка. У них даже была клубная песня, переделанная из песни мафиозо из мультика про капитана Врунгеля:
Мы бандито,
хакерито, по машинам эвээмо? (о, йес!)
И влезаем
мы в любую защищенную системо... (о, йес!)
(дальше я не помню, кроме конца:)
И за энто
лаборанто в нас киданто перфоленто.
На самом-то деле, конечно, никто никуда не влезал, а лаборанта боялись, потому что от него сильно зависел доступ к компьютерам. По крайней мере, тогда. Потом-то наверное все чего-то крякали по мелочам. А случай прям таки влезания в защищенную системо я знаю только один, когда я уже учился в институте, на 4-м или 5-м курсе. Наша кафедра тогда раздобыла IBM RS/6000, и пообещали зачет всем кому удастся в нее пробраться. Зачет выиграл, если я правильно помню, Алксей Пестерников, мой однопоточник, выпускник "Инфора", который тогда одновременно подратабывал на институтском ВЦ. Они экспортировали директорий по NFS, не отключив отображение рута для кого попало. Ну, и он смонтировал этот директорий, и от рута со своей машины положил туда шелл с флагом setuid, которым потом поднял привилегии своего пользовательского логина на компьютере. Я уверен, что они этот экспорт NFS делали какими-нибудь стандартными системными менюшными средствами, и в те времена такое отношение производителей к безопасности было вполне типовым.
Возвращаясь к кличкам, забавная история про витину кличку Вирус заключается в том, что Витя потом использовал ее в качестве имени пользователя для емейла, пока не расплодились антиспамовые системы. Антиспамовые системы решили, что если в имени отправителя написано "вирус", то значит точно в письме вирус, и надо его скорее порезать. Пришлось имя в емейле поменять. Вообще мое ощущение такое, что от борцов со спамом вреда выходит больше, чем от спама и от вирусов вместе взятых.
На ДВК я впервые повстречался с операционной системой, которая была переведенной версией RT-11 (этих переводов было несколько - Фобос, Фодос, ОС ДВК, еще какие-то). Тогда как раз появился журнал "Информатика и образование", в котором печатали очень познавательную серию статей про RT-11. Как ни странно, никаких собственно программ на ДВК я так нигде никогда и не написал, а проникался на ней пользованием операционной системой, текстовым редактором, текстовым форматировщиком (который умел выдавать разные шрифты на матричный принтер), восьмеричным редактором (с ним типовым фокусом было поменять текст сообщений в готовой программе на что-нибудь прикольное), скриптовым языком, ну и игры. То есть, максимум что я там написал - это скрипты и форматирование текста. Ну и ближайшее на чем я собственно писал программы - это БК и многотерминальная система СМ в институте с RSX-11, где мы писали программы на Фортране.
Из игр на ДВК мне помимо змейки и тетриса запомнились две. Одна - Xonix, которая своим именем наводит на мысли о зарубежном прототипе, но я ее больше нигде не видел. Там суть в том, что рамка по краям экрана "закрашена своим цветом" (то есть, на зеленом алфавитно-цифровом экране состоит из символов "своей территории") и внутри нее пустой центр. И ездит свой персонаж в виде буковки, которым можно управлять. Если им выехать на пустое поле, он за собой оставляет след из "своего цвета". Если потом приехать к рамке, огороженная следом территория (ну, след делит незакрашенную территорию на две части, и меньшая из двух считается "окруженной") закрашивается в свой цвет. Цель - закрасить как можно больше территории. Этому мешают враги, которых несколько болтается, отражаясь от стенок, на пустом поле, и один враг, который ездит по закрашенному полю. Если враг наезжает на след, который еще не стал частью закрашенного куска, теряется жизнь. Теоретически, при везении, можно загнать каждого такого полевого врага в "карманчик" размером в один символ. Занимательная игра, меня периодически подмывает написать такую для современных машин, но так пока и не подмыло. Другая запомнившаяся мне игра - "Штурм", где персонаж наверху замка обороняется от штурмующих врагов, сбрасывая на них камни из стены. Стена при этом, естественно, постепенно укорачивается. В этой игре был замечательный звуковой эффект когда проигрывашь: она рисовала череп, жамкающий челюстью, и одновременно с этим обращалась к дисководу, двигая головки. Двигающиеся головки делали звук, похожий на щелканье зубов.
Дисководы на ДВК были жуткими глюкодромами (хотя само это слово тогда еще не существовало). Диски (дискеты, гибкие 5-дюймовые, хотя в 31-й школе был и еще более старый 8-дюймовый дисковод) читались не каждый раз, и еще у них были проблемы с раскруткой: почему-то мотор раскручивал диск медленно, так что когда драйвер пытался читать диск, он еще был не раскручен до нужной скорости, и не читался. А потом, когда раскручивался, то читался нормально, пока драйвер не останавливал мотор от отсутствия дисковой активности. Поэтому чтение приходилось или повторять несколько раз пока мотор не раскрутится, или проводить ручной старт. Те дисководы были не то что импортные, не с узкой щелью и "флажком", а с довольно большой крышечкой посередине. Через эту дырку под крычечкой можно было засунуть палец и раскрутить шпиндель диска вручную, а потом быстро засунуть диск, закрыть крышечку, и нажать кнопку "Ввод" на клавиатуре, чтобы запустить чтение пока шпиндель не остановился. На 8-дюйдовом дисководе в 31-й школе была просто снята верхняя крышка и они лезли пальцем сверху.
Те дисководы были односторонними, чтобы прочитать вторую сторону дискеты, ее надо было вынуть и перевернуть, и повторить процедуру с пальцем. Что интересно, плотность записи у ДВК (то бишь, в формате, унаследованном от фирмы DEC) была больше, чем на IBM PC: у писюка на одну сторону 5-дюймовой дискеты входило только 180 килобайт, а у ДВК - 200 с небольшим.
Следующим моим проектом было написать свой язык программирования. С интерпретатором на Фокале. Ну, язык - это сильно сказано, этакое масенькое подмножество Бейсика, но свой. Интересно же. За этим занятием я разговорился с клубным лаборантом Сашей (фамилию не помню, да честно говоря после стольки лет даже про имя не очень уверен). Саша был студентом ЧПИ, но вроде вылетевшим после нескольки лет, отбывшим в армии, и уже забросившим институт. Еще он был энтузиастом языка Эсперанто, от которого я узнал о существовании групп таких энтузиастов, поддерживающих международные связи. Он писал обучающую программу по правильному переводу слов-"ложных друзей переводчика", из которых я до сих пор помню, что "вертикала шнуро" по-эсперантски - это не вертикальный шнур, а отвесная веревка.
Саша, узнав про мои попытки, сказал: "а знаешь ли ты, что на эту тему есть целая терория формальных языков?", и дал мне почитать книжки. Одна была двухтомником Ахо и Ульмана (в гораздо более ранней редакции, чем продаваемая сейчас версия). Там было много теории, оттуда я впервые узнал про теорию множеств, но в общем и целом она у меня как-то не особо зашла. А вторая книжка была видимо британская, Р. Хантера, и там теория формальных языков излагалась гораздо более популярно. Оттуда я узнал про LL, LR, LALR грамматики. Меня очень впечатлил пример с разбором арифметических выражений в стековой машине по состояниям LR-грамматики. Я прилепил канцелярскими кнопками бумажки на детские деревянные кубики, и изображал стек, и все на удивление работало. Мой интерес к нутрям языков программирования идет с тех пор. Книжки эти я после прочтения пытался вернуть, но Саша сказал "а, забирай уже", и они у меня до сих пор есть. Это был очень, очень ценный подарок по тому времени. Книжки по программированию были очень дефицитной штукой, и их было очень сложно найти.
Саша же познакомил меня с языком Форт ("Forth"). Там как раз появилась версия Форта для БК и в то же время вышла книжка про Форт, которую я успешно купил. И вот следующим летом, пока Дворец пионеров был официально закрыт, я приходил в лаборантскую изучать Форт. Это очень необычный язык, а также система в себе, которая самораскручивается с нуля - пишется базовый интерпретатор и реализация минимальных команд ("слов" в терминологии Форта) на ассмеблере, а дальше добавляется уже на самом Форте. Книжка содержала полный рассказ о реализации Форта, и это тоже было очень впечатляющее зрелище. Еще в ней рассказывалось про сопрограммы (которые в наши дни стали модным словом).
Из клуба "Компьютер" у меня происходят друзья, с которыми я все еще периодически общаюсь, и стараюсь найти друг друга. Интересно, что многие туда приходили по двое однокласснников: те же упомянутые выше Миша и Дима, Тарас Ласюченко и Гоша (не помню фамилии), девочки были тоже парами. Я тоже в многие кружки и спортивные секции записывался вдвоем или втроем с одноклассниками. Но как-то вот с компьютерами уже не нашлось одноклассника с тем же интересом. Но потом тоже народ разбивался по интересам. С Тарасом я очень много общался, мы часами трепались по телефону. Как-то я вот у нынешних детей особо не вижу долгого трепа по телефону. Может, всякие СМС и мессенджеры это заменили. Костя Бердников и Костя Юдаев - друзья, с которыми мы потом активно общались и способствовали карьере друг друга. Но про это я еще расскажу дальше.
Еще одним интересным моментом в клубе было общение с другими подобными клубами. Один раз, помню, приезжала делегация какого-то клуба откуда-то из области из одного из "секретных городов" (Челябинск-60 или Челябинск-70), и они даже с собой притащили свой компьютер - ДВК-3м2, что было на то время очень крутой модификацией.
Потом была поездка на то ли выставку то ли конференцию компьютерных любителей в Свердловске (ныне Екатеринбург). Помимо собственно развлекательного фактора посмотреть на что где есть (и, вроде, обмена программами, как тогда было принято), оттуда вышло два знакомства, с которыми я довольно долго переписывался (да, бумагой, ручкой и почтой). Один был дядечка (уже не помню имя), который написал пару широко известных тогда программ для БК. Тут, наверное, надо сделать отступление про тогдашние программы и широкую известность. Вообще в СССР интеллектуальной собственности не было, и все везде расходилось методом обмена. Но в конце 1980-х как раз разрешили ограниченную предпринимательскую деятельность в виде кооперативов. И вот где-то в чуть ли не Сыктывкаре образовался кооператив, который продавал программы для БК по почте за деньги: брали программы у авторов на распространение, и потом им посылаешь почтовый перевод, они назад кассету с программой. Предположительно, делясь деньгами с авторами (хотя дядечка рассказывал, что денег от них так и не увидел). Вот, у того дядечки была пара программ в их каталоге, в частности одна программа МАШКОД, которая помогала программировать, непосредственно в машинных кодах. Почему не на ассемблере? Потому что ассемблер занимал много места в памяти, и получалось или мало место для программы, или постоянно писать-читать на магнитофон, что очень медленно. В то же время машинный код для PDP-11 хорошо организован и не так труден к запоминанию прям в цифрах. А МАШКОД был маленький и делал какую-то базовую автоматизацию, уже не помню какую. Дядечка был интересный, мы какое-то время обменивались информацией. Другим знакомством был парень откуда-то из Челябинской области (не помню конкретно, откуда, что-то типа Магнитогорска, и даже имени его уже тоже не помню), с идеей организации сети знакомств и переписки. Тоже переписывались, даже наверное где-то до первого курса института. Как-то даже устраивали тусовку в Челябинске, но народу было не то что бы много - человек пять. А потом я обнаружил ФИДО, которая представила собой ту самую сеть друзей, но уже в электронном виде.
На этом история с клубом "Компьютер" не заканчивается, но тут добавляются другие истории.
УПЦ
А в это время Коммунистическая Партия и Правительство решили, что детей надо старательнее приучать к труду, и постановили всем старшеклассникам на один день в неделю вместо школы ходить на Учебно-Производственные Комбинаты, где им дадут рабочую профессию. Ну, все кого я знал включая меня, школу ненавидели, поэтому к возможности отлынить, хотя бы условно, на день в неделю отнеслись с большой радостью.
У нас районо-образующим предприятием был металлургический завод (ЧМЗ, к тому времени уже, наверное, переименованный в комбинат, ЧМК), поэтому это учебно-производственное учреждение оформили в виде цеха к нему, УПЦ. Закрыли одно ПТУ, и в этом здании открыли УПЦ (потом когда советская власть кончилась, там организовали гимназию или как-то в этом роде). Так что с 9-го класса я ходил в УПЦ.
Среди доступных специальностей там была "оператор ЭВМ". Но туда брали почти одних только девочек. Для мальчиков там был в-основном диапазон от автомехаников до плотников. Но папа когда-то учился в одном классе с то ли директором то ли завучем УПЦ, позвонил, попросил, и меня взяли в операторы ЭВМ (и я в итоге даже получил официальную корочку). Я, правда, потом обнаружил в нашей группе еще примерно троих мальчиков из 82-й школы (наша и их школа были маленькими, поэтому наши школы объединили в один день на УПЦ, со смешанными группами). Уж не знаю, как они туда попали. Может как и я, через знакомство. Еще один мальчик который попал на оператора ЭВМ из нашей школы был на год старше меня (и соответственно ходил в другой день), ему это занятие было до фени, как и девочкам, но его видимо туда определили из-за хронической болезни, которая ему давала отмазку от физического труда. Вообще справки о хронической болезни были самым выгодным делом в СССР, отмазывали от физической категории рабского труда в дерьме, от ковыряния полей до очистки снега. Но в отличие от него эти трое хотели поступать в военное училище (честно говоря, это был первый и единственный случай, когда я видел кого-то хотящего служить в армии и очень удивился существованию таковых), и негодность по болезни с этим не могла совмещаться. Так что скорее всего тоже попали туда через знакомство.
Тому пацану из нашей школы, звали Женя, я потом помогал писать выпускной проект. То есть, "помогал" в-основном методом прямо писания. Он был большим энтузиастом "Битлз", как тогда говорили, "битломаном", так что в омбен он меня знакомил с этим пластом культуры - и с собственно песнями, и со всякими историями-анекдотами битломанов. Оттуда я помню названия песен "Кинь бабе лом" ("Goodbye my love") и "Конь Тугеза" ("Come together"). Тот проект был в виде обучающей игры про какие-то там экономические районы СССР. Игра велась с позиции Злого Империалиста, от которого требовалось нюкнуть ядреной бомбой различные районы СССР, чтобы подорвать его экономическую мощь в той или иной категории. Ну да, сложите это с моей версией игры "Звездные налетчики", и делается понятно, что к советской власти я большого уважения не питал. Ну и, конечно, писать по образу и подобию уже готового образца гораздо легче, чем что-то выдумывать с нуля.
В компьютерном классе УПЦ были довольно странные машины Электроника Д3-28. Архитектура, как я понимаю, тоже тянутая с чего-то западного, но я не знаю, с чего. Это был по сути калькулятор-переросток. Она и выглядела как здоровый калькулятор, примерно полметра на полметра. Клавиши как у калькулятора, тут же встроенный кассетный магнитофон, но дисплей более продвинутый, чем у обычного калькулятора - на одну строку текста. Я добывал брошюру про архитектуру этой машины, и она тоже как у калькулятора - адресация памяти по словам, операции в-основном с плавающей точкой, и вычисление функций типа синуса одной командой. Кстати, да, можно было вводить программу и прям с калькуляторной клавиатуры, и вообще просто использовать машину как инженерный калькулятор. Но это был действительно гигантский калькулятор, с большим количеством памяти и портом ИРПС, к которому был подключен фрязинский дисплей (аналог VT-52, точно такой же как на ДВК-2). А с кассеты загружался интерпретатор Бейсика.
В УПЦ был еще один компьютерный класс, в кабинете профориентации (класс Д3-28, видимо, остался со времен ПТУ, а этот класс был совсем новеньким). Через какое-то время туда попросили с пяток желающих для набивания программ для тестов профориентации, и я пошел туда. Тот был тоже класс БК-ДВК, но более новой модели. В качестве рабочих мест учеников были БК-0010.01 с Бейсиком и настоящей кнопочной клавиатурой (в отличие от плоской, с кнопками примерно как нынче на мирковолновках, у более старого БК-0010), а у преподавателя - ДВК-3, уже без отдельного фрязинского дисплея, а собранная в одном корпусе. Тут-то мои познания ДВК и пригодились. А также обмен программами с клубом "Компьютер", я оттуда притащил много полезного.
Как звали тетеньку, которая заведовала классом профориентации, я плохо помню. Может быть, Тамара Григорьевна. Как потом выяснилось, она была женой Марата э-э-э вроде Файзуллина, с которым я потом работал в АСУТП. (Мне очень интересны такие моменты, когда выясняется, насколько удивительно тесен мир, ну или как минимум Челябинск).
Программы для тестов профориентации были довольно одноообразными: они печатали вопросы, собирали ответы, накапливали их по категориям, и потом вычисляли вес по разным категориям профессий. Я взялся это дело несколько автоматизировать: написать программу на Бейсике, которой можно потом дать список вопросов и катеогрий для ответов, и в конце посчитать результаты. То есть, это были две программы: в одной вводились и записывались на диск (через ДВК) описания тестов, вторая исполняла эти описания. Тут-то мне и пригодились познания в формальных грамматиках, я туда написал синтаксический разбор арифметических выражений и стековый интепрретатор для их вычисления. С этой программой я потом тоже выступал в НОУ, но про это дальше.
А пока я договорился с тетенькой о возможности приходить в класс профориентации УПЦ после школы. Я был не один такой, там было еще примерно трое пацанов на год меня младше, из другой школы. Но им были более интересны БК, а ДВК была свободна, так что у меня появилась "своя" ДВК в регулярном доступе, и ближе к дому. Очень удобно. В клуб я все равно ходил, но теперь менее регулярно и с более социальными целями.
Из того же времени помню еще историю, как у меня появилась первая своя собственная дискета. Тогда дискеты были обычно двух видов: советские говенные, и приличные болгарские "Изот" (когда я вижу на одежде бренд IZOD, он до сих пор напоминает мне о тех дискетах). Ну, и еще один раз я наверное видел совсем импортную BASF, но это был очень редкий случай. Ни одни из них не продавались в магазинах. Так вот, у папы какой-то знакомый ездил в Болгарию, и папа попросил его купить дискету. В Болгарии они свободно продавались. Так я стал счастливым обладателем своей собственной, и даже не потыренной ниоткуда дискеты.
Тетенька из профориентации была впечатлена. На вопрос, откуда у меня дискета, я ответил "из Болгарии", и она сначал решила, что я шучу и собиралась обидеться, но я тут же рассказал про знакомого.
Безотносительно к УПЦ, но где-то примерно в это же время я впервые прочитал про язык Си (С). Упоминания про него доходили и до того, но не описание самого языка. Было несколько переводных книжек про Аду, одну из них я прочитал еще летом после 8-го класса, я помню датировку поскольку я среди прочего брал ее в ЛТО после 8-го класса. В той же книжке, кстати, рассказывалось про пограммирование методом обмена сообщениями. Ада тогда была новым модным языком, утвержденным стандартом американского Министерства обороны, и книжки про нее активно переводили. А вот про Си сначала особо не было информации. Но потом прорвало. Сначала была статья в "Науке и жизни" (это само по себе примечательно и неожиданно, статья про язык программирования в популярном научно-техническом журнале). Оно было интересно, но несколько непонятно: там, например, рассказывалось, что при увеличении указателя на единицу он указывает на следующую переменную того же типа, так откуда он знает, где находится следующая переменная того же типа, и на кой это надо? В реальности, конечно, это была просто тупая формулировка. Он не знает, где следующая переменная того же типа. Он просто увеличивает адрес на размер типа, а уж что там окажется на этом адресе - кто его знает. А надо это, естественно, для массивов, в которых много элементов одного типа идут подрят. А потом мне удалось добыть сразу две книжки. Одна была учебником языка, авторства Праты, Мартина и Уэйта, а вторая "A Book on C" (первые буквы слов не случайно образовывали "ABC") рассказывала про упрощенный диалект Си вместе с его компилятором. Отдельным интересным моментом этой книжки было то, что в ней приводился текст юниксных скриптов для "оценки стиля" программ. Сама идея механической оценки стиля довольно тупая и бестолковая. Но это было мое первое столкновение с юниксными скриптами, и я в них совершенно ничего не понял (поскольку они не объяснялись). К тому времени у меня уже было ощущение, что языки программирования так или иначе похожи друг на друга, и их можно более-менее понимать из контекста. Но тут было непонятно вообще ничего. Что в ретроспективе неудивительно, поскольку скриптовые языки - совсем не то же самое, что универсальные языки программирования, они полагаются на использование готовых команд, каждая из которых имеет сложную функциональность.
А классическую книжку Кнута "Искусство программирования" мне удалось чуть позже, уже в институте, одолжить на работе у Андрея Сунцева. Ценная книжка, наводит на раздумья. Конечно, компьютеры про которые там идет речь, давно устарели, да и некоторым алгоритмам типа сортировки на лентах, на первый взгляд уже не найдется применения. Но большниство базовых алгоритмов оттуда живее всех живых, как и принципы анализа программ (вот в частности асимптотическая оценка сложности выполнения программ, известная как О-большое, и которую любят обсуждать на собеседованиях в конторах типа Гугля, идет именно оттуда). Да и сортировке на лентах тоже находится применение, когда надо отсортировать большие файлы на дисках. И с точки зрения компьютерной археологии (или антикварности?), почитать, как оно раньше было - тоже интересно.
Научное Общество Учащихся
Я не уверен, существовало НОУ при Дворце пионеров или наоборот, и насколько оно было областным или всесоюзным явлением. Наше НОУ было имени Курчатова, так что явно местное. Но сдругой стороны я один раз ездил на всесоюзную конференцию, так что должно быть что-то всесоюзное.
Оно проявлялось видимым образом в двух ипостасях: ежегодных конференциях и в лагерях отдыха "Курчатовец", которые были летними и зимними. Конференции были по всем направлениям ("секциям") кружков, которые были во Дворце пионеров, я естественно, видел ту часть, которая по программированию, а остальные - только в виде брошюрки-программки. Всем желающим предлагали сделать краткий доклад о своем проекте.
В конференциях я участвовал три раза: первый раз с игрой, второй раз с программой для профориентации, и в третий раз, когда я уже работал на ЧМК (об этом дальше) с портированием оконной библиотеки.
Не помню, какое место, я занял с игрой.
Лучший результат на областной конференции у меня был с программой для профориентации, второе место. Первое место тогда занял кто-то из 31-й школы. В тот раз наша секция была в 31-й школе (тогда как раз Александр Погодин, который раньше был заведующим ВЦ ЧПИ и вел клуб "Инфор" перешел на работу учителем информатики в 31-ю школу), так что они даже наглядно продемонстроровали свою программу в действии. Там было что-то про обработку изображений. Среди прочей периферии у них был сканнер от фототелеграфа. В нем лист бумаги прикреплялся к поверхности барабана, который потом запускался вращаться, вдоль барабана ехал оптический датчик и сканировал документ по спирали. И вот они считывали какие-то сканы с этого сканнера. Больше я уже не помню, вроде мой проект мне казался более интересным, но как говорится на вкус и цвет товарищей нет, да еще и у них на своем поле.
Но потом в том году проводилась всесоюзная конференция, и победитель не смог туда поехать из-за других планов, и потому предложили ехать мне. Я поехал. Конференция была в Новосибирске, мы туда ездили на поезде - нас где-то трое детей и сопровождающий взрослый, если я правильно помню, из кружка археологии. В плацкарте. Помню в день отъезда внезапно выпал дикий снег, транспорт стоял на ушах, трамваи, которыми мне был самый простой и обычный путь до вокзала, не ходили вообще. Я самостоятельно сумел добраться до вокзала на троллейбусе (которые тоже еле ползли), спрашивая советов у других пассажиров. Успел еле-еле до отхода поезда - метался по перрону, пытаясь найти нашу группу, и тут меня увидел проводник перед закрытием дверей, спросил - не тебя ли тут ждут? - меня! Группа, как оказалось, уже устала меня ждать и погрузилась, но попросила проводника посмотреть.
В остальном путешествие прошло без приключений. Ночевали мы в школе-интернате при НГУ, сама конференция была в НГУ. От НГУ мне запомнились их юморные стенгазеты с персонажем по имени "Клипс". Там, в отличие от своей областной конференции, мой проект всех побивахом с большим отрывом (нет, действительно, там все проекты к нашим областным близко не лежали), и я получил грамоту победителя всесоюзной конференции за подписью академика Лаврентьева. Сопровождающий, правда, потом рассказывал, как он случайно услышал разговор между организаторами о том, как один из них тренировался подделывать подпись академика для дипломов, поскольку академик был где-то в отъезде. Но тут важно не кто подписал физически, а кто подписал логически. Там же и традиционно обменялся программами для ДВК с другими участниками (мне под это дело в клубе выдали с собой дискеты), и поехали взад.
Новосибирск меня как-то не впечатлил, но я его и не особо видел. Нам устраивали автобусную экскурсию по городу, но я на ней как обычно заснул. Запомнились только их ужасные рейсовые автобусы и дикие толпы народу на остановках. У них почему-то троллейбусов совсем не было видно (по крайней мере, там где мы ездили к университету), и автобусы были ужасные Львовские и Лиазы, которые гораздо теснее, медленнее, и хуже венгерских Икарусов, которые были у нас.
Зато совершенно потрясающим опытом была экскурсия по музею минералов. Много было поделочных камней и изделий из них. Малахит, который был традиционно уральским, но теперь на Урале весь выковырян, и теперь ковыряется только в Африке. И еще более впечатляющий камень чароит - он этакий фиолетовый с белыми прожилками, и ваза из чароита неожиданно выглядит так, как будто она мягкая. Но самым впечатляющим моментом были алмазы. Экскурсовод эдак небрежно вынула две коробочки, заполненные алмазами. Каждая эдак сантиметров 10 на 15 на 5, заполненная алмазами наполовину и закрытая стеклом. В одной коробочке алмазы были 1-каратные, в другой 4-каратные. Истинно говорю вам, 4-каратные алмазы смотрятся гораздо лучше, и если вам сильно приспичит именно алмаз за много денег, лучше копите на 4-каратный, чем брать много мелких, большой красивше (с другой стороны, можно купить цирконий - цирконий в крупном размере смотрится гораздо красивше алмазов в мелком, за небольшую долю цены). Зная теперь, сколько стоят даже 1-каратные алмазы, по международным розничным ценам в тех коробочках было азмазов на многие миллионы долларов. А их этак небрежно демонстрировали. Ну и вообще, я потом видел действительно большие алмазы на выставке в Смитсониане, но когда они развешены по отдельности, это не дотягивает по сверканию до кучи 4-каратных алмазов.
Помню еще рассказы про академгородок, где по американскому прототипу якобы были отдельные дома на две семьи, но я их сам не видел, только на картинке.
В третий раз я выступал на конференции НОУ в выпускном классе, который тогда как раз переименовали из 10-го в 11-й. Я тогда уже пристроился на полставки на ЧМК, и ходил в клуб "Компьютер" с социальными целями (меня тогда как раз выбрали в президенты клуба), ну и вот поучаствовать в конференции. Проект был перенос текстовой оконной библиотеки Vitamin C с МС-ДОС на Юникс. Библиотека эта (я про нее еще расскажу) была изначально заточена под прямо адресуемую видеопамять, а на Юниксе работала через ESC-последовательности терминала на последовательном порте, так что это была не то что бы сильно тривиальная переделка (плюс пришлось там подрезать кишочки, чтобы оно все работало не слишком медленно). Но судей она не впечатлила, ей дали вроде бы третье место. Первое место дали моим друзьям из клуба, Косте Бердникову и Косте Юдаеву, за программу, которая раскидывала файлы на много дискет (алгоритм там был начинать с самых больших файлов и смотреть, что еще влезает на текущую дискету, перед переключением на следующую). Они были удивлены (им мой проект виделся более впечатляющим), но в-общем приятным образом. Участник жюри от ЧПИ пообещал им прием в ЧПИ без экзаменов. Но, как потом выяснилось, нагло обманул: когда они летом пришли в приемную комиссию с дипломом конференции, им дали от ворот поворот, ничего не знаем, никто ничего не обещал, идите поступайте на общих основаниях.
Вторым аспектом НОУ был лагерь "Курчатовец", в котором я тоже был три раза, два раза зимой и один летом. Зимний лагерь проводился в зимние каникулы, на турбазе на Ильменском озере возле Миасса (города). В первый раз меня туда послали от клуба (там выделяли какую-то квоту мест по кружкам). Потом летом его не было, а во второй раз зимой я по совету Кости Бердникова поехал на вокзал в день отправления "на подмену" - на случай если кто-то не явится и образуется свободное место. Ну, и место образовалось. А в третий раз лагерь был летом после 9-го класса. В этот раз на базе пионерского лагеря, дольше (наверное 20 дней), и я туда попал опять с Костями Бердниковым и Юдаевым. Под это дело со справкой я даже получил освобождение от какой-то школьной хрени после 9-го класса, которая перекрывалась по срокам - то ли ЛТО ("Лагерь труда и отдыха", где мы вкалывали на полях), то ли и вовсе от военных сборов по НВП (Начальной Военной Подготовке) - помню, что я на них во второй раз не был, а приходил только на один день по сдаче спортивных нормативов.
В здании пионерлагеря мы жили, видимо, в корпусе, предназначенном для младшего возраста, с короткими кроватями, в которых ноги упирались в спинку. У меня от этого стало ночью сводить судорогой ноги. С тех пор я стараюсь избегать коротких кроватей.
День был там устроен так, что с утра до обеда были познавательные лекции, общие или по секциям, после обеда подготовка к самодеятельности, и после ужина самодеятельность на какую-то заданную тему (были там и советско-пропагандные темы, но в большинстве вполне нормальные). Ну, и песни кружком под гитару (Ильменская турбаза была еще и местом слета бардовской песни в другое время года) и игры в Арам-шим-шим, иногда переходящие в "бутылочку" (ничего прям такого, только целовались). Говорят, что у комсомольского актива тоже были какие-то подобные лагеря. Эти лагеря мне нравились, в отличие от пионерских - совсем другие люди, совсем другое всё.
Помимо песен под гитару, почему-то очень популярной была песня "Семь-сорок" (еврейская народная). Ну действительно, там веселенькая мелодия. Еще когда я был в "Курчатовце" в первый раз зимой, там было довольно много народу из "Инфора", и вот оттуда-то я и услышал их клубную песню.
Но в летнем лагере мы под гитару в кружок исполняли не только бардовские песни, а вплоть до песен "Ласкового мая". У нас была их кассета с видимо концертной записью, где посередине песни "Розовый вечер" раздавался бухой голос "я хочу с тобой петь!", и мы исполняли соответственно:
пусть трам-пам-пам-пам чего-то розовый ве-е-ечер
я хочу с тобой петь!
пусть трам-пам-пам-пам чего-то смотрит вам в след?
я хочу с тобой петь!
Раз уж зашла речь про "Ласковый май", Кости Бердников и Юдаев незадолго до лагеря были в Миассе на какой-то компьютерной конференции, и их поселили в гостиницей рядом с гастролировавшей группой "Ласковый май". Так что они видели живого Юру Шатунова вблизи, и рассказыали что "Ласковый май" - вполне себе милые люди.
В летнем же "Курчатовце" мы ходили в поход, на две, что-ли ночи, а то и одну. Ну, то есть с личными вещами в рюкзаке шли куда-то несколько часов на берег Миасса (реки), а палатки, спальные мешки, и еду туда завозили на грузовике.
Как у городского жителя, протекающий через Челябинск Миасс у меня воспринимался в качестве городской реки, заполненной всевозможными отходами и нечистотами. Про него ходил стишок:
Наша речка-говнотечка называется Миасс,
если хочешь искупаться - надевай противогаз.
В Свердловске, кстати, аналогичный стишок про их речку Исеть заканчивался " - на говне будешь висеть", а как известна речка в вашем городе? Ну, и на школьные типа как пикники мы ходили на поляны на берегу Миасса у деревни Казанцево, где Миасс был уже после города, и там он производил то самое впечатление. С другой стороны, не такая уж и говнотечка, в-основном промышленные отходы, в которые большую лепту вносил лакокрасочный завод (ныне, вроде, благополучно издохший): река после него приобретала необычные цвета вплоть до красного, в каком-то году как раз к Годовщине Социалистической Революции. А вот скажем в лесу рядом с новостройками пробегал ручеек, который во времена моих родителей был еще просто ручейком, а уже в мое время был твердо известен как Говнотечка, это было его общеизвестное и общепринятое имя собственное. От него действительно жутко несло канализацией. В итоге он, правда, впадал в тот же Миасс, и вот те самые школьные пикники были как раз не особо далеко от места впадения Говнотечки.
А там Миасс был еще до города, еще чистый, чем меня очень и удивил. Из похода мне запомнилось, что к вечеру же первого дня пошел дождь, в палатке было жутко холодно и мокро. И как мы мыли миски от еды (разогретой на костре каши и тушенки из консерв) прямо в реке, отшаркивая жир песком прям как в старые времена. И как при установке палатки я проявил неожиданные мной способности к многоэтажной матерной ругани, когда проклятые колышки не желали держаться как им положено. Нет, ну ругаться-то я традиционно любил (про это я еще расскажу), но обычно не матерно - мне так как-то в пионерлагере даже сказали, что как ты ругаешься, хоть и не матерно, так лучше бы просто матерился, а тут вот меня проняло. В ретроспективе я должен сказать, что это принцип достаточно универсальный среди всех времен и народов, и вовсю действует в любом нетривиальном ремонте и строительстве: пока каждый болтик не обложишь матом, он правильно не открутится. Что я лично наблюдал не только среди любителей, но и скажем среди профессиональных автомехаников: если что-то не откручивается или не встает на место как полагается, надо его покрыть матом на любом языке, и тогда все сделается.
Лекций по программированию в "Курчатовце" как-то ни разу не было, и какое-то околокомпьютерное мероприятие помню только одно: еще в первый раз мы ездили в какую-то миасскую школу (Ильменская турбаза расположена рядом с Миассом) смотреть на их компьютерный класс. Миасс был одним из центров советского ракетостроения, с градообразующими военными заводами и улучшенным снабжением, поэтому в школе у них уже несколько лет были компьютеры Агат. Про компьютеры Агат много писали в советских журналах, но на самом деле их было мало. Они были несколько искаженным клоном Эппл-2, с цветным дисплеем (правда, опять же из телевизора) и звуком.
Общие лекции были интересные. Тот же папа Ильи Тамбовцева там выступал по физике, было что-то по психологии, по прогнозированию погоды, еще помнится какой-то врач-гигиенист рассказывал про свое исследование о мытье - какие места люди больше всего забывают вымыть когда моются. Оказалось, что за ушами и под коленками. Еще мне запомнился рассказ врача скорой помощи про необычные травмы, в частности, о том, как девушка-баскетболистка держала партнера за жопу во время секса, и в процессе экстаза разорвала ее своими сильными руками.
Мне, вообще говоря, было бы интересно теперь выступить на чем-то таком уже в роли лектора. Про рваную жопу у меня историй нет, а вот про программирование я смогу.
Еще не из лекций, а из рассказов вожатых: в третий, летний, заезд, вожатыми у нас были студенты из мединститута. И вот они рассказывали про то, как они участвуют в научных исследованиях на крысах. Исследования у них были не на живых крысах, а на тканях. Поэтому процедура у них была такая: берут крысу, засовывают ее головой в полиэтиленовый пакет, и херак по башке кувалдой. Пакет нужен чтоб мозги и кровища вокруг не разбрызгивались. Это называлось "гуманное умерщвление". Потом быстренько вырезают ткани, и пока они свежие - скорей экспериментировать. Ребята даже потом к ним ходили в гости смотреть, но я так и не собрался.
В самодеятельности моя самая впечатляющая роль была балерина. Мы делали сценку под песню про балет
Когда на балет я иду, я иду,
Билет беру в первом ряду,
Как только начнется балет,
Тотчас же пою я куплет
Про ножки, ножки, ножки балерин...
И там трое мальчиков изображали комических балерин на фоне одной девочки, которая действительно умела танцевать. Девочка, кстати, как я потом обнаружил несколько лет спустя, была дочкой преподавателя, у которого я учился в институте - я ее встретил на кафедре, когда она зашла к папе на работу.
Из других сценок мне запомнилась политическая о Злых Империалистах, чего-то там про американские президентские дебаты, где я изображал модератора (хотя мы тогда таких слов не знали, называли ведущим).
А из тех моментов, где не сам я играл (ну то есть играл, но не конкретно в запомнившемся моменте) - какая-то политическая викторина, в которой был вопрос про "какая была самая длинная война в 20-м веке?" и ответом "ирано-иракская". Я тогда посчитал длительность советско-фаганской войны, и у меня вышло длиннее (и она тогда еще продолжалась). Так что вот, теперь у вас есть неожиданное знание о том, что советско-афганская война - самая длинная война 20-го века. Но ее, естественно, в СССР называли не войной, а "исполнением интернационального долга" (угу, эдакая "спецоперация"), поэтому за войну не считали, а рассказывали о великом советском миролюбии.
Через "Курчатовец" же я просрал областную олимпиаду по физике. Я регулярно побеждал районную олимпиаду начиная с 6-го класса, но до 8-го класса она видимо дальше не шла. А в 8-м классе меня послали дальше на областную. Проблема однако была в том, что олимпиада была во время зимних каникул, перекрываясь с "Курчатовцем". Ну, я решил, что на один день отпрошусь и приеду на олимпиаду, а потом вернусь. Приехал, пришел, оказалось что олимпиады еще нет, она будет два дня начиная с завтра, а пока нас собрали чтобы на нас посмотреть. В "Курчатовце" мне нравилось, и пропускать три дня из десяти было обидно, так что я плюнул и уехал назад, хоть родители мне и говорили, что зря. Они в жюри олимпиад после этого на меня обиделись, и на районных олимпиадах выше второго места не давали. Первое место, кстати, получал Валера из 82-й школы, с которым я был в классе операторов ЭВМ на УПЦ (угу, мир опять тесен).
С того путешествия мне запомнился и еще один интересный опыт. Пока я ехал из Миасса в электричке, я заснул, и мне приснился сон про школу, который был настолько реалистичен, что проснувшись я не был уверен, были ли у меня воспоминания обо сне, или это действительно случилось. У меня такие сны периодически случаются, но когда у них совсем нереалистическое содержание, их легко отличать. А тут было почти реалистично, и отличение памяти о сне от памяти о реальности требовало усилий еще несколько дней. Впрочем, реалистичные легко отличаемые сны тоже бывали: когда я писал программы с оконным интерфейсом, во многих случаях я придумывал то, как их интерфейс должен выглядеть, в таких снах. Интересно, что очень похожие по сути сны у меня были и во время пробуждения от общего наркоза, тоже яркие и путающиеся с реальностью.
Я подозреваю, что когда основатель мормонизма (оно же Христианство Святых Новых Дней) Джозеф Смит заснул на природе и увидел ангела, который велел ему основать новую религию, у него был какой-то подобный сон. Я думал о школе, он думал об ангелах, и каждый увидел то, о чем думал. Вот он, личный опыт, который видимо аналогичен видениям религиозных откровений.
Еще одним моментом, видимо связанным с НОУ, была олимпиада по программированию в 10-м (который тогда уже переименовали в 11-й) классе. Я сейчас уже не уверен, но я думаю, что попал туда не по линии школы, а по линии клуба "Компьютер". Там я себя, к сожалению, не проявил. Особенно обидно было, что призом победителю был болгарский компьютер Правец, клон Эппла-2. Его выиграл мальчик из 31-й школы. Витя Русалеев там, кстати, был в жюри и рассказывал, что они какую-то из моих программ даже пытались ввести в компьютер и запустить, но она так и не заработала правильным образом. Да, часть челленджа была в том, что программы писались на бумаге и на Бейсике.
В поисках лучших компьютеров
Доступ к ДВК - это было хорошо, но к тому моменту "святым граалем" были IBM PC. Дима Шиншинов (старший сын Галины Анатольевны) рассказывал, как у его папы на работе было аж две (одна из них, как я помню, была фирмы Лидия). Кости Бердников и Юдаев пристраивались к советским ИБМ-совместимым компьютерам в Южуралсистеме. Я тогда уже прочитал книжку про МС-ДОС, но до компьютера с ним еще не добрался.
Летом после 9-го класса (это 1989 год) Клуб "Компьютер" устраивал компьютерный лагерь. В который откуда-то добыли аж две Искры-1030 (это был на тот момент лучший советский ИБМ-совместимый компьютер). До того последний лагерь (он же может быть и первый) был организован совместно с "Инфором" на два года раньше, когда я еще не был в клубе, но я про него слышал рассказы, и вот появилась возможность поучаствовать. Но в реальности все пошло криво. Приехать мы в этот лагерь приехали, но там были какие-то заморочки, глубинных причин которых я не знаю. Поселены мы были почему-то на матрасах в одном большом спортзале, с едой были какие-то дикие напряги (в смысле что приехали мы днем, еды вообще не было до вечера, когда нашли-таки какой-то "сухой паек"), и на следующий день мы поехали назад, так и не распаковав компьютеры. Потом их распаковали-таки в клубе, где они были доступны на время, пока должен был идти отменившийся лагерь. К ним еще как-то не сразу нашли дискеты с операционкой (жестких дисков у них не было, с производством жестких дисков у советской промышленности был большой напряг), но в итоге они заработали. У одного из них, правда, не работал первый дисковод, а у второго тоже где-то через неделю сдох, но потом кто-то залез вовнутрь, увидел слетевший пассик, надел его, и все опять заработало.
Потом мы с еще одним другом из клуба, Леней Тубертом, пристраивались в опять же Искре-1030 на то ли швейной фабрике, то ли НИИ при ней, и аж с жестким диском, но диск у них сдох и машина не работала.
Кстати, примерно в это время стало реалистично купить БК-0010.01 домой. Они стоили каких-то диких денег, типа 600 с чем-то рублей (больше трех средних месячных зарплат, ну и для сравнения потом моя первая зарплата была 78 рублей минус налог), но появилась возможность поехать в Москву и там действительно купить компьютер домой. Это, правда, еще было не все. Потом еще надо было подключить его к телевизору. По какой-то таинственной причине советская промышленность выпускала компьютеры с видеовыходом, но в советских телевизорах за редкими исключениями не было видеовхода, был только антенный вход! Тут из вариантов было или быть умельцем-радиолюбителем и самому паять схему, которая создаст видеовход, или заплатить денег умельцу (подпольно, это в СССР называлось "нетрудовые доходы"). И для особых умельцев, были схемы, которые превращали черно-белое изображение БК в цветное. В БК было два видео-режима: шириной в 256 или 512 точек (в тексте это транслировалось в 32 или 64 символа) и общей высотой в 256 точек. Режим шириной в 256 точек давал два бита на точку, которые кодировали 4 уровня яркости. Вместо этого цветовая схема позволяла их кодировать как 4 цвета: зеленый, красный, синий, черный (да, белый пропадал). Ну, и поскольку схема не знала, в каком режиме находится компьютер, то при переключении компьютера в режим 512 точек, по две соседние точки сливались в одну, неожиданного цвета. Поэтому предусматривался отдельный тумблер на коробочке с цветогенерацией, чтобы можно было выключать цвет. Но при всем этой цене и этом геморрое компьютер все равно был БК без дисковода. Найти доступ к более приличному компьютеру с дисководом, и забесплатно, было более интересной штукой. Забегая вперед, в году примерно 1992-м я купил-таки домой Синклер (ну, не настоящий, а кооперативный клон), который тогда стоил уже гораздо более разумных денег (что-то типа 100 рублей, и уже в рубле начаналась инфляция), который у меня стал первым собственно домашним компьютером. Но он себя проявил плохо. Во-первых, было уже как-то неинтересно собственно программировать на нем, во-вторых работа с магнитофоном была поставлена у Синклера гораздо хуже, чем у БК, файлы читались очень медленно и очень ненадежно, так что даже для игр он себя плохо проявил. Да и игры были, честно говоря, хуже, чем у БК.
Тогда же, в 1987-88 году появились кооперативные компьютерные салоны с почасовой оплатой. Там бывали те же БК, но встречались и Синклеры, Ямахи, и Атари. Народ туда в-основном ходил играть, но у нас-то находились возможности и получше, и забесплатно. Хотя вроде кто-то из друзей позже пристраивался работать в такой салон, но подробности я не помню.
Клуб "Компьютер" тоже заполучил на некоторое время Атари в долг - какой-то кооператив надеялся продать класс из них и дал образец для изучения. Та продажа так и не совершилась, но у меня оттуда вышел побочный эффект. Документация на Атари была на англйиском языке, которого я не знал, я в школе учил немецкий. А тут взялся разбирать. Частично исходя из похожести слов на немецкие, частично со словарем. Поняв, что прочухать грамматику тоже не помешает, взялся самоучить английский методом погружения. Обнаружил дома книжку сказок про Братца Кролика, которая лежала со времен студенчества кого-то из родителей, и стал ее переводить со словарем, постепенно складывая предложения. Напрактиковавшись на Братце Кролике, кое-как разобрал и атариевскую документацию.
Тут же в 1988 году по СССР проехалась по большим городам с туром выставка "Информатика в жизни США". И Челябинск и Свердловск были городами, закрытыми для иностранцев по причине большой концентрации военной промышленности, поэтому ближайшую для нас остановку устроили в Магнитогорске. Туда даже отправляли специальные поезда. Выставка, конечно, была красивая и для нас непривычная. Начиная с того, что технических выставок такого масштаба просто не было. Плюс неожиданно на входе на халяву давали значок и пластиковый пакет (которым я потом довольно долго пользовался). И брошюру с разными историями, в частности там было про фирму Эппл, про ИБМ, про "настольные типрографии". Брошюра была напечатана на запашистой глянцевой бумаге, которую я до того видел только в журнале "Америка". Что мне запомнилось из экспонатов? Прям при входе крутили на нескольких телевизорах в качестве примера компьютерного редактирования фильмов сцену из "Назад в будущее", где Док впервые испытывает машину времени, разгоняется до 88 миль в час, и остаются только горящие следы. Сцена сама по себе была впечатлающа, но без контекста непонятна, и только несколькими годами позже я посмотрел фильм и понял, что там было к чему. Кстати, как я узнал гораздо позднее, горящие следы делали не на компьютере, а сермяжным бензином, на компьютере там склеивали кадры где по машине идут молнии и она исчезает во вспышке. Было довольно много Эпплов-2, был Макинтош, были ИБМ. Был американский автомобиль, который обещали подарить что-то типа миллионному посетителю (и подарили, но это было уже где-то ближе к концу тура, в Минске или в этом роде). Несколько разочаровывающе, автомобиль был минивэн Додж Вояджер. Я-то разевал клюв заодно посмотреть живьем на большой американский седан, типа тех, фотки которых видел в "Науке и жизни" (где периодически печатались краткие обзоры зарубежных автомобилей - что-то типа 10 автомобилей на 2 странички). Была демонстрация "настольной типографии" на Макинтоше и лазерном принтере. Был модем - тогда еще акустический, к которому сверху пристегивалась трубка от телефона Вестерн Электрик (американская телефонная монополия AT&T долгое время отказывалась разрешать подключение посторонних устройств к своим проводам). Наконец, у них было сбоку отделение, где представители организаций могли пообщаться с экспертами (и там что-то обсуждалось про какие-то продажи) - это не я лично, но делегация с ЧМК там общалась. В общем и целом, было весьма впечатляюще.
Первая работа
И вот летом 1989 года (в котором, в ретроспективе, произошло довольно много событий) Костя и Костя рассказали мне, что они устроились работать в Южуралсистему, где были IBM-совместимые персональные компьютеры.
А в это время на ЧМК, где работали мои родители, тоже образовались персональные компьютеры. Министерство Черной Металлургии где-то в конце 1988 - начале 1989 года заключило соглашение с фирмой Оливетти о поставке компьютеров на металлургические заводы. Что примечательно, фирма Оливетти при этом нагло нарушила санкции КоКома против СССР - компьютеры на процессоре Интел 80386 тогда еще были запрещены к экспорту в СССР, да и мини-компьютеры на мотороловских процессорах, которые были в поставке - наверное тоже. И сопоставив эти два знания, про компьютеры и про то что друзья нашли работу, я пошел спрашивать родителей, нельзя ли и мне пристроиться к работе на полставки с компьютерами на ЧМК.
Моя мама тогда работала в отделе Научной Организации Труда. Что это такое, наверное нынче не так просто объяснить. В каждом цехе была должность нормировщика, который совершал учет рабочего времени - кто когда в какой смене работал, сколько выходит к оплате. В какой-то мере типа бухгалтера, но не совсем. Отдел же НОТ собирал эту общую статистику по всем цехам. Они же занимались назначением норм выработки, для которого периодически хронометрировали работу по цехам. Кстати, для статистики они вручную рисовали и считали здоровые таблицы. У меня первым опытом использования калькулятора (тогда еще обычного) было суммирование чисел по таблице для мамы, года примерно в четыре, если не в три. Мало того, что интересная игрушка, так еще и с важной пользой для маминой работы! Когда я уже работал на ЧМК, я им показал spreadsheets (видимо, СуперКальк), и они были очень впечатлены.
Ну и вот по работе мама бывала во многих цехах, и знала их начальство. В частности, отдел АСУП (Автоматизированных Систем Управления Производством), где и был заводской центр программирования. Она поговорила с замначальником отдела АСУП Владимиром Петровичем Лисовенко, он провел со мной небольшое собеседование (как бы нынче сказали, не техническое, а межличностное), и сказал: "ну пусть пока летом так походит, а там посмотрим". Сначала меня посадили в кабинет-библиотеку и выдали документацию.