Семён Николаевич Корса́ков (25 января 1787 —13 декабря 1853) — первый русский программист и изобретатель программирования. Самое поразительное, что его понимание программирования остается правильным и важным до сих пор.
С.Н. Корсаков — русский дворянин, военный (участник Отечественной войны 1812-1813 гг.), чиновник, составитель лекарств, учёный и изобретатель. Родился в Херсоне, жил и работал в Санкт-Петербурге, упокоился на московской земле, близ городов Димитров и Та́лдом.
11 сентября 1832 года Корсаков отправил прошение в Санкт-Петербургскую Императорскую академию наук (ИАН), чтобы та рассмотрела:
открытия программирования и языка программирования, а также изобретение баз данных, программ и машин, выполняющих умственную работу — умственных машин.
В своём обращении Корсаков подчеркивал, что не ищет славы или иных выгод, вытекающих из его открытий и изобретений, и желает только послужить людям.
13 сентября 1832 года Корсаков издал первую книгу по программированию: «Начертание нового способа исследования при помощи машин, сравнивающих идеи».
24 октября 1832 года комиссия ИАН отклонила изобретение Корсакова как бесполезное, добавив к этому уничижительную приписку: «Г-н Корсаков потратил слишком много разума на то, чтобы научить других обходиться без разума.» Горько, опрометчиво, однако правдиво — «слишком много разума» для судивших его открытие академиков (Остоградский, Купфер, Паррот, Брандт). «Выгнали из Академии наук за слишком много разума».
Судьба программирования
Только один из академиков ИАН, английский математик Чарльз Бэббидж, оценил работу Корсакова в достаточной мере, чтобы отказатся от первого дела своей жизни — большой разностной машины (1822-1834) — и с 1833 года до самой смерти работать над замыслом «аналитической машины», которая в будущем стала «компьютером». В историю Бэббидж вошел как «отец компьютера».
Бэббидж сохранил название «умственная машина» («аналитическая» и «умственная» — синонимы), но скрыл источник своего вдохновения и основной посыл Корсакова — помощь людям. «Умственные машины» Корсакова были доступны — неороги и помещались на столе. «Аналитическая машина» Бэббиджа должна была весить 14 тонн. Никакой помощи людям она не могла бы оказать даже теоретически, а практически так и не была построена.
Замысел Бэббиджа воплотился только через 113 лет. Построенная наконец машина была названа просто «вычислительной» (1946, ЭНИАК, К — компьютер) и весила уже 30 тонн. Официальная наука представляет это великим достижением, но на деле ЭНИАК был совершенно бесполезен. Его задачей полагался расчёт таблиц стрельбы для открытия Второго фронта (1944 год), что в 1946 уже не требовалось. Остальные «достижения» были в том же духе.
В 1950 году задачу оправдания бесполезных многотонных компьютеров «успешно» «решил» другой английский математик — Алан Тьюринг. Он предложил считать, будто «компьютер мыслит», и поэтому в будущем сможет принести много пользы. Это «решение» отдалило программирование от людей ещё больше, чем вес и цена 30-тонных компьютеров, поскольку в таком извращенном виде понять его могли только люди с очень особенным мышлением, в основном, математики.
Пользу программирование принесло, и огромную, но не благодаря, а вопреки усилиям Бэббиджа и Тьюринга.
Развитие техники позволило уменьшить и удешевить компьютеры, вернуть их простым людям и вернуться к направлению, изначально указанному Корсаковым — помощь людям, или «прикладное программирование». Причем математики до сих пор не могут объяснить, как это произошло, равно как и само программирование.
Именно поэтому возвращение к учению Корсакова так важно и современно.
Простое программирование
Программирование Корсакова было простым, понятным и полезным. В его книге всего 20 страниц, включая рисунки и описания машин, и будет несложно пересказать её современных языком, уделив по несколько слов каждому из изобретений.
1. Программирование
Корсаков ясно и чётко обосновал программирование пятью предложениями:
1. Разделим умственное и механическое
Человек мыслит, но действия его носят механический характер: он приказывает, и его ноги идут, а руки двигаются.
2. Выделим главное для ума — письменность
Письмо хранит память обо всех фактах […], и даёт возможность подвергнуть их постоянному и обдуманному сопоставлению, благодаря чему оно стало первой главной основой человеческой цивилизации.
3. Укажем недостаток письменности — немеханичность
Несмотря на все неоценимые преимущества письма, даже на сводные таблицы […], эти средства всё ещё недостаточны для немедленной выдачи подробного результата.
4. Создадим механическую письменность — программирование
В то же время, такой результат возможно получить, сочетая принцип сводных таблиц с механическим подходом.
Письмо доступно только уму. Только человек может взять книгу, найти в ней нужны сведения и сделать выводы.
5. Дадим программирование людям
Устройство умственных машин не является сложным, цена их не должна быть высокой, откуда следует, что блага, которые они будут способны предоставить людям, смогут получить широкое распространение.
Предложения Корсакова можно обобщить в определение по существу:
Программирование — это механическая запись мысли для помощи людям в выполнении умственной работы.
И если, по слову Корсакова, грамота, была первой главной основой человечества, без которой нельзя представить прошлое, то программирование стало его второй главной основой, без которой не представить настоящее и будущее.
2. Язык программирования
Язык программирования — это правила механической записи мысли в виде вычислений.
Вычисление — это перевод слов с помощью меры в числа и действия с числами.
Вычисление не имеет ничего общего со сложной математикой. Оно понятно даже ребенку и может обрабатываться простыми устройствами, как и показал Корсаков.
Язык программирования можно рассматривать как упрощенную грамматику, доступную любому грамотному человеку.
3. Базы данных
Сводные таблицы, или базы данных — это числовая запись сведений, следующая из представления о вычислении как переводе слов в числа. Современное программирование в итоге пришло к повсеместному использованию файлов и баз данных, Корсаков — с этого начал.
Для создания числовых таблиц Корсаков первым использовал пробойные картонные листы, или перфокарты.
4. Программы
Программа — это рассказ, как механически решить умственную задачу.
Сначала программа описывается словами, а затем переводится в механический вид. В таком свете программа — понятная и доступная вещь. Корсакову в 1832 году удалось решать такие задачи, которые стали обычными только в спустя 150 лет, в 1980-х годах.
Первая в мире программа называлась «гомеоскоп» и искала подобия («гомеос» — подобия) в таблице гомеопатических лекарств. Хотя сама гипотеза гомеопатии, появившись в начале 19 века, впоследствии была признана несостоятельной, обращение к ней было крайне удачным для решения умственных задач в общем виде и одновременно показало высокие устремления первого русского программиста – «облегчить страдания ближних».
Вот текст программы гомеоскоп.
Гомеоскоп
Цель: помогаем врачу подобрать гомеопатическое лекарство. (В 19 веке врача как раз называли «пользователь», см. словарь Даля.)
Задача: выбираем подходящую строку из таблицы
Решение (шагайка):
1. Предлагаем врачу указать нужные симптомы
2. Повторяем для всех таблиц
----1. Берём очередную таблицу
----2. Повторяем для всех строк таблицы
--------1. Берём очередную строку
--------2. Если совпали все симптомы,
то строка найдена - конец.
5. Умственные машины
Умственная машина — доступная машина для выполнения умственной работы.
В двух словах Корсаков выразил всё программирование:
-
Суть (машина) — механическая запись мысли
-
Цель (доступная) — для помощи людям
-
Задача (умственная) — в выполнении умственной работы
Умственные машины были ангельски простыми. Вот изображение первой в мире умственной машины.
Прямолинейный гомеоскоп
Вся машина — это деревянный брус с номерными отверстиями с поднятыми штырями (рис.1).
Машиной управляла программа, изначально через усилия человека, позже механизировано, но первое исполнение поражает своей гениальностью и простотой.
1. Предлагаем врачу указать нужные симптомы (рис.2)
2. Повторяем для всех таблиц
----1. Берём очередную таблицу (рис.3)
----2. Повторяем для всех строк таблицы
--------1. Берём очередную строку
--------2. Если совпали все симптомы,
то строка найдена - конец (рис.4)
Наиболее продвинутая умственная машина — идеоскоп — «поисковик идей» и прообраз Яндекса — полноценно обрабатывала неограниченно число перфокарт на уровне современного языка SQL.
Значение изобретений Корсакова
Первые слова книги Корсакова «Человек мыслит» можно считать гимном программирования и ключом к правильному пониманию программ.
Открытия и изобретения Корсакова опередили своё время примерно на 150 лет.
Обращение к наследию Корсакова может дать большую пользу в современном понимании, преподавании и применении программирования.
Будем радоваться, что этот человек был нашим соотечественником, и хранить его научный и человеческий подвиг.
Светлая память Семёну Николаевичу Корса́кову.