Русский English
VI международная конференция
«РАЗВИТИЕ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ В РОССИИ, СТРАНАХ БЫВШЕГО СССР И СЭВ»
Россия, Нижний Новгород, НИУ ВШЭ, 25–27 сентября 2023 года

От перфокарты до компилятора

Аннотация

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

Ключевые слова: раннее обучение программированию, школа юных программистов, выездные компьютерные школы.

I. Введение

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

II. Школа юных программистов

В мае 1979 года незадолго до окончания последнего урока в наш третий класс школы № 190 города Новосибирска зашёл мужчина среднего роста с очень выразительными глазами. Он представился: Геннадий Анатольевич Звенигородский. Это была обычная, как теперь называют, «холодная продажа»: никто из моих одноклассников не знал ничего о программировании и вообще слабо себе представлял, что такое ЭВМ и где она расположена. Конверсия тоже оказалась не очень: из пяти или шести классов в параллели на занятия в сентябре пришло два человека: я и Света Урюпина[1]. Однако я могу с уверенностью сказать, что эта встреча изменила всю мою жизнь, хотя тогда я этого и не осознавал.

В сентябре того же года начались теоретические занятия, которые проходили в лабораторном корпусе НГУ. Начиналось всё просто: «бит – это либо есть сигнал, либо нет». Теоретические занятия проходили по выходным, это была, по сути, воскресная школа.

Изучая архивные материалы современным взглядом, обратил внимание на борьбу идей и подходов среди создателей учебных курсов для юных программистов. Показывать ли им абстракции? Рассказывать ли сказки, чтобы было понятнее? Или сразу погружать в мир реального программирования с его разнообразием языков, платформ, операционных систем и устройств ввода/вывода?

На первом этапе, очевидно, победило фантазийное направление, и ученикам был представлен вымышленный язык программирования РОБИК-2 [1], т. е. сразу со второй версии. По современной классификации это классический алгоритмический язык программирования, в котором введены понятия процедуры, цикла и условного оператора. Однако, видимо для удобства восприятия неокрепшим мозгом младшего школьника, синтаксис присваиваний был переставлен с ног на голову: «(выражение) вычесть из (выражение) и присвоить (имя переменного поля)». Но это мне сейчас кажется странным, а тогда всё воспринималось как «по-другому и быть не может», поскольку напоминало обычную математическую формулу. К тому же, в более поздних версиях, вошедших в систему Школьница [2], эти версии оператора присваивания не фигурируют.

На следующем этапе, вероятно, стало ясно, что время работы на ЭВМ дорого и не совсем понятно, какая именно система программирования будет доступна в тот момент, когда ученик дойдёт до терминала, поэтому мы изучали одновременно языки РАПИРА, СЕТЛ и ПОПЛАН. Первый курс ШЮП для меня совпал с четвёртым классом средней школы, когда нам стали преподавать английский язык (кому повезло не попасть на немецкий – язык «вероятного противника»), поэтому некоторые английские слова и их произношение мне удалось, благодаря Геннадию Анатольевичу, выучить раньше школьной программы: слово ПОПЛАН хотя и писалось по-русски, но названия всех операторов обозначались латиницей. Клавиатура у терминала и телетайпа имела гораздо меньше клавиш, чем современные устройства, но на большинстве из них между латиницей и кириллицей можно было переключиться.

