ИСТОРИЯ АЛЬФА-ГРУППЫ
Становление Новосибирской школы программирования. Мозаика воспоминаний.

ИСТОРИЯ АЛЬФА-ГРУППЫ

Состояние вычислительной техники 50-60-х годов

Для того, чтобы понять в сегодняшние дни смысл и назначение Альфа-группы следует сначала сказать о той вычислительной технике на которой делался Альфа-транслятор и которая определяла предоставляемый сервис, и о прохождении задач в те времена.

Задача поступала на машину в виде колоды перфокарт, которая ставилась на читающее устройство (ЧУ) и осуществлялся ввод. Через несколько запусков перфокарты «махрились» и ЧУ «заедало» их. Иногда из-за неисправности ЧУ такое происходило и с новой колодой. Помимо порчи перфокарт, ЧУ иногда просто неверно считывало код, пробитый на перфокарте. Испорченную перфокарту(ы) можно было либо заново набить, либо отдублировать на специальном устройстве, которое также не гарантировало 100% правильности. Магнитные ленты были не на бобинах, а в карманах стоек магнитофонов и перематывались из одного кармана в другой. Работа магнитных лент и барабанов оставляла желать много лучшего. Альфа-транслятор находился на магнитной ленте и считывался по блокам. Сбои были настолько частым явлением, что даже в начале 70-х программисты не очень верили в то, что внешние устройства могут проработать хотя бы месяц без сбоя. Сама ЭВМ (сначала М-20, затем М-220, а позднее БЭСМ-6) также не отличалась хорошей работоспособностью особенно М-20. Печатающее устройство (ПУ) выдавало результат в виде рулона узкой бумажной ленты где нецифровая информация печаталась в восьмеричном виде. Кроме того, возможна была выдача на телетайп, которым пользовались те, кто считал прогноз погоды.

Система прохождения задач

Хотя и не сразу, но была принята следующая схема прохождения задач пользователя.

Задача в рукописном виде (если она сдавалась в первый раз) поступала в группу приема задач, руководителем которой было Анна Сидоровна Мучная, известная всем программистам того времени. Из группы приема задача поступала либо в группу перфорации (если надо было набить задачу или исправить отдельные перфокарты), либо непосредственно в группу операторов ЭВМ. После пропуска задачи на ЭВМ она поступала снова в группу приема задач, а затем задачи, написанные на входном языке АЛЬФА или АЛГОЛе 60, поступали в Альфа-группу (если выдачи содержали не результат). При любой ошибке или модификации задачи весь цикл повторялся. Обычно, если ЭВМ работала нормально то задачу можно было пропустить два раза за день но очень часто это было возможно только один раз, а то и еще реже. Пропускная способность машины была очень далека от требуемой.

Каждый пользователь должен был пройти всю эту цепочку, при этом сбои могли произойти в любом звене этой цепочки. Случались (но к счастью, не очень часто) такие «везучие» бедолаги, которые натыкались на сбои в каждом звене до получения результата. Иногда пользователи сами перфорировали, пропускали свои задачи и сами приходили в Альфа-группу. Но время на ЭВМ распределялось в группе приема задач.
Следует отметить что к этой цепочке прохождения задач добавляется Альфа-транслятор, состоящий из ЗО блоков (в восьмеричной си стеме) и через каждый из этих блоков должна была проходить задача. Требуется не так уж много воображения, чтобы представить себе сколько иногда сил и нервов стоило программисту довести программу до требуемого результата. Надо было пройти через собственные ошибки, сбои, которые могли произойти в любом звене цепочки прохождения задач, и через все блоки транслятора!

«Сервис» Альфа-транслятора

