понедельник, 3 января 2022 г.

Шеркало 05.02: любимые системы программирования (Алгол-60)

 - Итак, Шеркало, не отвлекайся!

- Я внимательно внимаю, о, Ёж!

- Я вспоминал о своей школьной учёбе в старших классах на УПК (учебно-производственный комбинат) в НИИ ИОА (Институт Оптики Атмосферы). И нашими преподавателями были назначены простые нормальные сотрудники института, а школьного предмета "Информатика" тогда ещё не придумали, никаких учебных программ не было. Так вот, эти преподаватели собрались вместе и стали думать думу, как бы так нас получше выучить, когда никто не знает - как.

- Чего-чего?

- Ты, не отвлекайся! Это я просто так додумываю. Меня, школьника, никто на их совещания не приглашал. Но по результатам ведь можно попытаться угадать исходную задумку?

Основная идея была красивая и абсолютно правильная: "Наших детей нужно обучать программированию не в "бумажном" режиме (карандашом в тетрадке и мелом на доске), а на настоящей "взрослой", работающей ЭВМ!" А подходящая для обучения школьников ЭВМ в то время в институте была лишь одна - БЭСМ-6. Только она обладала и нужными вычислительными ресурсами, и достаточной надёжностью, и работающим терминальным залом с разделением времени. Все остальные компьютеры либо ломались и зависали через каждые 30 секунд (ЕС ЭВМ и другие клоны IBM/360), либо были слишком маломощны (ранние СМ ЭВМ и младшие клоны PDP-11), либо в институте не было ни единого специалиста, который бы знал, где у этой ЭВМ кнопка "ВКЛ/ВЫКЛ", и с какой стороны в неё программа вставляется (МИР-2). А персональных компьютеров тогда в городе вообще практически ни у кого и не было.

Итак, должна быть выбрана БЭСМ-6, плюс настоящий "взрослый" язык программирования. А вот таких языков в ИОА на БЭСМ-6 было в те времена ровно две штуки - Фортран и Алгол-60. Нет, в институте при желании и необходимости использовали и другие языки (например набирающий популярность на мини-ЭВМ минималистичный язык "С", или стремительно теряющий популярность ассемблер IBM/360, или слывущий исключительно учебным языком "Pascal", или даже совсем экзотический "Forth"), но мэйнстримом для научных сотрудников были именно Фортран (бОльшая доля), и Алгол-60 (меньшая часть). Так какому же языку учить детей, чтобы не ошибиться?!

Наши преподаватели вполне ожидаемо предпочли Алгол-60. На тот момент я с ними был полностью согласен. Фортран, хотя и активно использовался учёными, из-за наличия кучи готовых пакетов математических процедур, но для обучения программированию выглядел уж слишком архаично. Алгол всё-таки был практически современным, структурным языком. Вот так и получилось, что нас стали на УПК учить Алголу-60, в одной из реализаций на БЭСМ-6 (кажется, это был Алгол-ГДР, но могу ошибаться). Мы писали программы на Алголе в обоих доступных режимах: и сами вводили руками с клавиатуры терминала, тут же запуская на трансляцию и выполнение, получая через несколько секунд результат на экран, и, если программа предполагала сколь-нибудь длительный счёт, или вывод более 20-30 строк, то в пакетном режиме. 

О пакетном запуске, конечно нужно рассказывать отдельно, сейчас такое и не увидишь. Нам выдавали специальные типографские бланки, разбитые клеточками на строки по 80 клеточек в каждой строке. Мы писали текст программы обязательно заглавными латинскими буквами, обязательно по одному символу в каждой клеточке, обязательно строгим печатным шрифтом. Потом складывали бланки со своими программами каракулями в специальную картотеку с отдельными пронумерованными ячейками (как сумки на входе в супермаркет, только ячейки меньшего размера и ключиком не запираются). Бланки по очереди забирали из картотеки операторы клавишного ввода (они уже сидели в закрытой машинной зоне, куда никого постороннего не пускали). Операторы ввода печатали программы с наших бланков руками на клавиатуре перфоратора. 