Главным этапом перед началом работ на настоящей БЭСМ-6, было обучение командам операционной системы и управление многочисленными устройствами ввода/вывода. Программы чаще всего вводились через терминал Видеотон-340: тонкий клиент, как это сейчас называют, собирался в Венгрии, имел на своём зелёном экране шестнадцать строк по восемьдесят символов [3], но этого вполне хватало для комфортного общения с головным процессором. Альтернативой был телетайп, на котором экрана не было совсем, зато после работы оставалась обширная распечатка, которой часто хватало для отладки программ. Хранились программы на перфокартах, магнитных дисках и даже магнитных лентах. Поэтому для исполнения программ были соответствующие команду операционной системе. Например, команда «ЛЕНТ 45 (638)^» обязывала дежурного оператора по машинному залу поставить бобину № 638 на магнитофон № 45. Все команды операционной системе заканчивались «надчерком». Устройств вывода было примерно три: АЦПУ, графопостроитель и фотопостроитель. Последним мне воспользоваться ни разу не пришлось. Ввод программы и получение результата были сильно разнесены во времени и пространстве: за распечатками нужно было ходить на другой этаж и иметь допуск, поэтому часто результат удавалось увидеть лишь через несколько дней. Из команд операционной системы хорошо помню NO_LOAD_LIST, которую нужно было указать перед распечаткой программы, иначе приносили погонный метр упаковочной бумаги, в углу которой красовалось несколько строк программы.

Через некоторое время оказалось, что полученных знаний нам уже хватает для написания программ, и мы перешли к практике. Важно было не нарушить работу единственного ВЦ Академгородка, поэтому к ЭВМ нас допускали только по воскресеньям. Примерно в шесть утра я садился на первый автобус, доезжал до остановки «Вычислительный Центр» и садился на лавочку внутри проходной ГП ВЦ. Через какое-то время приходил Геннадий Анатольевич и пропускал всех собравшихся к тому моменту ШЮПовцев внутрь. Дальше проверялась домашняя работа и программа, которую планировалось запустить. В зависимости от важности задачи и времени прихода мы по очереди садились за терминал и вводили свои задачи. Мне очень нравилось программирование на перфокартах: можно было отлаживать программы, просто меняя порядок бумажек в колоде. Была удобная читалка (перфокарта со всеми выбитыми окнами), которая позволяла расшифровать содержание каждой карточки и аккуратно подписать программный оператор в её верху. Кроме этого, зачаровывали картинки с графопостроителя, благодаря работавшей уже тогда графической системе ШПАГА-2. Первая моя распечатка с этого устройства датирована 08.12.1979 и содержит пустой квадрат со стороной восемь сантиметров и мою фамилию.

Кроме собственно основ и целой коллекции языков программирования было очень много математики, знаний по которой не хватало для полноценной постановки задач для кодирования. По крайней мере именно на тех занятиях я узнал о теории вероятности, факториале и полярной системе координат, а совсем не на первом курсе математического факультета, куда я поступил значительно позднее.

III. Программистский класс

Второе знакомство с программированием началось для меня осенью 1984 года, когда я перешёл обучаться в специально организованный класс при 166 школе. Начиналось всё так же, как и с поступлением в ШЮП: однажды на последнем уроке к нам зашёл Геннадий Анатольевич Звенингородский. Но в этот раз конверсия не подкачала: кроме меня и Светы, к нам присоединились ещё четверо выпускников 190 школы.

В новом классесразу стало ясно, что обучение программированию здесь поставлено на совсем другой уровень: у каждого ученика был свой персональный компьютер! Это уже был компактный системный блок со встроенным флоппи-дисководом и динамиком, отдельным монитором и клавиатурой. Что такое мышь, мы тогда ещё не знали. Подобно тому, как современные дети не знают, что для того, чтобы начать работу, нужно загрузить компьютер с одного флоппи дисковода, а затем вставить другой диск со своей программой и продолжить работу. Если, конечно, диск прочитается.

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

Возможностей графической системы на компьютерах Агат уже вполне хватало для качественной визуализации и анимации, поэтому обязанностью каждого ученика было написание пакета прикладных программ (ППП) в качестве выпускной дипломной работы. Темы выбирали сами, кто-то работал в одиночку, кто-то командами. Андрей Петров к тому моменту уже написал своего знаменитого «Удавчика», Дмитрий Милютин и Олег Полянский стали авторами ППП «Производство серной кислоты», отлично иллюстрирующие все этапы процесса. Я с Владимиром Курляндчиком написал и отладил ППП «Русский язык», моя часть обучала ставить ударения в словах путём бомбардировки из самолёта, нарисованного символьной графикой.

