[Перевод] Как программировали в 1969 году
Я провёл это интервью со своей матерью Марианной Эрнерфельд в декабре 2018 года. В посте приведён немного урезанный перевод. Полное интервью на шведском языке можно прочитать здесь.
Почему ты захотела стать программистом?
Я решила стать программистом в 1965–66 годах. Прочитав статью, где на иллюстрации была показана блок-схема, я подумала: «это моё». Когда я выпустилась из старшей школы в 1967 году, не было ни одного университета, обучающего программированию, но существовал полугодовой курс в Сольне [прим. пер.: Сольна — коммуна в Швеции], который превратился в годовой курс, и на него могли выдать студенческий заём. Поэтому я подала на него заявление.
В то же время SJ (шведская государственная железнодорожная компания, на то время монополист) рекламировала программу стажёрства с однолетней оплачиваемой программой обучения, в рамках которой можно было учиться различным частям работы SJ. У SJ был компьютерный отдел, поэтому я подала заявление и в программу SJ, надеясь оказаться в ней.
Однако у SJ оказалось 700 кандидатов на 50 мест, поэтому они устроили суровый процесс отбора с различными тестами. И мне удалось пройти их! Мне нужна была зарплата, чтобы оплачивать собственное жильё, так что я приняла предложение.
Выяснилось, что руководство SJ было очень недовольно тем, что брошюры о стажёрской программе рассылали студентам и мужского, и женского пола! Хотя в программу приняли и не так много девушек, но их всё равно было приличное количество.
Во время обучения мы посещали все отделения SJ и обучались всему, от поездов и путей и до того, как работали коммуникации (у SJ были собственные электрические и телефонные линии!). Спустя год я получила работу, но она оказалась скучной. Наконец, в 1969 году я узнала, что SJ начинает программу внутреннего обучения программированию, так что я подала заявление. Пройдя дополнительные тесты, мы с тремя другими сотрудниками приступили в 1969 году к обучению программированию. Это были две девушки и два парня.
Моё руководство по IBM System/370, 1976 год. В таблице справа я написала ÅÄÖ (5B, 7B и 7C в шестнадцатеричном виде), потому что шведские буквы не входили в EBCDIC.
Как проходило обучение?
Сначала мы пришли в компьютерный отдел SJ и нам объяснили, что такое компьютеры и так далее. Затем мы прошли курсы в IBM, у которой в огромном здании в Стокгольме находилась «машина для обучения». Одновременно на одном курсе было примерно 50–100 человек, но нас разделили, так что в каждом кабинете присутствовало по восемь студентов. Там мы смотрели на два телеэкрана в передней части класса. Преподаватель и его доска транслировались на экраны из другого кабинета. У каждого преподавателя было примерно по десять кабинетов со студентами, и каждый кабинет мог задавать вопросы при помощи микрофона, обращая на себя внимание нажатием кнопки. Это было сверхсовременно!
Сначала мы немного узнали об IBM OS, а затем изучили собственный язык программирования IBM под названием PL/I. Это была более современная версия Кобола, обладавшая возможностями, которых у Кобола пока не было (но они появятся позже), например, создание таблиц и запросов. В то время PL/I был гораздо более совершенным и простым языком: можно было писать код, используя слова на английском, например, DO WHILE
и так далее. Очень хороший язык программирования!
Главным инициатором обработки данных в Швеции были государственные структуры. Банки и остальные далеко отставали от них. Поэтому на курсах IBM в основном были люди из других госструктур, но главной оставалась SJ.
После первого курса IBM я вернулась в SJ для выполнения своих первых практических программ. Мы вчетвером создали программу для дейтинга — оператор вводит данные мужчин и женщин, их черты, а затем генерирует пары между ними при помощи изобретённого нами алгоритма. А после этого мы приступили к написанию продакшен-кода!
Позже я прошла ещё несколько курсов, например, точно так же изучала ассемблер. То есть моё обучение выглядело так: неделя на работе и неделя на курсах, а потом на работе нам помогал супервайзер.
Мой трафарет для рисования блок-схем.
В чём заключалась твоя работа?
Сначала мы рисовали блок-схемы, а затем писали карандашом код. Затем мы передавали код в отдел перфорирования, где код вбивали в перфокарты. Перфокарты состояли из 80 столбцов (72 под программу и 8 для последовательности), поэтому строка кода не могла содержать больше 72 символов.
Мы должны были писать код чётко, чтобы работавшие на перфораторе женщины могли его читать. Спустя несколько лет работы в SJ нам выделили человека для чтения кода, и это сильно помогло. В остальном они по большей мере перфорировали карты данных: отчёты об отработанных часах в SJ, пробег каждого железнодорожного вагона (чтобы их можно было отправлять на обслуживание) и так далее. Перфоратор выглядел как обычная печатная машинка, пробивающая отверстия с картах. Кроме того, над каждым столбцом она печатала обычным текстом букву.
А ещё мы носили на перфокартах пирожные, так что они были довольно удобны.
Когда я только начинала работу, программы были маленькими, но позже каждая программа могла занимать несколько коробок карт длиной по одному метру. Каждая строка кода превращалась в одну перфокарту. То есть по одной команде на строку и карту. Отдел перфорирования возвращал нам программу (тысячи карт). Кроме того, нам приходилось создавать «контрольные карты», в которых кодировалось, должны ли перфокарты компилироваться или исполняться, на каком языке они были написаны и так далее. Контрольные карты имели собственный цвет. Первая карта была рабочей картой с моим именем на ней, чтобы отдел знал, кому их возвращать.
Мы клали коробки с перфокартами на специальный стол. Операторы в белых халатах брали коробки и запускали программы.
Иногда за день у нас получался только один прогон, потому что в машинном зале у программистов был самый низкий приоритет. Из-за этого, чтобы не терять время, нам приходилось одновременно работать над множеством программ.
Наконец, карты возвращались к нам вместе с «пижамной бумагой», содержащей списки кодов ошибок и номеров строк.
«Пижамная бумага»
У нас был доступ к паре дыроколов, так что мы могли вносить небольшие изменения самостоятельно.
Затем нам нужно было создать тестовые файлы и посмотреть, даёт ли программа ожидаемый результат. Если нет, то мы начинали «настольное тестирование» (с карандашом и бумагой), пытаясь разобраться, в чём же ошибка. Так что для создания правильной программы требовалось довольно много времени.
У нас было множество машин. Изначально у компании имелась IBM 360, а также более старые машины. Позже мы получили IBM 370.
Ближе к концу 70-х появились терминалы. У нас никогда не было собственных терминалов, все работали в общем зале с терминалами. Когда нужно было внести изменения в программу, нам приходилось сражаться за терминальное время. Программа высвечивалась на экране, а мы её редактировали. В компании пользовались жёлто-коричневыми терминалами Alfaskop. До самого увольнения из SJ в 1979 году у меня не было собственного терминала.
Alfaskop 3700
Расскажи о своих коллегах
Компьютерный отдел SJ состоял примерно из сорока программистов и системных инженеров. Всех моих коллег, как и меня, обучали в компании, за незначительными исключениями: у нас было несколько людей моего возраста, которые прошли упомянутый мной курс в Сольне. Но больше никаким другим образом научиться этому было нельзя — совершенно новая профессия! Некоторые из коллег раньше были машинистами локомотивов! У большинства даже не было аттестатов о полном среднем образовании.
Системные инженеры в основном работали со спецификациями, входными и выходными данными программ, и с тому подобным. Мы, программисты, были решателями задач, мы рисовали блок-схемы и думали, как выполнять задачи.
В машинном зале было примерно десять операторов машин. Все они носили белые халаты, работали с ленточными накопителями, дисками и вставляли перфокарты. Нам редко дозволялось посещать внутреннее святилище машинного зала. На входе висела табличка «Магазин закрыт». Машинный зал был огромным. Первые машины (IBM 1400) занимали 10–20 квадратных метров, а более новые были размером с холодильник.
Отдел перфорирования состоял из пятидесяти девушек. Если компьютерный отдел кто-то и посещал из других отделов SJ, то самыми интересными всегда были сотрудницы отдела перфорирования, потому что большинство сотрудников SJ были мужчинами!
Из сорока программистов было пять-шесть женщин. Я относилась к группе молодёжи, но большинство программистов было примерно на десять лет старше меня (я родилась в 1947 году). Ближе к концу 1970-х у нас появилось несколько новых рекрутов, прошедших годовые обучающие курсы.
Прежде чем приступить к работе, я познакомилась с Сольвейг, работавшей в компьютерном отделе SJ. Она сказала, что на всех дверях висели таблички «Мисс X» или «Миссис X», но на дверях кабинетов мужчин не указывалась информация о семейном статусе. Женщин это так бесило, что они открутили таблички. Когда я начала работать, они спросили «Ты ведь тоже не хочешь быть мисс или миссис?». Я ответила: «Нет уж, спасибо».
Чем ты занималась на работе?
Весной 1969 года, ещё до того, как я начала работать, SJ запустила онлайн-бронирование, работавшее 24/7. Это было невероятно современно по тем временам, а система целиком была написана на ассемблере. Благодаря этому SJ сильно выделялась на фоне остальных — ни одна другая компания в Швеции к этому и близко не стояла. Мне очень повезло обучаться в такой передовой компании!
Мы создавали программы, а после завершения и тестирования отдавали их другим отделам. Их поддержкой занимались другие, мы только писали новые программы! В основном это были программы, собиравшие статистику об операциях (например, о зарплате); их выполняли с регулярными интервалами (например, каждый месяц).
В 1979 году, проработав в SJ десять лет, я уволилась и перешла в банковский сектор.
Марианна за своим рабочим столом в SJ