Сообщения Альфа-транслятора представляли собой текст, но выдавались в восьмеричном виде пока не появилось АЦПУ . Поскольку не было привязки сообщения к исходному тексту программы то приходилось по внутренней кодировке определять текст и привязывать этот текст к тексту исходной задачи. Внутренние выдачи Альфа-транслятора, к которым приходилось часто прибегать для обнаружения ошибок после 3-го блока, имели несколько внутренних кодировок. Все блоки могли выдавать весь текст задачи во внутренних кодировках. для обнаружения нетривиальной ошибки умозрительно определялось, примерно с какого блока необходимо выдавать отладочные выдачи. Требовалось просмотреть первую отладочную выдачу, сопоставить с искомым фрагментом исходного текста, а затем последовательно после каждого блока отыскивать этот фрагмент и проверять правильность его обработки соответствующим блоком. Величина фрагмента зависела от самой ошибки. Причин ошибок было множество: ошибка программист; ошибка при перфорации, перепутанные перфокарты, сбой машины (процессора или периферийных устройств). Транслятор был написан в коде машины М-20 и, кроме описания входного языка АЛЬФА, не имел никакой документации. Оптимизации, применяемые в трансляторе, по-моему, впервые осуществлялись так комплексно в таком количестве. Благодаря этим оптимизациям транслятор генерировал очень хороший код (насколько мне известно, по качеству исполняемых программ ни один транслятор в мире до сих пор не превзошел Альфа-транслятора). Но обратная сторона этой оптимизации состояла в том, что не было линейного соответствия между исходным текстом программы и текстом программы в коде машины, что естественно осложняло поиск ошибок. Когда был неверный счет, то выдавалась исполняемая программа в коде машины, которую надо было просмотреть и сопоставить его исходному тексту. Таким образом проверялось соответствие того, что написано тому, что задумано. Если ошибка обнаруживалась у программиста, то поиск ошибки на этом заканчивался. В противном случае надо было делать отладочные выдачи транслятора. далеко не всегда ошибка программиста или транслятора была очевидной, т.е. обработка текста программы осуществлялась неправильно из-за того, что где-то в другом месте была ошибка у программиста. Заранее этого никто сказать не мог. Понятно, что при таком «сервисе» Альфа-транслятора без помощи разработчиков или сопровождающих этот транслятор программисту было не обойтись.

Создание и назначение Альфа-группы

В начале декабря 1963 г . было принято решение: с 10 января 1964 г . начать прием задач от внешних организаций. С 16 по 20 декабря 1963г. были организованы курсы по Альфа-транслятору, которые вела Р. д. Мишкович.

Было принято также решение от лабораторий ВЦ выделить по 1-2 сотрудника для обучения Альфа-транслятору в отделе программирования до 1 февраля 1964 г .

С 9 декабря 1963 г . В. П. Минаев был назначен старшим оператором Альфа-транслятора, именно с него началась Альфа-группа. Вторым сотрудником Альфа-группы была М. Н. Легостаева, третьим сотрудником с сентября 1964 г . была я. Всего в Альфа-группе за время ее существования работало 12 человек. Но одновременно в ней работало самое большее 6 человек. Постоянными оставались только Маша Легостаева и я. Из Альфа-группы я ушла в 1970 г . После чего группа была реорганизована, и ее дальнейшая судьба мне не известна.

В Альфа-группе достаточно долго проработала Большакова Нина, через Альфа-группу прошли Долгая Лариса, Милютин Юра, Шпурик Слава, Лукинцов Саша, Грищенко Галя, две Тани — Безяева и Тропникова.

Альфа-группа была создана для стимулирования широкого использования Альфа-транслятора и обеспечения консультациями по работе с ним и по входным языкам Альфа, Алголу. Это была первая группа, которая служила посредником между разработчиками и программистами. Опыта не было ни у кого, все начинали с нуля. Позднее по образцу нашей группы была создана подобная группа в ВЦ АН и в Петергофе у Н. Н. Лозинского. Вероятно, подобные группы создавались во многих других организациях, которые брали Альфа-транслятор, но о них мне ничего не известно, тогда как с московской Альфа-группой и с группой Лозинского мы поддерживали добрые отношения.

