Нормальной учёбе мешала ещё одна проблема. У расхваленных мною видеотоновских терминалов, при всех их достоинствах, был и существенный недостаток: очень ограниченный набор символов. Они вообще не умели отображать строчных букв: только прописные из кириллицы и латиницы! (Собственно, как я сейчас понимаю, они вообще поддерживали исключительно КОИ-7.)
Но вот для Unix и для языка C, где практически всё пишется в строчном регистре —это кошмар! Проблема решалась так: строчные буквы кодировались как заглавные, а заглавные — как они же, но с символом \ (т.е. обратным слэшем) перед ними.
То есть, фраза «Операционная система UNIX» при загрузке на эти терминалы выводилась примерно так: «\ОПЕРАЦИОННАЯ СИСТЕМА \U\N\I\X». Конечно, многие крайне необходимые (но отсутствующие в КОИ-7) символы тоже невозможно было записать без извращений: например, операторные скобки { и } записывались только как \( и \), а прямая черта (|) — как \!. С учетом всего перечисленного, самая первая программа на C, с которой я познакомился, выглядела так:
MAIN () \(
PRINTF («HELLO, WORLD\\N»);
\)
И (в течение примерно полугода с начала занятий) — я был убеждён, что программы на C именно так и выглядят, а по-другому не бывает. Кстати, если сам обратный слэш надо было вставить в C-строку — необходимо было ввести четыре слэша подряд! А еще в КОИ-7 еще отсутствовал стандартный для ASCII (но, видимо, идеологически чуждый для нас) знак доллара — вместо него было такое «солнышко» с четырьмя лучами. При программировании на C этот символ не особо и нужен (но вот в системных командах нужен, и ещё как!) В общем, освоение компьютерной премудрости — всё это никак не упрощало).
К счастью, после столь маловразумительной теоретической части, мы рассаживались по терминалам, и начиналось самое интересное, то есть практические занятия. Я, например, первое время занимался в основном тем, что запускал программу learn. Весьма приличный был интерактивный курс по системе (даже с небольшими задачками на понимание к каждому уроку) — именно из него я почерпнул основные знания о системных командах (ls, cat, mv, rm, и так далее). К сожалению, объем курса был небольшим (уроков 8-10, не более того) — т.е. там были только самые основы. Но и это уже было кое-что...
Вообще, официально операционная система, выполняющаяся на нашей СМ, называлась «МНОС» — что расшифровывалось как «Машинно-независимая операционная система». Это была разработанная у нас (как сейчас подсказал поиск, в «ИПК МинАвтоПрома») мутация какой-то очень древней Unix (6—й версии или около того). Если судить по нынешним временам — её примитивность была удручающей. Там не было, например, штатной команды man (вместо нее было какое-то собственное, явно самопальное, русскоязычное руководство).
Но зато были некоторые программы, которые я нигде и никогда больше не встречал. Например, имелась довольно удобная программа для пролистывания файлов и вывода программ по страницам (т.е. пагинатор), под удачным названием dog. И редактировать файлы тоже было довольно удобно: помимо стандартного ed, присутствовал там еще экранный редактор eda (тоже, как понимаю, какой-то местной разработки), который весьма хорошо работал с видеотоновскими терминалами. (Никаких vi не было, не говоря уж о emacs.)
Существовала ещё программа печати (под названием посему-то opr) — но посылать на печать что-либо, разумеется, разрешалось лишь в особых случаях.
Потому как бумага для принтера (в больших рулонах с перфорацией по краям) была доступна, понятно, не для всех.
Ну и, совсем особого разговора заслуживает C-компилятор (а других систем программирования, кроме C и Shell, там просто не было). Диалект C, который им поддерживался, был, конечно, очень архаичным (о каком-либо ANSI-стандарте и речь не шла).
***
В дни занятий, когда за терминалами сидело человек 10–15 пользователей, на компиляцию программы в несколько строк (типа той же «Hello, world!») уходило минут 5, если не 10. Возможно, поэтому (в отличие от большинства стандартных компиляторов) он был снабжен диагностикой: в процессе выдавал последовательно (на русском) сообщения типа «Препроцессор», «Первый проход», «Второй проход», «Ассемблер», «Редактор связей» и т.п. — чтоб пользователь видел, что компиляция не висит, а как-то продвигается. (Да, C-компилятор в этой МНОС и правда был двухпроходный — программисты поймут и оценят.)
Сколько бы времени потребовалось на компиляцию более серьезной программы, я даже не знаю. Думаю, что скорее всего процесс бы не дошел до конца: система и без того регулярно «радовала» нас грозным сообщением «НАРУШЕНИЕ ЗАЩИТЫ ПАМЯТИ» (это был SIGSEGV, выражаясь современным языком). После такого сообщения, терминал обычно подвисал на некоторое время, и надо было ждать, пока «отвиснет».
Ну и, разумеется, у нас были игры! Вообще, игры тех времён — это совершенно отдельная тема. Вы же помните, что тогда подавляющее большинство людей в принципе не имело представления о том, что такое компьютерная игра? (Забудьте про: персоналки, наладонники, сотовые телефоны, игровые приставки, а также мини-игры, встроенные в: телевизоры, видеоплееры, стиральные машины, кофеварки, соковыжималки, и так далее). А на компьютере было вот что: шахматы (в шахматах я слаб, никогда не играл, и уровень реализации программы оценить не берусь), и несколько логических игр попроще (таких, как Ним, или «ханойские башни»). В качестве «игры», был ещё богатый набор афоризмов (afor) — как полный аналог fortune из стандартных Unix-систем.
Афоризмы, как мне припоминается, были надерганы из наших источников (вроде «Литературной газеты» или журнала «Крокодил»).
***
Кстати, еще системная программа login были модифицирована так, что при каждом входе в систему она радовала каким-нибудь афоризмом из того же списка (типа «Прежде, чем столкнуться, многие шли друг другу навстречу» или «Иной железный характер лучше сдать в металлолом»). Помимо этого, в системе имелась ещё пара полноэкранных игр. Например, была стандартная «змейка», поедающая цифры (по-моему, так и назвалась — «zmei»), или другая игрушка, где надо было что-то собирать с экрана, уворачиваясь от роботов-убийц («robots»). Довольно незатейливые компьютерные развлечения.
А ещё было, помню, замечательное развлечение: игра «Алкаш за углом» («alik»). То был, так сказать, наш ответ на буржуйскую программу-психотерапевта ELIZA: симулятор общения с уличным алкоголиком. В качестве приглашения программа выдавала «Дай сто грамм!», и пыталась как-то реагировать на ваши ответы. (Чаще всего стереотипно: по типу «Это — не сто грамм. Дай сто грамм!». Но иногда получалось и поостроумнее.) Говорили, что если выразиться нецензурно, «alik» укоризненно скажет «Ай-ай, а еще интеллигент!!!» Кстати, даже по Ctrl+C программа не прерывалась, гордо отвечая на это: «Алики бессмертны!» Выйти из программы можно было, лишь введя «100 грамм» — тогда она завершалась с радостным бульканьем и песней «Шумел камыш...»
***
Ну и, еще отдельного упоминания заслуживает легендарное «Приключение» (она же «adventure»). Эта программа (известная, как первый в истории человечества квест) — имелась, наверное, на всех без исключения серьезных машинах. «Приглашаем в путешествие! Вам нужны инструкции?» Вообще, как я подозреваю, это был один из первых русских переводов классического adventure — в начале был белый дом; там можно было взять лампу, пустую бутылку, связку ключей; еще можно было спуститься в пещеру и так далее. Но там имелись и некоторые оригинальные моменты, добавленные переводчиками (вроде бы, можно было даже попасть в коридоры родного НИИЧАВО — чего уж точно не было в оригинальном adventure). В общем, мне тогда игра казалась совершенно необъятной и непроходимой (думаю, для полного прохождения нужно было несколько часов).
Короче, на «практической» части факультатива — нам всегда было, чем заняться. Только вот весь наш факультатив проработал где-то полгода. Ну, а потом в нашем ВЦ случилось страшное: система грохнулась, а большая часть файлов, вероятно, погибла. Соответственно, даже не знаю, как дневные — а вечерние занятия накрылись до лета.
Это была трагедия. Хорошее было только одно: мне не мешали приходить в практически пустой дисплейный класс, и читать все подряд. Прежде всего, появилась наконец возможность спокойно прочитать книгу Кернигана и Ричи (в принтерной распечатке, и одном из первых, весьма корявых русских переводов). Но зато, читать никто не мешал: конкурентов не было. Все-таки, нет худа без добра.
Вот в следующем учебном году наш ВЦ заработал снова (и даже с большими переменами к лучшему) — но об как-нибудь потом.
Денис Гаев
Иллюстрация: Unsplash by Ilya Pavlov