К утру следующего дня в твою ячейку картотеки возвращали бланки с текстом, а вместе с ними колоду перфокарт, с пробитыми дырочками. Нужно сказать, что операторы (точнее операторши) ввода были профессионально-мстительны. Стоило лишь чуть-чуть неаккуратно написать на бланке какой-то символ, как они обязательно, старательно, пропечатывали на его месте другую, ошибочную букву, даже если сами по смыслу текста отлично догадывались, что там на самом деле должно быть напечатано. Ведь не идиотки, же, грамотные девушки, слова из букв умеют самостоятельно составлять! А вот вам, профессиональная аберрация: раз позволяете себе неаккуратный почерк, значит, из принципа, получите на выходе бракованную колоду перфокарт. Чтобы в следующий раз неповадно было как курица лапой писать или прописные буквы вместо заглавных печатных использовать! Никаких скидок на школьный возраст.

Полученную колоду перфокарт нужно было проверить на правильность пробивки. Можно и не проверять, конечно, но предварительная проверка могла в будущем сильно сэкономить время на поиск ошибок. В начало и конец колоды подкладывали несколько дополнительных перфокарт, которые определяли способ запуска программы в пакетной очереди. Часто эти дополнительные карты были одинаковы для разных программ - их просто перекладывали из предыдущей колоды в новую. Затем колоду перевязывали, чтобы карты не рассыпались и не путались. Обычно, для перевязки использовали не верёвочку, а резинку от трусов - так нивелировалась переменная толщина колоды. Чтобы перфокарты (тонкий картон) не гнулись от действия тугой резинки, с двух сторон колоду обкладывали твёрдыми пластмассовыми "щёчками" - их дома самостоятельно выпиливали лобзиком по размеру перфокарты, из фанеры или текстолита, что уж находилось...

Собранную колоду перфокарт складывали "на выполнение" в свободную ячейку другой картотеки перед входом в машинный зал. А на утро следующего рабочего дня забирали из этой ячейки свою колоду с результатом работы - распечаткой на бумаге. Кстати, во времена БЭСМ-6 термин "принтер" для устройства распечатки текста у нас не применялся. Эта штуковина называлась АЦПУ (Алфавитно-Цифровое Печатающее Устройство), размером оно было с приличный комод (или целых два комода), грохотало, как слегка поломанный тяжёлый танк, жрало с огромной скоростью и в невероятных количествах ленту широкоформатных бумажных листов, с перфорацией (для равномерной протяжки бумаги) по бокам. Сами листы отделялись в ленте один от другого тоже перфорацией, поперечной и мелкой, как на рулоне туалетной бумаги.

До сих пор не могу забыть то невероятно острое чувство стыда, когда я пришёл забирать результаты прогона своей очередной учебной программы и обнаружил, что моя ячейка в картотеке пуста. Но тут же открылась дверь машинного зала, начальник дежурной смены обслуживания БЭСМ торжественно подошёл ко мне, держа в руках огромную стопку листов бумаги формата А3, сплошь испечатанную бесконечными строчками нулей: "Вот результат, выданный твоей программой! Это мы бесконечный цикл ещё по времени выполнения прервали, а то и больше могла бы напечатать". Пачка бумаги весила, кажется, немногим меньше 10 кг. Я буквально готов был "провалиться в ад", а вокруг стояли сотрудники института (большинство незнакомые), аплодировали. и, улыбаясь. поздравляли меня с установлением очередного месячного рекорда по бесполезному расходу бумаги. Никогда больше я не позволял себ...


- Ёж, ты кажется опять слишком увлёкся! Что там про Алгол-60? Что там про любовь, была или нет?

- Вот чёрт! Шеркало! Умеешь же прервать меня на самом интересном месте!

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

- Чёрт, чёрт! Про какой ещё Алгол-60? Про какую ещё любовь?! Ах, да, там в заголовке текста так написано... Ладно, так и быть. Была у меня любовь к Алголу-60, была не спорю. Но она... самоликвидировалась, вот!

- Чтоооо?!

- Считай, что это была не любовь, а юношеская влюблённость. Мне действительно весь первый год моей учёбы (9-й класс школы) очень нравился Алгол. Изящный, быстрый, структурный. Да к тому же и "ты у меня ПЕРВЫЙ" (ну, почти первый). Но постепенно я начинал изучать (большей частью самостоятельно и по своей собственной инициативе) другие языки программирования. И тут-то моя любовь к Алголу начала так же постепенно меркнуть. Впрочем, об этом в следующем рассказике.

- Эй, стой! Ты хоть пример программы на Алголе-60 здесь выложи! По традиции, а?

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

Комментариев нет:

Отправить комментарий