В функции Альфа-группы входили консультации по входным языкам Альфа и Алголу и идентификация ошибок с локализацией их места в исходном тексте программы. Если ошибка в исходном тексте была не найдена, то к нахождению ошибки привлекались разработчики. Основным помощником Альфа-группы из разработчиков был Г. И. Кожухин. Он мог всегда определить, действительно ли это ошибка транслятора и, если да, то кому из разработчиков ее переадресовать. Частыми помощниками Альфа-группы были также Ю. М. Волошин и И. В. Поттосин. Все эти люди активно способствовали становлению Альфа-группы и в большой степени определили ее лицо. Я думаю, что без этих людей Альфа-группа никогда не получила бы того признания и уважения, которым она пользовалась не только в Новосибирске. Помощь этих людей была неоценимой не только для Альфа-группы но и для любого программиста, который мог всегда рассчитывать на квалифицированную консультацию и ценный совет.

Из-за плохой пропускной способности машин и постоянных сбоев где-нибудь всегда была масса недовольных программистов, особенно тех, кому сильно «везло». Кроме того, все программисты без исключения были уверены в том, что у них в задаче ошибок нет, а если задача выдана с ошибкой, то эта ошибка не его. Особенно это было характерно для тех случаев, когда задача хотя бы один раз выдавала правильный результат. Довольно часто ошибки возникали при модификации задачи. Но программист утверждал что у него все правильно задача считала, он НИЧЕГО не менял. Тогда приходилось спрашивать, а для чего он пропускал задачу еще раз. И выяснялось что он все-таки что-то менял и именно в этих изменениях надо искать ошибку или по крайней мере тщательно проверить изменения. Это могли быть измененные входные данные или по мнению программиста, «пустяковые» изменения в программе которые не могли привести к ошибке. Довольно часто он, к сожалению, заблуждался. Но первой его реакцией на получение задачи с ошибкой был возмущение. И первыми, кто им попадал под руку, была Альфа-группа, которая принимала на себя эти удары. Все первые претензии и раздражение программистов находили выход именно там и очень часто никуда дальше не шли. Конечно, их можно было понять, поскольку претензии часто оказывались справедливыми, но не имели никакого отношения к Альфа-группе. И таких дней в Альфа-группе было гораздо больше, чем мирных и спокойных. Чаще всего такая «зарядка» была с утра. Несмотря на такое почти постоянное напряжение, редко кто из Альфа-группы позволял себе рассердиться или возмутиться в ответ на незаслуженные обвинения. Сотрудники Альфа-группы действительно по мере сил старались помочь программистам, и это позволяло сохранять доброжелательные отношения. Часто кто-нибудь разряжал обстановку шуткой. Если в Альфа-группе кто-нибудь оказывался не очень занят, а обнаруживалось, что ошибка в программе программиста не по его вине, то сами старались исправить ее и пропустить задачу вне очереди.

Услугами Альфа-группы пользовались программисты всех институтов Академгородка, институтов и почтовых ящиков города Новосибирска. Кроме того, довольно часто приезжали иногородние посчитать свои задачи.

Бывали случаи когда у командированных срок командировки кончался раньше, чем был получен результат, и иногда эту задачу оставляли в Альфа-группе «доделать». Однажды вот по такому случаю Минаев Володя сочинил даже песню . Рабочий день уже кончился и Минаев пел эту песню под гитару (где он взял гитару, не знаю!). Слова этой песни забылись, кроме одной строчки «девки пишут письмецо Ярыгину». Ярыгин был командированный из Якутии, который как раз оставлял нам задачу, и мы с Машей Легостаевой действительно сочиняли письмо этому Ярыгину под эту песню.

Структура Альфа-группы

В Альфа-группе отсутствовало иерархическое деление сотрудников. Был просто старший в группе, с которого все спрашивали как в самой группе так и вне ее. Были просто более опытные сотрудники и менее опытные. Работу тоже не делили: просто само собой получалось, что более опытным доставались более сложные случаи. Но учиться всему старались все, хотя и в разной степени.

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

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