История с ППП не закончилась с нашим окончанием школы. Все программы были зарегистрированы и нам даже выплачены гонорары. Однажды, уже в 1993 году, возникла необходимость отвезти компьютер в Ленинградский университет и на обратном пути мы с Владимиром Курляндчиком и Олегом Полянским зашли в главный выставочный павильон ВДНХ. К своему удивлению на одном из стендов мы нашли свои работающие ППП и сразу кинулись что-то там дорабатывать. Это было наше первое знакомство с понятием «открытый код».

Новая школа имела сильный преподавательский состав. Именно благодаря энтузиазму Нэлли Николаевны Сергиенко я в результате полюбил математику и поступил на математический факультет НГУ. А благодаря усилиям Нины Ароновны Юнерман (Гейн) в памяти навсегда остались основы (да и дебри) программирования как искусства, универсальные знания, которые можно применять независимо от конкретного языка программирования.

IV. Школа юных программистов

О летних школах я услышал ещё во время обучения в ШЮП в 1979 году, но лично участвовал первый раз только в десятой, в августе 1985 года. Это было уже очень представительное мероприятие: более двухсот учеников со всей страны и ближнего европейского зарубежья. Торжественное открытие в ДУ СО РАН СССР, приветственное слово академика А.П. Ершова. А потом – две недели бесконечного полёта, обмена идеями, семинаров и практических занятий.

Для меня лично эта школа открыла архитектуру процессора, на котором была построена ПЭВМ Агат. Это был восьмиразрядный процессор 6502, который по-простому мог обращаться к 64 килобайтам оперативной памяти. Однако, благодаря имевшейся в нём технологии переключения банков памяти теоретически к устройству можно было подключить до 640 кб. В используемой нами конфигурации было 96 кб, чего хватало для большинства наших задач. Тогда же меня надолго очаровал язык ассемблера, доступный к программированию на Агате, компактность создаваемых на нём программ. Именно из разбора команд ассемблера я впервые услышал о логической команде XOR, которую с тех пор использовал везде, где мог.

