Сегодня человек, сидящий за клавиатурой персонального компьютера, правильно
делает, если не ломает себе голову над вопросом, поставленном в заголовке. Ему
надо выполнять текущую работу или получать наслаждение от интересной игрушки,
или погружаться в дебри интернетовской паутины, или разглядывать цифровые
фотографии... Интересного и полезного - море, а возможностей еще больше. Думать
о том, что было на заре компьютерной эры в это время так же нелепо, как если бы
хозяйка, гладящая белье программируемым утюгом "Tefal", пыталась представить
себе свою прабабушку, разглаживающую свадебное платье чугунным утюжком, набитым
раскаленными древесными угольками. Но представим себе, что за клавиатурой сидит
не просто пользователь ПК, а программист, и не просто программист, а
Профессионал с большой буквы. Для него история становления избранной им области
человеческой деятельности не может быть безразличной. Это, прежде всего, важная
часть его общей профессиональной культуры, как, например, история музыки для
серьезного композитора. Но есть и другая важная сторона вопроса. Сегодня она
больше похожа на сказку, но при определенных обстоятельствах, полностью забыв
истоки своей современной технической цивилизации, человечество рискует попасть
в такую ситуацию, которая описана в одном из фантастических рассказов.
В N-м веке компьютеры стали неотъемлемой и всепроникающей частью человеческого бытия - от убаюкивания младенцев до глобального управления экономикой. Конечно, в первую очередь компьютерам было передано всё то, что содержит хоть какие-нибудь расчеты. Знания элементарной арифметики людям стали практически не нужны. Даже в начальных классах ребятишек стали обучать не счету на палочках и не таблице умножения, а умению общаться с карманным компьютером, о принципах работы которого уже никто толком не знал, а кто и знал, то давно позабыл. Людям это стало практически просто не нужно. Ведь даже компьютеры стали производить, тиражировать и совершенствовать сами же компьютеры. Наступила эра компьютерного самовоспроизводства. Всё это для людей от домохозяйки до профессионального ученого стало так же естественно, как воздух или солнечный свет. И тут случилось то, к чему никто из людей не был готов. В один прекрасный момент под действием какого-то неизвестного космического излучения все земные компьютеры разом перестали работать - от школьного калькулятора до сверхмощных межконтинентальных информационных и управляющих систем. Первое трагическое обстоятельство, которое при этом обнаружилось, это то, что практически ни один землянин не был в состоянии вручную выполнить ни одного арифметического действия даже над простейшими числами. Те редкие старцы, которые с трудом смогли вспомнить таблицу умножения, стали на вес золота, как спасители всего человечества от неминуемого возврата в пещерное мракобесие. Мораль ясна - ни при каких обстоятельствах фундаментальные основы самых современных технических достижений человечеству забывать нельзя.
С чего все начиналось
Немного о компьютерной арифметике
Как это ни покажется парадоксальным, но в самой своей основе современные компьютеры ничем не отличаются от своих далеких предков. И те, и другие все арифметические и логические операции выполняли и выполняют в двоичной системе счисления. С первых же шагов электронной вычислительной техники в качестве вспомогательных стали применяться восьмеричная и шестнадцатеричная системы счисления. Они используются для записи программных команд и различных управляющих кодовых комбинаций.
При самом первом знакомстве с арифметическими основами ЭВМ шокирует то обстоятельство, что электронная вычислительная машина (в том числе и суперсовременная), несмотря на свое практически безграничное могущество, сама по-себе не знает ничего, кроме элементарной арифметики, а из арифметических операций может выполнять только одно действие - сложение. И больше ничего! На заре компьютерной эры, когда само слово "ЭВМ" у неспециалистов ассоциировалось с каким-то неземным совершенством, такая мысль просто не укладывалась в голове. На самом деле всё очень просто. Для компьютеров двоичная система была выбрана не случайно - она проще других технически реализуется на электронных триггерах, имеющих два устойчивых состояния: "включен" и "выключен", аналогично обычному выключателю. В двоичной системе счисления одно из них принимается за "1", а другое за "0". Восьмеричная и шестнадцатеричная системы были приняты, как самые ближайшие к двоичной, у которых основание - есть целые степени двойки. А вот как выглядит цепочка от наисложнейших математических задач к единственной операции арифметического сложения: сначала задача из любой сферы человеческих знаний должна получить общую формализованную математическую интерпретацию. При этом специалистам становится ясно, какие математические методы будут использоваться для ее решения. Существующие численные методы позволяют любые операции высшей математики свести к четырем арифметическим действиям. Составляются алгоритм и программа, в которых кроме сложения, вычитания, умножения и деления уже больше нет никаких математических операций. Первый шаг сделан. После ввода программы в компьютер начинает работать его внутреннее аппаратное программное обеспечение. Вычитание заменяется сложением чисел в так называемом обратном коде (поразрядно нули заменяются на единицы и наоборот), умножение сводится к последовательным сложениям и поразрядным сдвигам двоичных кодов, деление превращается в последовательность вычитаний и тех же самых поразрядных сдвигов. Но, вычитания, как мы теперь знаем, заменяется сложением обратных кодов. Вот и всё! Кроме сложений больше ничего не осталось.
Еще одна деталь машинной арифметики, которая нам потребуется в дальнейшем. Все числа внутри компьютера представляются в так называемой нормализованной форме и состоят из мантиссы и порядка со своими знаками "+" и " - ". При этом принято, что первая значащая цифра мантиссы нулем быть не может, то есть десятичная (или двоичная) запятая фиксирована перед первой значащей цифрой числа. Первый знаковый разряд в машинном изображении указывает на знак числа, а второй - на знак порядка нормализованного числа. Например:
В десятичной системе:
Или то же в двоичной системе:
Один двоичный разряд называется "бит". Восемь бит - это "байт", например: 10011011. Килобайт (К) это 1024 байта или соответственно 8192 бита.
Совсем немного о программах
Команды программы на машинном языке записываются в восьмеричной и в шестнадцатеричной системах счисления. В первых ЭВМ прошлого из серии БЭСМ (быстродействующая электронная счетная машина) команды были трёх-адресными, записывались в восьмеричной системе и состояли из кода операции и трех номеров ячеек - адрес первого операнда, адрес второго операнда и адрес результата операции. В ЭВМ прошлого адресуемым элементом была ячейка со своим восьмеричным номером, в которой хранилось либо одно число, либо одна команда, либо одна константа. Например такая запись:
означала, что по команде, находящейся в ячейке памяти с номером 1765, по коду деления 04 нужно взять число из ячейки номер 0455, разделить его на число из ячейки номер 0327, а частное сохранить в ячейке номер 0561.
О технике
В начале 60-х годов, когда ЭВМ (слова "компьютер" тогда не употребляли) стали выпускаться серийно и с большим скрипом применяться в науке и технике, тому поколению, даже весьма "продвинутых" людей, они представлялись чем-то находящимся даже не на грани, а далеко за гранью фантастики. На самом деле так оно и было, ведь ЭВМ пришли на смену электромеханическим счетным приборам, на которых деление одного числа на другое занимало секунд 15-20 и при этом сопровождалось шумом, напоминающим работу отбойного молотка. А сейчас, читая дальше это повествование, те, кто родился лет 20-30 тому назад и с самого начала своего общения с вычислительной техникой окунулся в мир современных персональных компьютеров, будет всё больше и больше удивляться.
Одной из первых довольно удачных отечественных ЭВМ была БЭСМ-2м, выпущенная в первой половине 60-х годов. Вот ее основные технические характеристики: среднее быстродействие около 20 тысяч арифметических операций в секунду; объем оперативной памяти 4К; в качестве внешних накопителей использовались ленточные магнитофоны и магнитные барабаны. Их емкость доходила до нескольких мегабайт, но их использование резко снижало быстродействие программ. Помнится один мой приятель-аспирант решал на этой машине задачи статистического моделирования с применением метода Монте-Карло. Он ввел очередной вариант и запустил программу. Машина стала считать, а он с женой поехал в ГУМ покупать себе новый телевизор. Они выстояли очередь, сделали покупку и привезли ее домой. Когда мой приятель вошел в машинный зал, то увидел, что ЭВМ продолжает крутить его задачу. Прошло еще около часа, когда она выдала результаты варианта. Всего на это машина потратила около пяти часов непрерывной работы. Сегодня это может вызвать улыбку, а тогда мы ради спортивного интереса попытались прикинуть, сколько времени на этот вариант ушло бы с применением электромеханических машинок. Вышло, что на это не хватило бы всей жизни моего приятеля. Но вернемся к тогдашней технике.
БЭСМ-2м была ламповой. В общей сложности в ней было около 6000 радиоламп. Электрическая мощность, потребляемая от трехфазной сети, - около 20 кВт. Машина располагалась в специальном машинном зале площадью более 100 кв. м. Работала специальная система охлаждения радиоламп, которая сама имела мощность около 5 кВт. Четыре магнитных барабана внешней памяти располагались на специальных бетонных фундаментах в отдельном помещении, так как при работе издавали шум, как в механическом цехе завода. Барабан памяти представлял собой стальной массивный цилиндр диаметром около полуметра и примерно такой же длины, покрытый по боковой поверхности тонким магнитным слоем. Вращался он со скоростью 3000 оборотов в минуту специальным соосным с ним двигателем мощностью 0,5 кВт. Емкость памяти такого барабана была около одного мБ. Информация с барабана считывалась специальными магнитными головками.
Вскоре на смену БЭСМ-2м пришла БЭСМ-4. Основные ее системные устройства были на транзисторах. Она занимала вдвое меньше площади и потребляла меньше электроэнергии, а по характеристикам была практически такой же, как и ее предшественница. Арифметическое устройство, оперативная память и устройства управления размещались в трех шкафах каждый размером примерно с трехстворчатый платяной гардероб. В них была вся транзисторная электроника. БЭСМ-4 была одной из самых удачных ЭВМ тех времен. По сравнению с ламповой БЭСМ-2м она была значительно надежней. Но отказы всё же случались. Как-то раз я заглянул в маленький кабинетик дежурного электронщика (машина работала круглые сутки без выключений в течение года). Дежурила молоденькая выпускница МИФИ Света. Она сидела за маленьким столиком и читала книжку. Рядом с ней на полу лежала увесистая деревянная кувалда. - Вы ею чините машину? - пошутил я. Света улыбнулась и серьезно сказала: - Иногда бывают сбои в электронике, конкретные места и причины которых находить очень сложно и долго. По инструкции в таких случаях мы слегка простукиваем кувалдочкой электронные шкафы, даже не открывая их. Очень часто это помогает, так как сбои, как правило, происходят из-за нарушения контакта в разъемах межблочных кабелей.
БЭСМ-4 выдержала испытание временем. В течение почти 15 лет она была одной из самых популярных ЭВМ в докомпьютерную эпоху.
О людях + ЭВМ
С начала 60-х годов в течение 10-12 лет основным способом программирования на ЭВМ были машинные коды, то есть команды программы записывались в виде (3). Общение с машиной для человека было крайне не комфортным, ведь нужно было знать назубок, как минимум, двоичную и восьмеричную системы счисления. Вывод результатов происходил на бумажную рулонную ленту шириной 75 миллиметров в форме (2). Ввод программ и данных в ЭВМ чаще всего осуществлялся с помощью перфокарт:
Перфокарта из реальной программы
Каждая перфокарта имела 12 строк и 80 колонок, так что на ней можно было записать дюжину 80-ти разрядных двоичных кодовых комбинаций. С помощью специальных перфораторов на перфокарту наносились просечки в форме прямоугольных отверстий. Наличие просечки в данном разряде означало двоичную единицу, а ее отсутствие - двоичный ноль. На каждой перфокарте записывались либо только команды программы, либо десятичные числа, либо восьмеричные вспомогательные константы, если они были нужны для работы прграммы. В колоде на каждой карте проставлялся ее порядковый номер. Ввод перфокарт в ЭВМ должен был производиться в строгой последовательности. Перед программированием программист должен был сделать распределение оперативной памяти, разбив ее на зоны. В каждой зоне могли размещаться либо только команды, либо только числа, либо только константы. Сделанное распределение должно было соблюдаться при программировании и отладке программы и фиксировалось в специальной ведомости распределения памяти.
При работе на ЭВМ программист сидел за пультом, который напоминал пульт управления электростанцией средней мощности. На многочисленных табло мигали сотни неоновых лампочек, представляя всю информацию, вводимую и выводимую из машины, в двоичной и восьмеричной системах. Под руками программиста было такое же число клавишных регистров для ввода информации в ЭВМ в тех же системах счисления. Для общения человека с ЭВМ десятичная система не использовалась вообще. ЭВМ первых и последующих поколений в доперсональный период размещались в специальных вычислительных центрах (а не на рабочем столе пользователя, как сегодня). Доступ к работе на ВЦ имели специалисты-программисты, инженеры-электронщики и программисты-предметники, то есть те инженеры и научные работники, которые овладели искусством программирования. Для последних никаких специальных разрешений не требовалось. Нужно было только заранее заказать необходимое машинное время, которое распределялось в течение всех суток и могло быть выделено не только по желанию заказчика, но и по фактической загрузке ЭВМ в любое время суток. Те, кто вошел во вкус и без ЭВМ не представлял своей работы, соглашались даже на ночное машинное время.
Надо представить себе ту непростую ситуацию, которая сложилась в то время. Люди неофициально разделились на несколько категорий. Специалистов-электронщиков по эксплуатации ЭВМ в Москве выпускали только МИФИ, МФТИ и МИРЭА в очень небольшом количестве. Они были на вес золота, получали большие зарплаты, ходили на работе в белых халатах, выглядели недоступно и всем остальным сотрудникам казались богами. Они были на редкость немногословны. Профессиональные разговоры могли поддержать только они же сами. А с остальными людьми говорить было просто не о чем, да и не охота. Подавляющее большинство авторитетных в своем деле научных сотрудников и инженеров заговаривать с ними побаивались, чтобы не сойти за идиотов.
Ко второй группе людей относились программисты. Их не выпускал ни один ВУЗ страны. Известная поговорка "Солдатами не рождаются, солдатами становятся" для программистов скорее выглядела так: "Программистом надо родиться". Те, кому программирование в машинных кодах давалось легче всего, были математики, выпускники мехмата МГУ или педагогических ВУЗ-ов. Обучались программированию либо друг у друга, либо на импровизированных курсах, где преподавал один из них, освоивший это искусство по прилагаемой к ЭВМ документации или вообще неизвестно где. Ответом на вопрос, откуда он так много знает, обычно была загадочная улыбка. Эти люди становились штатными программистами при ЭВМ. Они, как и электронщики, имели большие оклады, тоже ходили на работе в белых халатах, но были более словоохотливы, так как среди программистов были практически одни женщины. Они всем, как и электронщики, тоже казались богинями, но более приземленными, потому что в обеденный перерыв, как и обычные сотрудницы, ходили с сумками по магазинам.
Третья категория людей, к которой с полным правом относит себя и автор этих строк, была самая романтическая. Это были те, кто несколько лет назад получил высшее образование, не имеющее никакого отношения к ЭВМ, и решили по собственной инициативе освоить мудреное искусство программирования. Когда они учились в институтах, подавляющему большинству их преподавателей буквосочетание "ЭВМ" надо было расшифровывать. Подавляющее большинство даже маститых специалистов старшего поколения об электронных вычислительных мащинах поговаривали с опаской. Еще в умах не стерлась формулировка Большой Советской Энциклопедии выпуска 1937 года, где черным по белому было написано, что кибернетика это буржуазная лженаука. Там же было написано о том, что все разговоры о возможности создания электронных машин, способных заменить человеческий мозг, нужно в корне пресекать, как антинаучную политическую провокацию, как попытку принизить человеческий разум, как враждебную агитацию, льющую воду на мельницу международного империализма. Забегая вперед, нетрудно понять, почему сегодня мы оказались с вычислительной техникой в таком незавидном, зависимом от Запада и Востока положении. Но вернемся к третьей категории людей. Эта категория самая загадочная, по крайней мере, на первый взгляд. Почему? Потому что для понимания тех стимулов, которые ими руководили на пути в программирование, надо прочитать то, что написано ниже.
Во-первых 99 процентов людей из третьей категории были аспирантами. В те годы развитого социализма о деньгах можно было только думать, говорить вслух было просто неприлично и можно даже было попасть в черные списки. Все должны были говорить, что они работают не ради денег, а во имя процветания своей Родины. Сегодня мы начинаем понимать истинную ценность такого мировоззрения. Так или иначе, но аспиранты того времени делились на прагматиков (большинство) и романтиков (меньшинство). Ваш, читатель, покорный слуга относился к последним. У прагматиков была единственная цель - по-быстрому защититься и получить оклад вдвое превышающий инженерный. Самостоятельное изучение программирования (тем более, в машинных кодах) в их стратегию не вписывалось. Своей цели они могли достичь и без этого нудного занятия. У романтиков цель повышения своего материального благосостояния, конечно, тоже была на первом месте. Но рядом с ней на том же месте (ведь они романтики!) стояла и другая не менее важная лично для них задача - выбрать такую тему диссертации, разработать которую без применения ЭВМ было бы просто невозможно в принципе. Это щекотало самолюбие, делало выполненную с применение ЭВМ работу особо ценной и оригинальной, что, в конечном итоге, облегчало защиту диссертации. Но главное - позволяло реализовать тот необъяснимый программистский синдром, который каким-то чудом был заложен в них от природы. Ни один из аспирантов-романтиков не согласился бы на предложение защититься в два раза быстрее, но без применения в своей работе ЭВМ. В этом отношении я оказался классическим примером. Вместо того, чтобы рвать землю зубами, для оформления почти готовой диссертации, я поменял тему и по направлению оказался на двухгодичных курсах в МИФИ по освоению программирования и вычислительной математики. Защита прошла на "ура", хоть и на два года позже. Потом о потраченном времени ни разу не пожалел и на 15 лет сделался единственным в своем отделе специалистом-посредником между жаждущими острых ощущений от решенных машинными методами задач сотрудниками и ЭВМ БЭСМ-4, моей в то время щедрой кормилицей. Чувство самоудовлетворения от собственной значимости и востребованности сработало сполна. Кстати, о посредниках.
Страшное это было время - программирование в машинных кодах. Помимо необходимости приобретения специальных познаний, сама работа по подготовке программы и данных, и непосредственное общение с ЭВМ в процессе бесконечных отладок и усовершенствований собственной программы для большинства были сущей каторгой. А для романтиков - хоть и сладкой, но всё же пыткой. Прагматики поступали проще: они отдавали алгоритм своей задачи штатному программисту и ждали получения результатов. Но использование такого посредника было эффективно только, когда задача не была слишком сложной, а главное не была поисковой, допускала прямое и однопроходное решение и не требовала постоянного интерактивного диалога с машиной. Но именно поисковые задачи всегда и были основой любой аспирантской работы. Поэтому прагматики искали обходные пути без обращения к ЭВМ, а романтики шли напролом, делая из себя программистов. Другого пути просто не было. Практика показывала, что любая попытка диалога предметника с профессиональным программистом приводила чаще всего к глубокому взаимонепониманию и заканчивалась в лучшем случае ничем, а в худшем - непродуктивной нервотрепкой и скандалом. Это естественно, ведь специалисту-предметнику легче освоить программирование в нужном для него объеме и обходиться в дальнейшем без посредников, чем профессиональному программисту всякий раз проникать в специфику самых разных прикладных задач. Так или иначе, но в конце 60-х годов пыткам машинными кодами наступил конец.
Путь к спасению
Однажды, придя утром на работу, я застал нескольких коллег-романтиков, разглядывающих какую-то небольшую книжонку, лежащую на столе у нашего шефа. Книжонка имела странное название: "Программирующие программы". Потом шеф собрал всех лабораторных романтиков у себя в кабинете и торжественно объявил о начале новой эпохи. Оказывается в Америке изобрели "Ассемблер", так называемый макроязык программирования. Теперь для того, чтобы, например, определить модуль числа Х, не надо писать несколько команд в машинных кодах, а достаточно дать команду: ABS (X) и специальная программа-компилятор превратит ее в понятные для ЭВМ машинные коды. Мы поняли, что появился первый посредник между человеческим и машинным языками, который никому не будет закатывать истерик. Потом всё пошло, как по маслу. Стали, как грибы после дождя, появляться алгоритмические языки высокого уровня: АЛГОЛ, КОБОЛ, ФОРТРАН, БЭЙСИК, PL и т.д, и т. п. Жить стало легче и веселее. Но, что значит сила привычки! Помниться я долго не мог найти в себе сил перейти на АЛГОЛ. Жалко было расставаться с машинными кодами. Но жизнь взяла свое. Потом приходилось много раз переучиваться с одного языка на другой. В середине 70-х появилась новая концепция ЕС ЭВМ, потом всё это перекрыли современные ПК и всё то, что с ними связано. Началась новая компьютерная и микропроцессорная эпоха.
Я отношусь к тем, кому волею судьбы довелось пройти весь путь от машинных кодов до WINDOWS. С трудом умещается в голове, что мой старенький 486-й, стоящий на письменном столе, по своим возможностям вмещает в себя несколько десятков таких машин, как БЭСМ-4. С ностальгией вспоминаю как в конце 1969 года мы вдвоем с моим коллегой из вычислительного центра тащили за ручки огромную спортивную сумку весом под 10 килограммов, в которой лежали перфокарты с информацией и программой по нашей задаче оптимизации одного технологического процесса. Помнится, перфокарт было несколько тысяч.
Немного о людях
С самого начала компьютерной эры каждому ее этапу сопутствовали и свои человеческие отношения. О некоторых их особенностях интересно, а может быть, и в чем-то полезно вспомнить.
В конце 50-х годов ЭВМ воочию видели считанные единицы узких специалистов, но слухи о их существовании уже проникли в интеллектуальные слои общества. Эти слои в своем отношении к ЭВМ немедленно разделились, условно говоря, на следующие категории: оптимисты, пессимисты, враги и безразличные (не определившиеся). О последних говорить не будем. Первые три категории придерживались экстремальных точек зрения. Оптимисты (зачастую даже фанатики) считали, что эти произведения человеческого разума могут всё, в том числе и стать заменой (если не более!) самого человеческого интеллекта. Пессимисты наоборот - были уверены, что у ЭВМ возможностей не больше, чем у обычных конторских счет, а разница между ними только в элементной базе и скорости счета. Враги, как им и подобает, занимали воинствующую антикомпьютерную позицию. При слове "ЭВМ" они впадали в тихую, но плохо скрываемую ярость, а оптимистов вычеркивали из списка своих знакомых.
Сегодня источники и причины взглядов на грядущую компьютерную эпоху каждой из этих трех категорий понятны и легко объяснимы. Но тогда всё было загадочно и таинственно. Если враги старались держаться в стороне от открытых дискуссий, то оптимисты с пессимистами периодически мерялись силами на симпозиумах под обобщенным вопрошающим девизом: "Может ли машина мыслить?" Такие интеллектуальные баталии проходили на всех уровнях - от тесных комнитушек при ЖКО до просторных аудиторий МГУ. Дважды мне довелось поприсутствовать в качестве пассивного наблюдателя на подобных мероприятиях, которые проводились во Дворце культуры МИИТ-а, где я в то время учился на втором курсе. Оба раза свободных мест не было, люди стояли в проходах и у стен. Сначала на сцене старались друг друга переубедить заранее подготовленные представители оптимистов и пессимистов. Сидя в одном из ближайших к сцене рядов, я почти (а, строго говоря, полностью) ничего не понимал из того, о чем говорили выступающие. Помнится, со сцены часто звучало мало кому понятное в то время слово "кибернетика" и уж совсем никому не знакомые имена Норберта Винера и Клода Шеннона. Потом к дискуссии присоединялись отважные из зала. Даже сам факт выхода на трибуну автоматически в глазах остальных сослуживцев причислял смельчака к разряду незаурядных интеллектуалов. Эти и другие подобные дискуссии всегда заканчивались ничем. Ответ на поставленный вопрос пришел сам собой в 60-е годы, когда стали появляться серийные ЭВМ. Теоретическую базу подвел в своих научно-популярных трудах уже известный в то время молодой академик В. М. Глушков из Киевского института кибернетики. Один интересный момент: в то время, как у нас никак не могли разобраться с вопросом "Может ли машина мыслить?", в Америке и Японии уже начинали разрабатывать микромодульную элементную базу для ЭВМ, создавались языки программирования высокого уровня, шло интенсивное обучение специалистов по электронной вычислительной технике. Комментарии, как говорится, излишни!
Особый интерес представляет третья категория людей - враги. Прежде всего, уже тогда возникал вопрос: "Откуда у этих людей, как правило, высоко интеллектуальных, такая лютая ненависть к еще только зарождающейся цифровой электронной вычислительной технике?" Я расскажу один эпизод из своего собственного опыта, и всё станет ясно.
В середине 60-х годов я работал после института молодым инженером в одном из московских отраслевых научно-исследовательских институтов. Я, следуя своим внутренним устремлениям, выбрал лабораторию "Электрических и гидравлических аналогий", которой руководил уже не молодой и очень талантливый профессор Виктор Сергеевич Луков. Он был доктором технических наук и лауреатом Сталинской премии за разработку и внедрение так называемого гидравлического интегратора. Это был весьма внушительный размеров уникальный аналоговый вычислительный прибор, позволяющий в докомпьютерную эпоху решать огромные системы сложнейших нелинейных дифференциальных уравнений в частных производных из области термодинамики и теории упругости (так называемые, краевые задачи). Работать на приборе мог человек даже с неполным средним образованием, прошедший небольшую подготовку. Фактически профессор создал новое направление в прикладной математической физике. Через него прошли и успешно защитились многие десятки аспирантов и соискателей. К нему обращались за помощью и консультациями из многих других отечественных и зарубежных НИИ. Луков был человеком с закалкой и манерами старого русского интеллигента, чем вызывал у окружающих искреннее почтение, граничащее с почитанием. Я гордился, что работаю в его лаборатории, попасть туда было не так просто. Наши с ним отношения были вполне нормальными - я считал Лукова богом, а он меня - довольно перспективным молодым специалистом.
Огромная черная кошка пробежала между нами совершенно для меня неожиданно. В 1965 году в нашем институте решили организовать ВЦ и приобрели БЭСМ-4. Чтобы сделать из желающих инженеров людей, владеющих программированием, открыли трехмесячные курсы. Желающих было много, но записаться на них можно было только с разрешения заведующего лабораторией. Из нашей лаборатории я оказался единственным энтузиастом и с радужной уверенностью, что произведу на шефа впечатление энтузиаста, достойного подражания, зашел к нему в кабинет завизировать заявление на курсы. Профессор был один и, сидя за своим необъятным рабочим столом, точил огромным скальпелем толстый красный карандаш, которым от делал критические пометки в нашей писанине. Он деликатно предложил мне присесть и я с радостной младенческой улыбкой пртянул ему свое заявление.
Ознакомившись с его коротеньким содержанием шеф с минуту молчал, глядя куда-то в сторону и машинально поигрывая скальпелем. Его лицо приняло каменное выражение. Мои ожидания бурного восторга с его стороны сменились робким недоумением. Потом профессор посмотрел мне прямо в глаза сквозь свои импортные очки в красивой оправе, и тихо, но выразительно, спросил: "А зачем вам всё это нужно?" Я поперхнулся и от неожиданности, не зная, что говорить, промямлил что-то невразумительное. Тогда профессор твердым голосом, не допускающим возражений, сказал: "Конечно, я могу завизировать заявление, но, если вы будете учиться программированию, то в моей лаборатории работать больше не будете. Я забрал заявление и ушел. Потом по юношеской наивности долго не мог понять реакции своего умнейшего шефа. Меня просветили более опытные мои сослуживцы. Всё оказалось очень просто. В течение многих лет Луков был монополистом в решении краевых задач математической физики. Надвигающаяся компьютерная эпоха эту монополию у него отнимала. Чрезмерное честолюбие избалованного своими успехами профессора было сильнее его самого как ученого. Понятно, что всех настоящих и будущих программистов он рассматривал как своих личных врагов. Вот и всё. Вскоре я стал слушателем МИФИ по кафедре ЭВМ и всё пошло на лад. Луков, хоть и перестал быть монополистом, но его интегратор и в компьютерную эпоху нашел достойное применение в науке. Виктор Сергеевич был моим первым научным наставником. Сейчас его уже давно нет в живых. С первых дней моего знакомства с ним и по сей день я сохранил в себе самое высокое мнение, если не о личных его человеческих качествах, то о бесспорной научной гениальности этого крупного ученого.
Последние шаги к ПК
К началу 70-х годов в СССР уже сложилась отечественная школа электронщиков по ЭВМ и программистов-математиков. Линию БЭСМ-ов вслед за БЭСМ-4 продолжила очень удачная БЭСМ-6 с быстродействием в один миллион операций в секунду. Стали появляться высокоуровневые отечественные языки программирования. Появились обширные наработки в области решения прикладных задач в самых разных отраслях народного хозяйства нашей страны. Но по вполне понятным причинам естественное отставание СССР от США в этих областях было очевидным и нарастающим. Чтобы хоть как-то скачкообразно сократить этот разрыв, кому-то пришла в голову мысль полностью прекратить отечественные разработки и перейти в рамках СЭВ (Совет экономической взаимопомощи) к совместному с соцстранами Восточной Европы освоению выпуска нового поколения ЭВМ, так называемую серию ЕС ЭВМ. За основу была принята неизвестно каким образом полученная техническая и программная документация по американской серии ЭВМ IBM-360, которая к тому времени уже широко использовалась в США. Это стало вторым, после признания кибернетики лженаукой, шагом к еще большему отставанию СССР в области вычислительной техники от мирового уровня. Пока мы осваивали идеологию IBM-360, американцы уже перешли к новому поколению машин IBM-370, а вскоре к IBM-380, по техническому уровню на несколько порядков выше IBM-360. После этого уже к концу 70-х годов даже для неспециалистов стало очевидным, что мы отстали навсегда. И тут нагрянула перестройка, а вместе с ней и персональные компьютеры, которые мгновенно вытеснили своих громоздких предшественниц. Перестройкой не предусматривалось развития отечественной промышленности и науки вообще, а компьютерного производства, как одной из наиболее жизненно важных отраслей - тем более. Мы полностью попали в кабальную компьютерную аппаратную и программную зависимость от Запада и Востока.
Здравствуй, господин ПК !
В начале 90-х годов вместе с перестройкой в стране грянула и перестройка в отечественной компьютеризации на базе зарубежной техники и программного обеспечения. ПК-шки обрушились на нас, как снег на голову. Они быстро сменяли друг друга: 286-й, 386-й, 486-й, Pentium и т.д., и т. д... Несколько слов стоит сказать о психологических аспектах этого начального периода освоения ПК. Как ни странно, но сложнее всех пришлось тем немногим, вроде меня, которые стояли у истоков эпохи ЭВМ и в свое время стали практически профессиональными программистами больших ЭВМ. Гораздо легче было тем, кто свою программистскую карьеру начал сразу на современных ПК. У них не было старых привычек, со временем превратившихся в консерватизм. Помню, какой шок вызвали во мне даже демонстрационные программы на ПК. Программный сервис, казалось бы призванный обеспечивать комфортный диалог оператора с ПК, первое время производил на меня угнетающее впечатление. Мне казалось, что само освоение сервиса сложнее, чем программирование в машинных кодах. К счастью это быстро прошло. Но и до сих пор я не чувствую себя свободно при необходимости обращения к системным средствам ПК. Может быть потому, что на сей раз я оказался в чистом виде самоучкой. Видимо сказалось отсутствие стартового капитала знаний, которые можно было бы получить на курсах. В начале 90-х годов литература по ПК была очень ограничена, а машинные справочные системы сами требовали умелого с ними обращения. До многого приходилось добираться самому. Но к середине 90-х у меня уже было несколько серьезных прикладных программ на языке FoxBase собственного изготовления, нашедших практическое применение на производстве.
Н о с т а л ь г и я
По настоящему оценить что-то можно только, имея возможность сравнения. Гляжу на Note Book размером с небольшой дипломат, с памятью в сотни гигабайт и тактовой частотой в гигагерцы, и вспоминается БЭСМ-2м и 6000 радиоламп, и память в 4 килобайта. А ведь прошло всего каких-то 40 с небольшим лет! Юность моего поколения совпала во времени с юностью электронной вычислительной техники. Теперь и то, и другое кажется таким бесконечно далеким, наивным и почти не реальным. А иной раз покажется, что всё это было вчера... За этот небольшой срок пройден огромный путь. Жаль, что не нами. Что ожидает нас впереди?
А. Лебедев. кандидат технических наук, ветеран труда.
В N-м веке компьютеры стали неотъемлемой и всепроникающей частью человеческого бытия - от убаюкивания младенцев до глобального управления экономикой. Конечно, в первую очередь компьютерам было передано всё то, что содержит хоть какие-нибудь расчеты. Знания элементарной арифметики людям стали практически не нужны. Даже в начальных классах ребятишек стали обучать не счету на палочках и не таблице умножения, а умению общаться с карманным компьютером, о принципах работы которого уже никто толком не знал, а кто и знал, то давно позабыл. Людям это стало практически просто не нужно. Ведь даже компьютеры стали производить, тиражировать и совершенствовать сами же компьютеры. Наступила эра компьютерного самовоспроизводства. Всё это для людей от домохозяйки до профессионального ученого стало так же естественно, как воздух или солнечный свет. И тут случилось то, к чему никто из людей не был готов. В один прекрасный момент под действием какого-то неизвестного космического излучения все земные компьютеры разом перестали работать - от школьного калькулятора до сверхмощных межконтинентальных информационных и управляющих систем. Первое трагическое обстоятельство, которое при этом обнаружилось, это то, что практически ни один землянин не был в состоянии вручную выполнить ни одного арифметического действия даже над простейшими числами. Те редкие старцы, которые с трудом смогли вспомнить таблицу умножения, стали на вес золота, как спасители всего человечества от неминуемого возврата в пещерное мракобесие. Мораль ясна - ни при каких обстоятельствах фундаментальные основы самых современных технических достижений человечеству забывать нельзя.
С чего все начиналось
Немного о компьютерной арифметике
Как это ни покажется парадоксальным, но в самой своей основе современные компьютеры ничем не отличаются от своих далеких предков. И те, и другие все арифметические и логические операции выполняли и выполняют в двоичной системе счисления. С первых же шагов электронной вычислительной техники в качестве вспомогательных стали применяться восьмеричная и шестнадцатеричная системы счисления. Они используются для записи программных команд и различных управляющих кодовых комбинаций.
При самом первом знакомстве с арифметическими основами ЭВМ шокирует то обстоятельство, что электронная вычислительная машина (в том числе и суперсовременная), несмотря на свое практически безграничное могущество, сама по-себе не знает ничего, кроме элементарной арифметики, а из арифметических операций может выполнять только одно действие - сложение. И больше ничего! На заре компьютерной эры, когда само слово "ЭВМ" у неспециалистов ассоциировалось с каким-то неземным совершенством, такая мысль просто не укладывалась в голове. На самом деле всё очень просто. Для компьютеров двоичная система была выбрана не случайно - она проще других технически реализуется на электронных триггерах, имеющих два устойчивых состояния: "включен" и "выключен", аналогично обычному выключателю. В двоичной системе счисления одно из них принимается за "1", а другое за "0". Восьмеричная и шестнадцатеричная системы были приняты, как самые ближайшие к двоичной, у которых основание - есть целые степени двойки. А вот как выглядит цепочка от наисложнейших математических задач к единственной операции арифметического сложения: сначала задача из любой сферы человеческих знаний должна получить общую формализованную математическую интерпретацию. При этом специалистам становится ясно, какие математические методы будут использоваться для ее решения. Существующие численные методы позволяют любые операции высшей математики свести к четырем арифметическим действиям. Составляются алгоритм и программа, в которых кроме сложения, вычитания, умножения и деления уже больше нет никаких математических операций. Первый шаг сделан. После ввода программы в компьютер начинает работать его внутреннее аппаратное программное обеспечение. Вычитание заменяется сложением чисел в так называемом обратном коде (поразрядно нули заменяются на единицы и наоборот), умножение сводится к последовательным сложениям и поразрядным сдвигам двоичных кодов, деление превращается в последовательность вычитаний и тех же самых поразрядных сдвигов. Но, вычитания, как мы теперь знаем, заменяется сложением обратных кодов. Вот и всё! Кроме сложений больше ничего не осталось.
Еще одна деталь машинной арифметики, которая нам потребуется в дальнейшем. Все числа внутри компьютера представляются в так называемой нормализованной форме и состоят из мантиссы и порядка со своими знаками "+" и " - ". При этом принято, что первая значащая цифра мантиссы нулем быть не может, то есть десятичная (или двоичная) запятая фиксирована перед первой значащей цифрой числа. Первый знаковый разряд в машинном изображении указывает на знак числа, а второй - на знак порядка нормализованного числа. Например:
В десятичной системе:
253 это: + + 03 253 - 871 это - + 03 871 - 0,007 это - - 02 7
Или то же в двоичной системе:
253 это + + 11 1111101 - 871 это - + 11 1101100111 - 0,007 это - - 01 111
Один двоичный разряд называется "бит". Восемь бит - это "байт", например: 10011011. Килобайт (К) это 1024 байта или соответственно 8192 бита.
Совсем немного о программах
Команды программы на машинном языке записываются в восьмеричной и в шестнадцатеричной системах счисления. В первых ЭВМ прошлого из серии БЭСМ (быстродействующая электронная счетная машина) команды были трёх-адресными, записывались в восьмеричной системе и состояли из кода операции и трех номеров ячеек - адрес первого операнда, адрес второго операнда и адрес результата операции. В ЭВМ прошлого адресуемым элементом была ячейка со своим восьмеричным номером, в которой хранилось либо одно число, либо одна команда, либо одна константа. Например такая запись:
1765 04 0455 0327 0561
означала, что по команде, находящейся в ячейке памяти с номером 1765, по коду деления 04 нужно взять число из ячейки номер 0455, разделить его на число из ячейки номер 0327, а частное сохранить в ячейке номер 0561.
О технике
В начале 60-х годов, когда ЭВМ (слова "компьютер" тогда не употребляли) стали выпускаться серийно и с большим скрипом применяться в науке и технике, тому поколению, даже весьма "продвинутых" людей, они представлялись чем-то находящимся даже не на грани, а далеко за гранью фантастики. На самом деле так оно и было, ведь ЭВМ пришли на смену электромеханическим счетным приборам, на которых деление одного числа на другое занимало секунд 15-20 и при этом сопровождалось шумом, напоминающим работу отбойного молотка. А сейчас, читая дальше это повествование, те, кто родился лет 20-30 тому назад и с самого начала своего общения с вычислительной техникой окунулся в мир современных персональных компьютеров, будет всё больше и больше удивляться.
Одной из первых довольно удачных отечественных ЭВМ была БЭСМ-2м, выпущенная в первой половине 60-х годов. Вот ее основные технические характеристики: среднее быстродействие около 20 тысяч арифметических операций в секунду; объем оперативной памяти 4К; в качестве внешних накопителей использовались ленточные магнитофоны и магнитные барабаны. Их емкость доходила до нескольких мегабайт, но их использование резко снижало быстродействие программ. Помнится один мой приятель-аспирант решал на этой машине задачи статистического моделирования с применением метода Монте-Карло. Он ввел очередной вариант и запустил программу. Машина стала считать, а он с женой поехал в ГУМ покупать себе новый телевизор. Они выстояли очередь, сделали покупку и привезли ее домой. Когда мой приятель вошел в машинный зал, то увидел, что ЭВМ продолжает крутить его задачу. Прошло еще около часа, когда она выдала результаты варианта. Всего на это машина потратила около пяти часов непрерывной работы. Сегодня это может вызвать улыбку, а тогда мы ради спортивного интереса попытались прикинуть, сколько времени на этот вариант ушло бы с применением электромеханических машинок. Вышло, что на это не хватило бы всей жизни моего приятеля. Но вернемся к тогдашней технике.
БЭСМ-2м была ламповой. В общей сложности в ней было около 6000 радиоламп. Электрическая мощность, потребляемая от трехфазной сети, - около 20 кВт. Машина располагалась в специальном машинном зале площадью более 100 кв. м. Работала специальная система охлаждения радиоламп, которая сама имела мощность около 5 кВт. Четыре магнитных барабана внешней памяти располагались на специальных бетонных фундаментах в отдельном помещении, так как при работе издавали шум, как в механическом цехе завода. Барабан памяти представлял собой стальной массивный цилиндр диаметром около полуметра и примерно такой же длины, покрытый по боковой поверхности тонким магнитным слоем. Вращался он со скоростью 3000 оборотов в минуту специальным соосным с ним двигателем мощностью 0,5 кВт. Емкость памяти такого барабана была около одного мБ. Информация с барабана считывалась специальными магнитными головками.
Вскоре на смену БЭСМ-2м пришла БЭСМ-4. Основные ее системные устройства были на транзисторах. Она занимала вдвое меньше площади и потребляла меньше электроэнергии, а по характеристикам была практически такой же, как и ее предшественница. Арифметическое устройство, оперативная память и устройства управления размещались в трех шкафах каждый размером примерно с трехстворчатый платяной гардероб. В них была вся транзисторная электроника. БЭСМ-4 была одной из самых удачных ЭВМ тех времен. По сравнению с ламповой БЭСМ-2м она была значительно надежней. Но отказы всё же случались. Как-то раз я заглянул в маленький кабинетик дежурного электронщика (машина работала круглые сутки без выключений в течение года). Дежурила молоденькая выпускница МИФИ Света. Она сидела за маленьким столиком и читала книжку. Рядом с ней на полу лежала увесистая деревянная кувалда. - Вы ею чините машину? - пошутил я. Света улыбнулась и серьезно сказала: - Иногда бывают сбои в электронике, конкретные места и причины которых находить очень сложно и долго. По инструкции в таких случаях мы слегка простукиваем кувалдочкой электронные шкафы, даже не открывая их. Очень часто это помогает, так как сбои, как правило, происходят из-за нарушения контакта в разъемах межблочных кабелей.
БЭСМ-4 выдержала испытание временем. В течение почти 15 лет она была одной из самых популярных ЭВМ в докомпьютерную эпоху.
О людях + ЭВМ
С начала 60-х годов в течение 10-12 лет основным способом программирования на ЭВМ были машинные коды, то есть команды программы записывались в виде (3). Общение с машиной для человека было крайне не комфортным, ведь нужно было знать назубок, как минимум, двоичную и восьмеричную системы счисления. Вывод результатов происходил на бумажную рулонную ленту шириной 75 миллиметров в форме (2). Ввод программ и данных в ЭВМ чаще всего осуществлялся с помощью перфокарт:
Каждая перфокарта имела 12 строк и 80 колонок, так что на ней можно было записать дюжину 80-ти разрядных двоичных кодовых комбинаций. С помощью специальных перфораторов на перфокарту наносились просечки в форме прямоугольных отверстий. Наличие просечки в данном разряде означало двоичную единицу, а ее отсутствие - двоичный ноль. На каждой перфокарте записывались либо только команды программы, либо десятичные числа, либо восьмеричные вспомогательные константы, если они были нужны для работы прграммы. В колоде на каждой карте проставлялся ее порядковый номер. Ввод перфокарт в ЭВМ должен был производиться в строгой последовательности. Перед программированием программист должен был сделать распределение оперативной памяти, разбив ее на зоны. В каждой зоне могли размещаться либо только команды, либо только числа, либо только константы. Сделанное распределение должно было соблюдаться при программировании и отладке программы и фиксировалось в специальной ведомости распределения памяти.
При работе на ЭВМ программист сидел за пультом, который напоминал пульт управления электростанцией средней мощности. На многочисленных табло мигали сотни неоновых лампочек, представляя всю информацию, вводимую и выводимую из машины, в двоичной и восьмеричной системах. Под руками программиста было такое же число клавишных регистров для ввода информации в ЭВМ в тех же системах счисления. Для общения человека с ЭВМ десятичная система не использовалась вообще. ЭВМ первых и последующих поколений в доперсональный период размещались в специальных вычислительных центрах (а не на рабочем столе пользователя, как сегодня). Доступ к работе на ВЦ имели специалисты-программисты, инженеры-электронщики и программисты-предметники, то есть те инженеры и научные работники, которые овладели искусством программирования. Для последних никаких специальных разрешений не требовалось. Нужно было только заранее заказать необходимое машинное время, которое распределялось в течение всех суток и могло быть выделено не только по желанию заказчика, но и по фактической загрузке ЭВМ в любое время суток. Те, кто вошел во вкус и без ЭВМ не представлял своей работы, соглашались даже на ночное машинное время.
Надо представить себе ту непростую ситуацию, которая сложилась в то время. Люди неофициально разделились на несколько категорий. Специалистов-электронщиков по эксплуатации ЭВМ в Москве выпускали только МИФИ, МФТИ и МИРЭА в очень небольшом количестве. Они были на вес золота, получали большие зарплаты, ходили на работе в белых халатах, выглядели недоступно и всем остальным сотрудникам казались богами. Они были на редкость немногословны. Профессиональные разговоры могли поддержать только они же сами. А с остальными людьми говорить было просто не о чем, да и не охота. Подавляющее большинство авторитетных в своем деле научных сотрудников и инженеров заговаривать с ними побаивались, чтобы не сойти за идиотов.
Ко второй группе людей относились программисты. Их не выпускал ни один ВУЗ страны. Известная поговорка "Солдатами не рождаются, солдатами становятся" для программистов скорее выглядела так: "Программистом надо родиться". Те, кому программирование в машинных кодах давалось легче всего, были математики, выпускники мехмата МГУ или педагогических ВУЗ-ов. Обучались программированию либо друг у друга, либо на импровизированных курсах, где преподавал один из них, освоивший это искусство по прилагаемой к ЭВМ документации или вообще неизвестно где. Ответом на вопрос, откуда он так много знает, обычно была загадочная улыбка. Эти люди становились штатными программистами при ЭВМ. Они, как и электронщики, имели большие оклады, тоже ходили на работе в белых халатах, но были более словоохотливы, так как среди программистов были практически одни женщины. Они всем, как и электронщики, тоже казались богинями, но более приземленными, потому что в обеденный перерыв, как и обычные сотрудницы, ходили с сумками по магазинам.
Третья категория людей, к которой с полным правом относит себя и автор этих строк, была самая романтическая. Это были те, кто несколько лет назад получил высшее образование, не имеющее никакого отношения к ЭВМ, и решили по собственной инициативе освоить мудреное искусство программирования. Когда они учились в институтах, подавляющему большинству их преподавателей буквосочетание "ЭВМ" надо было расшифровывать. Подавляющее большинство даже маститых специалистов старшего поколения об электронных вычислительных мащинах поговаривали с опаской. Еще в умах не стерлась формулировка Большой Советской Энциклопедии выпуска 1937 года, где черным по белому было написано, что кибернетика это буржуазная лженаука. Там же было написано о том, что все разговоры о возможности создания электронных машин, способных заменить человеческий мозг, нужно в корне пресекать, как антинаучную политическую провокацию, как попытку принизить человеческий разум, как враждебную агитацию, льющую воду на мельницу международного империализма. Забегая вперед, нетрудно понять, почему сегодня мы оказались с вычислительной техникой в таком незавидном, зависимом от Запада и Востока положении. Но вернемся к третьей категории людей. Эта категория самая загадочная, по крайней мере, на первый взгляд. Почему? Потому что для понимания тех стимулов, которые ими руководили на пути в программирование, надо прочитать то, что написано ниже.
Во-первых 99 процентов людей из третьей категории были аспирантами. В те годы развитого социализма о деньгах можно было только думать, говорить вслух было просто неприлично и можно даже было попасть в черные списки. Все должны были говорить, что они работают не ради денег, а во имя процветания своей Родины. Сегодня мы начинаем понимать истинную ценность такого мировоззрения. Так или иначе, но аспиранты того времени делились на прагматиков (большинство) и романтиков (меньшинство). Ваш, читатель, покорный слуга относился к последним. У прагматиков была единственная цель - по-быстрому защититься и получить оклад вдвое превышающий инженерный. Самостоятельное изучение программирования (тем более, в машинных кодах) в их стратегию не вписывалось. Своей цели они могли достичь и без этого нудного занятия. У романтиков цель повышения своего материального благосостояния, конечно, тоже была на первом месте. Но рядом с ней на том же месте (ведь они романтики!) стояла и другая не менее важная лично для них задача - выбрать такую тему диссертации, разработать которую без применения ЭВМ было бы просто невозможно в принципе. Это щекотало самолюбие, делало выполненную с применение ЭВМ работу особо ценной и оригинальной, что, в конечном итоге, облегчало защиту диссертации. Но главное - позволяло реализовать тот необъяснимый программистский синдром, который каким-то чудом был заложен в них от природы. Ни один из аспирантов-романтиков не согласился бы на предложение защититься в два раза быстрее, но без применения в своей работе ЭВМ. В этом отношении я оказался классическим примером. Вместо того, чтобы рвать землю зубами, для оформления почти готовой диссертации, я поменял тему и по направлению оказался на двухгодичных курсах в МИФИ по освоению программирования и вычислительной математики. Защита прошла на "ура", хоть и на два года позже. Потом о потраченном времени ни разу не пожалел и на 15 лет сделался единственным в своем отделе специалистом-посредником между жаждущими острых ощущений от решенных машинными методами задач сотрудниками и ЭВМ БЭСМ-4, моей в то время щедрой кормилицей. Чувство самоудовлетворения от собственной значимости и востребованности сработало сполна. Кстати, о посредниках.
Страшное это было время - программирование в машинных кодах. Помимо необходимости приобретения специальных познаний, сама работа по подготовке программы и данных, и непосредственное общение с ЭВМ в процессе бесконечных отладок и усовершенствований собственной программы для большинства были сущей каторгой. А для романтиков - хоть и сладкой, но всё же пыткой. Прагматики поступали проще: они отдавали алгоритм своей задачи штатному программисту и ждали получения результатов. Но использование такого посредника было эффективно только, когда задача не была слишком сложной, а главное не была поисковой, допускала прямое и однопроходное решение и не требовала постоянного интерактивного диалога с машиной. Но именно поисковые задачи всегда и были основой любой аспирантской работы. Поэтому прагматики искали обходные пути без обращения к ЭВМ, а романтики шли напролом, делая из себя программистов. Другого пути просто не было. Практика показывала, что любая попытка диалога предметника с профессиональным программистом приводила чаще всего к глубокому взаимонепониманию и заканчивалась в лучшем случае ничем, а в худшем - непродуктивной нервотрепкой и скандалом. Это естественно, ведь специалисту-предметнику легче освоить программирование в нужном для него объеме и обходиться в дальнейшем без посредников, чем профессиональному программисту всякий раз проникать в специфику самых разных прикладных задач. Так или иначе, но в конце 60-х годов пыткам машинными кодами наступил конец.
Путь к спасению
Однажды, придя утром на работу, я застал нескольких коллег-романтиков, разглядывающих какую-то небольшую книжонку, лежащую на столе у нашего шефа. Книжонка имела странное название: "Программирующие программы". Потом шеф собрал всех лабораторных романтиков у себя в кабинете и торжественно объявил о начале новой эпохи. Оказывается в Америке изобрели "Ассемблер", так называемый макроязык программирования. Теперь для того, чтобы, например, определить модуль числа Х, не надо писать несколько команд в машинных кодах, а достаточно дать команду: ABS (X) и специальная программа-компилятор превратит ее в понятные для ЭВМ машинные коды. Мы поняли, что появился первый посредник между человеческим и машинным языками, который никому не будет закатывать истерик. Потом всё пошло, как по маслу. Стали, как грибы после дождя, появляться алгоритмические языки высокого уровня: АЛГОЛ, КОБОЛ, ФОРТРАН, БЭЙСИК, PL и т.д, и т. п. Жить стало легче и веселее. Но, что значит сила привычки! Помниться я долго не мог найти в себе сил перейти на АЛГОЛ. Жалко было расставаться с машинными кодами. Но жизнь взяла свое. Потом приходилось много раз переучиваться с одного языка на другой. В середине 70-х появилась новая концепция ЕС ЭВМ, потом всё это перекрыли современные ПК и всё то, что с ними связано. Началась новая компьютерная и микропроцессорная эпоха.
Я отношусь к тем, кому волею судьбы довелось пройти весь путь от машинных кодов до WINDOWS. С трудом умещается в голове, что мой старенький 486-й, стоящий на письменном столе, по своим возможностям вмещает в себя несколько десятков таких машин, как БЭСМ-4. С ностальгией вспоминаю как в конце 1969 года мы вдвоем с моим коллегой из вычислительного центра тащили за ручки огромную спортивную сумку весом под 10 килограммов, в которой лежали перфокарты с информацией и программой по нашей задаче оптимизации одного технологического процесса. Помнится, перфокарт было несколько тысяч.
Немного о людях
С самого начала компьютерной эры каждому ее этапу сопутствовали и свои человеческие отношения. О некоторых их особенностях интересно, а может быть, и в чем-то полезно вспомнить.
В конце 50-х годов ЭВМ воочию видели считанные единицы узких специалистов, но слухи о их существовании уже проникли в интеллектуальные слои общества. Эти слои в своем отношении к ЭВМ немедленно разделились, условно говоря, на следующие категории: оптимисты, пессимисты, враги и безразличные (не определившиеся). О последних говорить не будем. Первые три категории придерживались экстремальных точек зрения. Оптимисты (зачастую даже фанатики) считали, что эти произведения человеческого разума могут всё, в том числе и стать заменой (если не более!) самого человеческого интеллекта. Пессимисты наоборот - были уверены, что у ЭВМ возможностей не больше, чем у обычных конторских счет, а разница между ними только в элементной базе и скорости счета. Враги, как им и подобает, занимали воинствующую антикомпьютерную позицию. При слове "ЭВМ" они впадали в тихую, но плохо скрываемую ярость, а оптимистов вычеркивали из списка своих знакомых.
Сегодня источники и причины взглядов на грядущую компьютерную эпоху каждой из этих трех категорий понятны и легко объяснимы. Но тогда всё было загадочно и таинственно. Если враги старались держаться в стороне от открытых дискуссий, то оптимисты с пессимистами периодически мерялись силами на симпозиумах под обобщенным вопрошающим девизом: "Может ли машина мыслить?" Такие интеллектуальные баталии проходили на всех уровнях - от тесных комнитушек при ЖКО до просторных аудиторий МГУ. Дважды мне довелось поприсутствовать в качестве пассивного наблюдателя на подобных мероприятиях, которые проводились во Дворце культуры МИИТ-а, где я в то время учился на втором курсе. Оба раза свободных мест не было, люди стояли в проходах и у стен. Сначала на сцене старались друг друга переубедить заранее подготовленные представители оптимистов и пессимистов. Сидя в одном из ближайших к сцене рядов, я почти (а, строго говоря, полностью) ничего не понимал из того, о чем говорили выступающие. Помнится, со сцены часто звучало мало кому понятное в то время слово "кибернетика" и уж совсем никому не знакомые имена Норберта Винера и Клода Шеннона. Потом к дискуссии присоединялись отважные из зала. Даже сам факт выхода на трибуну автоматически в глазах остальных сослуживцев причислял смельчака к разряду незаурядных интеллектуалов. Эти и другие подобные дискуссии всегда заканчивались ничем. Ответ на поставленный вопрос пришел сам собой в 60-е годы, когда стали появляться серийные ЭВМ. Теоретическую базу подвел в своих научно-популярных трудах уже известный в то время молодой академик В. М. Глушков из Киевского института кибернетики. Один интересный момент: в то время, как у нас никак не могли разобраться с вопросом "Может ли машина мыслить?", в Америке и Японии уже начинали разрабатывать микромодульную элементную базу для ЭВМ, создавались языки программирования высокого уровня, шло интенсивное обучение специалистов по электронной вычислительной технике. Комментарии, как говорится, излишни!
Особый интерес представляет третья категория людей - враги. Прежде всего, уже тогда возникал вопрос: "Откуда у этих людей, как правило, высоко интеллектуальных, такая лютая ненависть к еще только зарождающейся цифровой электронной вычислительной технике?" Я расскажу один эпизод из своего собственного опыта, и всё станет ясно.
В середине 60-х годов я работал после института молодым инженером в одном из московских отраслевых научно-исследовательских институтов. Я, следуя своим внутренним устремлениям, выбрал лабораторию "Электрических и гидравлических аналогий", которой руководил уже не молодой и очень талантливый профессор Виктор Сергеевич Луков. Он был доктором технических наук и лауреатом Сталинской премии за разработку и внедрение так называемого гидравлического интегратора. Это был весьма внушительный размеров уникальный аналоговый вычислительный прибор, позволяющий в докомпьютерную эпоху решать огромные системы сложнейших нелинейных дифференциальных уравнений в частных производных из области термодинамики и теории упругости (так называемые, краевые задачи). Работать на приборе мог человек даже с неполным средним образованием, прошедший небольшую подготовку. Фактически профессор создал новое направление в прикладной математической физике. Через него прошли и успешно защитились многие десятки аспирантов и соискателей. К нему обращались за помощью и консультациями из многих других отечественных и зарубежных НИИ. Луков был человеком с закалкой и манерами старого русского интеллигента, чем вызывал у окружающих искреннее почтение, граничащее с почитанием. Я гордился, что работаю в его лаборатории, попасть туда было не так просто. Наши с ним отношения были вполне нормальными - я считал Лукова богом, а он меня - довольно перспективным молодым специалистом.
Огромная черная кошка пробежала между нами совершенно для меня неожиданно. В 1965 году в нашем институте решили организовать ВЦ и приобрели БЭСМ-4. Чтобы сделать из желающих инженеров людей, владеющих программированием, открыли трехмесячные курсы. Желающих было много, но записаться на них можно было только с разрешения заведующего лабораторией. Из нашей лаборатории я оказался единственным энтузиастом и с радужной уверенностью, что произведу на шефа впечатление энтузиаста, достойного подражания, зашел к нему в кабинет завизировать заявление на курсы. Профессор был один и, сидя за своим необъятным рабочим столом, точил огромным скальпелем толстый красный карандаш, которым от делал критические пометки в нашей писанине. Он деликатно предложил мне присесть и я с радостной младенческой улыбкой пртянул ему свое заявление.
Ознакомившись с его коротеньким содержанием шеф с минуту молчал, глядя куда-то в сторону и машинально поигрывая скальпелем. Его лицо приняло каменное выражение. Мои ожидания бурного восторга с его стороны сменились робким недоумением. Потом профессор посмотрел мне прямо в глаза сквозь свои импортные очки в красивой оправе, и тихо, но выразительно, спросил: "А зачем вам всё это нужно?" Я поперхнулся и от неожиданности, не зная, что говорить, промямлил что-то невразумительное. Тогда профессор твердым голосом, не допускающим возражений, сказал: "Конечно, я могу завизировать заявление, но, если вы будете учиться программированию, то в моей лаборатории работать больше не будете. Я забрал заявление и ушел. Потом по юношеской наивности долго не мог понять реакции своего умнейшего шефа. Меня просветили более опытные мои сослуживцы. Всё оказалось очень просто. В течение многих лет Луков был монополистом в решении краевых задач математической физики. Надвигающаяся компьютерная эпоха эту монополию у него отнимала. Чрезмерное честолюбие избалованного своими успехами профессора было сильнее его самого как ученого. Понятно, что всех настоящих и будущих программистов он рассматривал как своих личных врагов. Вот и всё. Вскоре я стал слушателем МИФИ по кафедре ЭВМ и всё пошло на лад. Луков, хоть и перестал быть монополистом, но его интегратор и в компьютерную эпоху нашел достойное применение в науке. Виктор Сергеевич был моим первым научным наставником. Сейчас его уже давно нет в живых. С первых дней моего знакомства с ним и по сей день я сохранил в себе самое высокое мнение, если не о личных его человеческих качествах, то о бесспорной научной гениальности этого крупного ученого.
Последние шаги к ПК
К началу 70-х годов в СССР уже сложилась отечественная школа электронщиков по ЭВМ и программистов-математиков. Линию БЭСМ-ов вслед за БЭСМ-4 продолжила очень удачная БЭСМ-6 с быстродействием в один миллион операций в секунду. Стали появляться высокоуровневые отечественные языки программирования. Появились обширные наработки в области решения прикладных задач в самых разных отраслях народного хозяйства нашей страны. Но по вполне понятным причинам естественное отставание СССР от США в этих областях было очевидным и нарастающим. Чтобы хоть как-то скачкообразно сократить этот разрыв, кому-то пришла в голову мысль полностью прекратить отечественные разработки и перейти в рамках СЭВ (Совет экономической взаимопомощи) к совместному с соцстранами Восточной Европы освоению выпуска нового поколения ЭВМ, так называемую серию ЕС ЭВМ. За основу была принята неизвестно каким образом полученная техническая и программная документация по американской серии ЭВМ IBM-360, которая к тому времени уже широко использовалась в США. Это стало вторым, после признания кибернетики лженаукой, шагом к еще большему отставанию СССР в области вычислительной техники от мирового уровня. Пока мы осваивали идеологию IBM-360, американцы уже перешли к новому поколению машин IBM-370, а вскоре к IBM-380, по техническому уровню на несколько порядков выше IBM-360. После этого уже к концу 70-х годов даже для неспециалистов стало очевидным, что мы отстали навсегда. И тут нагрянула перестройка, а вместе с ней и персональные компьютеры, которые мгновенно вытеснили своих громоздких предшественниц. Перестройкой не предусматривалось развития отечественной промышленности и науки вообще, а компьютерного производства, как одной из наиболее жизненно важных отраслей - тем более. Мы полностью попали в кабальную компьютерную аппаратную и программную зависимость от Запада и Востока.
Здравствуй, господин ПК !
В начале 90-х годов вместе с перестройкой в стране грянула и перестройка в отечественной компьютеризации на базе зарубежной техники и программного обеспечения. ПК-шки обрушились на нас, как снег на голову. Они быстро сменяли друг друга: 286-й, 386-й, 486-й, Pentium и т.д., и т. д... Несколько слов стоит сказать о психологических аспектах этого начального периода освоения ПК. Как ни странно, но сложнее всех пришлось тем немногим, вроде меня, которые стояли у истоков эпохи ЭВМ и в свое время стали практически профессиональными программистами больших ЭВМ. Гораздо легче было тем, кто свою программистскую карьеру начал сразу на современных ПК. У них не было старых привычек, со временем превратившихся в консерватизм. Помню, какой шок вызвали во мне даже демонстрационные программы на ПК. Программный сервис, казалось бы призванный обеспечивать комфортный диалог оператора с ПК, первое время производил на меня угнетающее впечатление. Мне казалось, что само освоение сервиса сложнее, чем программирование в машинных кодах. К счастью это быстро прошло. Но и до сих пор я не чувствую себя свободно при необходимости обращения к системным средствам ПК. Может быть потому, что на сей раз я оказался в чистом виде самоучкой. Видимо сказалось отсутствие стартового капитала знаний, которые можно было бы получить на курсах. В начале 90-х годов литература по ПК была очень ограничена, а машинные справочные системы сами требовали умелого с ними обращения. До многого приходилось добираться самому. Но к середине 90-х у меня уже было несколько серьезных прикладных программ на языке FoxBase собственного изготовления, нашедших практическое применение на производстве.
Н о с т а л ь г и я
По настоящему оценить что-то можно только, имея возможность сравнения. Гляжу на Note Book размером с небольшой дипломат, с памятью в сотни гигабайт и тактовой частотой в гигагерцы, и вспоминается БЭСМ-2м и 6000 радиоламп, и память в 4 килобайта. А ведь прошло всего каких-то 40 с небольшим лет! Юность моего поколения совпала во времени с юностью электронной вычислительной техники. Теперь и то, и другое кажется таким бесконечно далеким, наивным и почти не реальным. А иной раз покажется, что всё это было вчера... За этот небольшой срок пройден огромный путь. Жаль, что не нами. Что ожидает нас впереди?
А. Лебедев. кандидат технических наук, ветеран труда.
Прекрасно пишешь, коллега, спасибо, но вот зачем вся эта чушь про восьмеричную и шестнадцатиричную системы? В любой двоичной ЭВМ двоично всё! У адресуемой ячейки никакой не восьмеричный номер — у неё просто номер, который ты можешь записать в любой системе счисления, но в ЭВМ это будет только двоичая. Не знает они ничегошеньки про другие системы счисления. А упомянутые — 8 и 16 — они для компактости на бумаге и для удобства человека. В двоичной ЭВМ — повторюсь — двоично всё.
ОтветитьУдалить