Доброжелательность и желание сотрудников Альфа-группы облегчить программисту общение с Альфа-транслятором и ускорить получение результата тоже иногда способствовали потребительскому отношению некоторых программистов к Альфа-группе. Правда, у откровенно нахальных я старалась пресечь такие поползновения, но не могу поручиться, что другие сотрудники могли делать то же самое.

Помнится, был случай, когда у одного из программистов была ошибка в задаче, и я ему объяснила (и даже не один раз) как и что нужно было сделать. Однако он упорно сидел и ждал. Я спросила его, чего он ждет, а он ответил, чтобы я за него все это написала. На что я сказала, что готова объяснить ему еще раз, но делать за него не буду. А он, улыбаясь, говорит: «Я возьму вас измором.» Это был явный случай потребительского отношения. Были, конечно, случаи не такие явные, но такого же отношения к работе Альфа-группы. Но следует сказать, что жизнь нам это не портило. Если время позволяло (т.е. не было каких- то срочных дел), то мы помогали и таким программистам в надежде что они, в конечном счете, сами научатся отлаживать свои собственные задачи.

Приходилось иногда слышать из третьих рук такое мнение программистов: «Иди в Альфа-группу, там тебе все скажут и сделают.» С одной стороны это означало что сотрудники Альфа-группы обладали достаточной квалификацией, чтобы помочь программисту решить его проблемы; но, с другой стороны, у не очень радивых программистов порождало желание переложить часть своей работы на Альфа-группу.

Особенно это было характерно для второго периода эксплуатации Альфа-транслятора, когда увеличилось число профессиональных программистов, в отличие от того времени, когда программированием занимались специалисты из различных областей (физики, химики, механики, прикладные математики и т.д.), причем достаточно высокого уровня. Во втором случае был интерес к познанию новой для них области, а в первом случае была чисто профессиональная работа программиста.

Учителя и помощники Альфа-группы.

Говоря об Альфа-группе, больше всего хочется говорить о людях, поскольку любые идеи реализуют люди и от них зависит, как воплощаются эти идеи. В первую очередь, конечно, хочется отметить Г. И. Кожухина, Ю. М. Волошина, И. В. Поттосина, Б. Л. Загацкого, Т. Л. Темноеву, которые всегда и безотказно оказывали любую помощь, были главными вдохновителями и учителями группы.

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

Юмора иногда, видимо, было с избытком. Какое-то время Альфа-группа располагалась через стенку с кабинетом А. П. Ершова. Комната Альфа-группы почти всегда была полна народу, было шумно и часто раздавался смех. Разработчики также сидели в соседних комнатах и иногда заходили к нам в комнату просто расслабиться и пообщаться с пользователями. Конечно, этот шум мешал Андрею Петровичу, и в один прекрасный момент он не выдержал. и нас переселили в другое место, подальше от разработчиков.

Первые программисты на языке Альфа.

Хочется сказать еще о первых программистах пользователях Альфа-транслятора. Это были, как правило, умные люди, квалифицированные специалисты в своей области, которые решали свои задачи. С ними было легко и интересно. Легко потому, что им самим хотелось все понять и узнать и они быстро все схватывали. Интересно потому, что первые — почти всегда энтузиасты, они активны, много знают и обладают хорошим чувством юмора и потому не столь раздражительны. Общение с этими людьми доставляло большое удовольствие не только нам, но и разработчикам, которым было интересно узнать, какого типа задачи решают пользователи, какие у них возникают проблемы. У нас у всех остались очень теплые воспоминания о тех людях.

Помнится, что где-то в конце 60-х мы с Г. И. Бабецким оказались в Алма-Ате в командировке (ставили Альфа-транслятор геологам). Бабецкий знал, что там теперь живет наша одна из первых и активных пользователей из города Новосибирска Гапоненко. И он ей позвонил. Она так обрадовалась нам, устроила специально семинар в ИЯФе, а потом — дома прием в нашу честь. Когда я была в командировке в Петергофе у Н. Н. Лозинского, меня пригласили на их внутренний праздник, позаботились о моем ночлеге в Петергофе, т.к. я остановилась в гостинице в Ленинграде. Надо сказать, что такое радушие и доброжелательность мне приходилось встречать везде, откуда к нам приезжали пользователи Альфа-транслятора, несмотря на непродолжительное знакомство в Новосибирске.