Аппаратное обеспечение десятой школы включало и «родителей» Агата – компьютеры Apple ][ Plus, и «братьев» – болгарских Правецов-82 [4]. Эти простые системы имели графическое разрешение 208*192 пикселей, но его вполне хватало для захватывающих компьютерных игр, которые по каким-то причинам на Агатах не запускались. На следующей школе уже появились компьютеры Yamaha CX5M, обладавшие гораздо более широкими звуковыми и визуальными возможностями, а также языком программирования Basic, но поработать на них мне не удалось.

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

V. Поездка в Америку

Поездка в Америку в 1986 году случилась неожиданно: месяц подготовки – и мы на американской земле. По крайней мере, нам так казалось, потому что трудности переговоров остались для рядовых участников поездки за кадром. Принимающая сторона просто хотела увидеть у себя советских детей, но поскольку с нашей стороны пробить стену холодной войны удалось лишь при участии всего авторитета академика Андрея Петровича Ершова, то программу срочно перекроили под компьютерную тематику.

По прибытии нас ждал огромный сюрприз: каждому школьнику вручили личный персональный компьютерTandyTSR80 model 100 [5], предоставленный американской корпорацией US Sprint. Это был прообраз современного нетбука: компьютер размером с лист А4, но толщиной пять сантиметров с экраном 8 строк на 40 символов и памятью 32 кб. Кроме того, в нём был встроенный модем, внешний магнитофон для записи программ и даже матричный принтер. Можно было писать заметки и программировать на Бэйсике. При отъезде домой нам неожиданно подарили всё это богатство, и я ещё несколько лет использовал его как домашний офис.

Программа поездки включала столицу Вашингтон, Сан-Франциско и Сиэттл. Везде по возможности мы посещали компьютерные классы. У нас сложилось чёткое ощущение, что с информатизацией в Новосибирске дела обстояли гораздо лучше. Для американцев домашний компьютер тогда был не меньшей диковинкой, чем и у нас. А в школах и колледжах, где всё-таки были компьютерные классы, не было единой системы обучения, чаще всего компьютер использовался как текстовый редактор и именно этому там и учили студентов.

Для меня лично поездка запомнилась возможностью личного общения с академиком А.П. Ершовым. Хорошо помню один случай. Мы были на экскурсии в Edmonds Community College в окрестностях Сиэттла. Компьютеров там не было, а в какой-то момент нас вообще оставили на час без внимания, что меня сильно разозлило. Андрей Петрович рассказал мне, что в такие моменты нужно заниматься самообучением, вспоминать и решать оставленные ранее задачи, больше думать. Помню, что тогда эти слова о самодостаточности себя, своих мыслей, произвели на меня огромное впечатление.

Говорят, что академик А.П. Ершов встречался с президентом Майкрософт у него дома. Но название этой корпорации не произвело впечатление на нас: у них тогда не было интересного программного продукта, а Visual C нас совершенно не впечатлял.

VI. Университет и язык Ада

Тем временем я поступил на механико-математический факультет НГУ. В 1986 году не было специализированного факультета для обучения программированию, и мы пошли грызть гранит всей фундаментальной науки. Программирование у нас преподавал Игорь Васильевич Поттосин, к которому я впоследствии и пошёл специализироваться. Программирование меня всегда интересовало в своей близости к аппаратной части, поэтому, когда я впервые прочитал спецификацию языка Ада [6], где системно заложены возможности параллельных вычислений, то пришёл в полный восторг!

Привычные ныне всем персональные компьютеры на архитектуре x86 тогда только начали появляться в нашей стране, причём часть из них находилась под санкциями из-за своей производительности. Поэтому нас, студентов, за них не пускали, и мы с удовольствием работали на компьютерах Кронос, а разработку компилятора с языка Ада производили на языке Модула 2. В результате удалось разработать внутреннее представление данных и написать интерпретатор в него. В последствии Игоря Васильевича по каким-то причинам перестала интересовать эта тема, но свой диплом на «отлично» я защитить успел.

VII. Выводы и заключение

Описываемый период времени включает в себя всего пятнадцать лет: с 1978 по 1993 гг. Но как сильно изменилась техника: от БЭСМ-6 на ферритовой памяти, которая занимала целый этаж, до компактных полупроводниковых компьютеров, занимающих площади меньше, чем стоящие на них мониторы.

С современных позиций совершенно очевидно, что концепция академика А.П. Ершова «Программирование – вторая грамотность» прошла проверку временем. Современный мир невозможно представить без компьютеров и программ, их обслуживающих. Но прежде всего людей, для которых благодаря основателям отечественной школьной информатики открылись дороги в компьютерный мир.

Список литературы

  1. Звенигородский Г.А. Первые уроки программирования – М. : Наука, 1985 – 208 с.

  2. Звенигородский Г.А., Глаголева Н.Г., Земцов П.А., Налимов Е.В., Цикоза В.А. Программная система «Школьница» и её реализация на персональных ЭВМ // Микропроцессорные средства и системы, № 1, 1984. – с. 50 – 55.

  3. http://www.besm6.org/wiki/Videoton-340

  4. https://ru.qwe.wiki/wiki/Pravetz_computers

  5. https://en.wikipedia.org/wiki/TRS-80_Model_100

  6. Джехани Н. Язык Ада – М. : Мир, 1988 – с. 125 – 127.

Примечания

1. Ныне кандидат педагогических наук, доцент Рязанского государственного радиотехнического университета.


Об авторе:

Михаил Анатольевич Тумайкин Независимый исследователь, Новосибирск, Россия toomikeen@gmail.com


Материалы международной конференции Sorucom 2020
автора 24.07.2022