18 лет назад 5 октября 2006 в 12:33 1099

Фридрих Ницше — большой поклонник Наполеона Бонапарта — в своей «Генеалогии морали» строго предупредил всех: «Что, например, до моего «Заратустры», то я никому не позволю слыть его знатоком, кто хоть однажды не был бы ранен глубоко и хоть однажды глубоко не восхищен каждым его словом».

Не меньший поклонник Наполеона Бонапарта и достойный ученик Фридриха Ницше Билл Гейтс как-то не менее пафосно заявил: «Что до программистов, то я никому не позволю слыть знатоком программирования, кто однажды не прочитал все семь томов «Искусства программирования» Дональда Кнута и не был поражен каждым его алгоритмом». За точность цитаты не поручусь, но за смысл отвечаю.

Идеи Фридриха Ницше оказали очень значительное влияние на процессы цивилизации первой половины XX века. Идеи Билла Гейтса — и с этим, думаю, глупо спорить вне зависимости от личных симпатий и антипатий — оказали весьма серьезное влияние на процессы цивилизации конца XX века. Ну, а что же Карл Маркс программирования — Дональд Кнут?

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

Здесь будет уместна несколько пространная цитата из воспоминаний самого Кнута: «Это началось еще когда я был студентом последнего курса института Case Institute of Technology. Тогда только появилась книга Андрея «Программирование для БЭСМ», и мы, группа студентов, смогли убедить преподавателя русского языка включить ее в курс в качестве одного из двух сборников текстов для изучения научной лексики. Для нас это был замечательный опыт работы, поскольку многие технические компьютерные термины нельзя было найти в наших словарях, и даже преподаватель о некоторых из них раньше вообще не слышал!

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

Его метод изложения материала также оказался весьма значимым: блок-схемы, представленные впервые в его книге, я впоследствии использовал для иллюстрации процесса выполнения программы в серии книг «Искусство программирования». Первая личная встреча с Андреем произошла на конференции рабочей группы IFIP, где готовился преемник языку Algol-60. К тому времени я знал, что Андрей <…> изобрел кэширование с линейным числом испытаний — важный алгоритм, изучение которого стало поворотным моментом в моей жизни, поскольку привело меня в область алгоритмического анализа».

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

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

Одним из первых людей в мире, кто понял, что так дальше дело не пойдет, был Алексей Андреевич Ляпунов — русский математик с мировым именем. Уже в начале 50-х годов XX века он осознал значение кибернетики для будущего человечества и с жаром принялся внедрять это новое направление науки. И хотя советская пропаганда трубила о том, что кибернетика — «буржуазная лженаука» (это было сделано специально, чтобы ушлые американцы не поняли раньше времени, какую кузькину мать мы им готовим), никто препятствий Ляпунову не чинил, даже несмотря на его дворянское происхождение.

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

Само собой, мимо Ляпунова никак не могла пройти, так сказать, прикладная кибернетика в виде проектирования и создания вычислительных машин, а также программирования и теории алгоритмов. Поэтому его курс лекций на мехмате МГУ, который прослушал А. П. Ершов, не был случайностью. Самого Андрея Ершова — еще студента — пригласил читать лекции по программированию для разработчиков Большой электронной счетной машины (БЭСМ) С. А. Лебедев.

Поскольку без БЭСМ не появилась бы работа А. П. Ершова «Программирование для БЭСМ», а без этой работы очень даже может быть не написал бы своих томов Дональд Кнут, что, разумеется, просто не могло бы не повлиять на становление молодого Билла Гейтса, который, судя по всему, никогда не заболел бы компьютерами… не рассказать про БЭСМ просто невозможно.

В конце 40-х годов в секретной лаборатории в Феофании, что под Киевом, Сергей Александрович Лебедев — директор Института электротехники АН Украины, ничего не зная про работы фон Неймана, начал работу над первой в СССР машиной с хранимой в памяти программой. Работы по монтажу этой машины заняли два года, и она, как и любой нормальный компьютер того времени, состояла из нескольких тысяч ламп, занимая целое крыло двухэтажного здания.

Если вы решили, что это и была БЭСМ — Большая счетная машина, то поспешили с выводами. На самом деле это был только Макет электронной счетной машины, который получил название МЭСМ. Чуть позже литеру «М» стали расшифровывать как сокращение слова «малая» — Малая ЭСМ (на два этажа). В МЭСМ Лебедев реализовал следующие принципы:
— наличие арифметических устройств, памяти, устройств ввода / вывода и управления;
— кодирование и хранение программы в памяти, подобно числам;
— двоичная система счисления для кодирования чисел и команд;
— автоматическое выполнение вычислений на основе хранимой программы;
— наличие как арифметических, так и логических операций;
— иерархический принцип построения памяти;
— принцип использования численных методов для реализации вычислений.

Иначе говоря, принципиально двухэтажная МЭСМ ничем не отличалась от современного настольного компьютера. Поскольку в Феофании более монументальных зданий не было, а сильно пострадавший от войны Киев, видимо, также не мог еще предоставить подходящего сооружения, для строительства Большой счетной машины С. А. Лебедев перебрался в Москву. В Москве было где разгуляться, и к середине 50-х (по одним данным, в 1953-м, а по другим — в 1954-м году) БЭСМ была сдана в эксплуатацию. В подготовке приемных испытаний БЭСМ участвовал молодой Андрей Ершов, разработавший в качестве теста программу обращения матриц. На основе анализа результатов управления БЭСМ А. П. Ершов и выпустил в 1958 году первую в мире монографию по автоматизации программирования, которая так порадовала Дональда Кнута.

В 1956 году на конференции в западногерманском городе Дармштадте Сергей Лебедев сделал доклад о БЭСМ. Доклад произвел эффект разорвавшейся гранаты, так как никто из западных коллег не мог и предположить, что «эти русские», невзирая на титанические усилия У. Черчилля, самостоятельно, отгороженные «железным занавесом» от западных технологий, смогут построить самую быстродействующую на тот момент в Европе машину. Скорострельность в восемь тысяч операций в секунду в середине 50-х годов — аккурат тогда, когда народился на свет будущий создатель Microsoft — просто поражала воображение.

Ну, а что же Андрей Петрович Ершов, дружбой с которым так гордился Дональд Кнут? Их дружба длилась вплоть до самой смерти Ершова в 1988 году. Время от времени они встречались на различных конференциях. Самой памятной Дональд Кнут называет конференцию «Алгоритмы в современной математике и компьютерной науке», которая проходила в СССР, в узбекском городе Ургенче (бывшая столица Хорезма, где появился сам термин «алгоритм»), где они вместе с Ершовым были сопредседателями. Дональд Кнут назвал эту конференцию «паломничеством к святым местам».

В 1970 году, выступая на всесоюзной конференции по программированию, проходившей в новосибирском академгородке, А. П. Ершов огорошил компьютерную общественность тезисом о том, что компьютерная программа наконец-то стала товаром, что требует соответствующего отношения к ее создателю — программисту. Ну кто бы мог подумать, что идея торговать программами появилась в СССР? Но тут у Ершова получилась пробуксовка — государство развитого социализма было не готово к такому повороту событий.

В СССР, где авторские гонорары получали только члены творческих союзов (разные там Союзы писателей, Союзы художников, Союзы журналистов и пр.), всерьез говорить о том, что программисты создают объекты авторского права, а потому должны иметь соответствующее материальное вознаграждение, было несколько преждевременно…

Но программа все-таки стала товаром: об этом позаботился ученик Кнута (а, следовательно, и Ершова) Билл Гейтс.

Дмитрий Румянцев

Никто не прокомментировал материал. Есть мысли?