Когда-то мы с Г. И. Кожухиным и И. В. Поттосиным мечтали проехать по всем столицам республик и поставить там Альфа-транслятор. Но после одного вояжа Киев-Минск-Ленинград-Москва из-за проблем с гостиницами в те времена, эта мечта умерла, да и дел дома было много. Пропало желание куда-то ездить, и предпочитали принимать у себя.

Распространение Альфа-транслятора.

Альфа-транслятор распространялся на перфокартах и занимал около 4000 перфокарт. Это был достаточно приличный объем и вес. Каждый экземпляр транслятора получался на устройстве дублирования, что занимало не один час времени. Специальной службы по получению экземпляра Альфа-транслятора не было, и из положения выходили по-разному. Поэтому мы старались договариваться с теми, кто брал транслятор что в своем городе они будут распространять транслятор, объясняя наше трудное положение но как правило этот договор не соблюдался. Особенно это было характерно для московских организаций. Люди ехали в Новосибирск вместо того, чтобы взять транслятор под боком. Иногда это объясняли трудностью получения информации. Скорее всего не было той доброжелательности, которую они встречали в Новосибирске. В какие-то организации мы ездили сами ставить транслятор, из каких-то приезжали представители и забирали транслятор. Не во всех организациях он использовался одинаково интенсивно. Вероятно там, где смогли организовать более или менее квалифицированную Альфа-группу, транслятор использовался больше. По моим учтенным пометкам мы поставили около 50 экземпляров Альфа-транслятора. С некоторыми организациями устанавливались длительные связи, некоторые организации пропадали сразу же после того, как получали транслятор.

Не так давно встречались первые сотрудники Альфа-группы, естественно вспоминали старое и говорили: «Какие были замечательные люди! Какие все-таки были замечательные времена! Несмотря ни на что!»

Из воспоминаний разработчиков

1. Вместо оператора на машине оказался Ю. М. Волошин. Приходит программист и уверенно ставит на ЧУ колоду перфокарт, не снимая «рубашки», и говорит: «Запускайте!». Волошин посмотрел на программиста и … запустил. ЧУ работает, а колода на месте. Программист спрашивает удивленно-возмущенно, почему не вводится колода. Волошин отвечает: «А Вы бы еще ее в портфеле поставили!». Программист очень оскорбился.

2. Резервированные служебные слова в Альфа-трансляторе разрешалось писать по-английски и по-русски и использовать любое доступное устройство для набивки перфокарт. Все новосибирцы использовали, как правило русский язык, а приезжие, особенно из Москвы, английский. (Московские разработчики трансляторов с АЛГОЛа утверждали, что надо выгонять тех программистов, которые не знают английского. Правда, позднее они изменили свою точку зрения, но, по-моему несколько поздновато). Ю. М. Волошин приходит в Альфа-группу и видит задачу, где служебные слова написаны по-английски. Тут же стоит автор задачи. Волошин у него спрашивает: «Вы говорите по-английски ?» . Тот испуганно отвечает: «Нет!».

З. Бабецкий  Г. И. собрался покататься на яхте и уже готов был отплыть. Но увы! В этот момент появился гонец на велосипеде: «У тебя ошибка!». Пришлось попрощаться с яхтой.

4. Бабецкий  Г. И. (еще в геологии) пришел вечером на машину без пропуска, а вахтер его не пускает. Обошел все здание, нашел открытое окно и влез. Проработал всю ночь и утром, как «белый человек», идет мимо того же вахтера, а тот удивленно спрашивает: «А ты откуда взялся?». Вот так раньше иногда ходили на работу!

Следующая статья сборника

Из сборника «Становление Новосибирской школы программирования. Мозаика воспоминаний». Новосибирск, 2001 г.
Перепечатываются с разрешения редакции.