Слайд 1В. В. Шилов
Рождение программирования
Москва, 2018 год
ВВЕДЕНИЕ
В ПРОГРАММНУЮ ИНЖЕНЕРИЮ
Слайд 2Слово “Программа”
1633 г. В Англии впервые отмечено использование слова program.
Оно происходило от греческих слов (до) и (писать)
и означало официальное публичное объявление властей (т.е. объявление устное, сделанное “до печати”).
Словарь В. И. Даля (1863-66 гг.). Програма (с одним м): “Краткий очерк, начертанье, перечень, изложенье, содержанье сочинения, предположенного изданья, книги, журнала, преподаванья чего-либо; план празднества, торжества, зрелища, представленья; задача, пояснительная записка на заданную по выбору работу”.
Советский Энциклопедический словарь (1955 г.). Программа “содержание и план какой-либо деятельности (программа концерта, учебная программа, программа политической партии”). Например, Программа КПСС.
О вычислительных машинах речи еще нет.
Слайд 3Автоматы античность
Ок. 100 г. Герон Александрийский
по прозвищу Механик, автор
сочинения
“Автоматы”.
1206 г. Аль-Джазири.
Слайд 4Автоматы средневековье
Автоматы Джианелло Торриано (Gianello Torriano, ок. 1515-1585).
Слайд 5Автоматы – средневековье
Ок. 1600 г. Кулачковый барабан – основной элемент
системы управления “гидравлическим органом”.
Слайд 6Автоматы – новое время
1736 г. Автоматы Жака де Вокансона (Jacques
de Vaucanson, 1709-1782).
Слайд 7Автоматы – новое время
Утка самый знаменитый автомат Жака де
Вокансона.
Слайд 8Автоматы – новое время
Пьер Жаке-Дро
(Pierre Jaquet-Droz,
1721-1790).
Слайд 9Автоматы – новое время
Ок. 1810 г. Автомат
Анри Майарде
(Henri Maillardet, 1745-?).
Слайд 10Полуавтоматические ткацкие станки
1725 г. Полуавтоматический ткацкий станок Базиля Бушона (Basile
Bouchon) с использованием перфоленты.
1728 г. Жан-Филипп Фалькон (Jean-Philippe Falcon,
?-1765), ткацкий станок с использованием набора перфокарт.
Слайд 11Ткацкий станок Вокансона
1746 г. Автоматический ткацкий станок Ж. де Вокансона
на основе кулачкового цилиндра.
Слайд 12Ткацкий станок Жаккара
1801 г. Жозеф-Мари Жаккар (Joseph-Marie Jacquard, 1752-1834) на
национальной промышленной выставке в Париже представил автоматический ткацкий станок, для
управления которым использовались перфокарты. В его конструкции Жаккар удачно объединил лучшие идеи своих предшественников Бушона, Фалькона и де Вокансона. Работа Жаккара стала очередным шагом к появлению концепции программирования: теперь, чтобы изменить рисунок ткани, достаточно было сменить набор перфокарт без переналаживания оборудования. Сегодня историческое значение этого изобретения представляется очевидным, однако станок Жаккара получил на выставке только бронзовую медаль, в то время как его же машина для вязания морских рыболовных сетей была удостоена большой золотой медали.
Слайд 14Блез Паскаль
Около 1640 г. Гениальный французский мыслитель Блез Паскаль (Blaise
Pascal, 1623-1662) – математик, физик, философ и писатель, разработал принципы
конструкции арифметической машины.
1641 г. Первая (неработоспособная) модель.
1642 г. Работающая модель.
1645 г. Первая готовая машина.
1649 г. (22 мая). Королевская привилегия – первый в истории патент на счетную машину.
Слайд 15Счетная машина Паскаля
“Паскалина”
Слайд 16Счетная машина Паскаля
Рисунки и чертежи
XVIII в.
Слайд 17Другие счетные машины XVII-XVIII вв.
1666 г. Новый множительный инструмент сэра
Сэмюэла Морленда
(Sir Samuel Morland, 1625-1695).
1708 г. 16-разрядный арифмометр Готфрида Вильгельма
Лейбница (Gottfried Wilhelm von Leibniz, 1646-1716).
Слайд 18Другие счетные машины XVII-XVIII вв.
1727 г. Круглый арифмометр Антона Брауна
(Anton Braun, 1686-1728), механика и оптика при дворе императора Карла
VI в Вене.
1778 г. 14-разрядный арифмометр священника из Германии Филиппа Маттеуса Гана (Philipp Matthäus
Hahn, 1739-1790).
Слайд 19Другие счетные машины XVII-XVIII вв.
1790 г. Суммирующая машина Якоба Ауха
(Jacob Auch, 1765-1842).
1814-1817 гг. Счетная машина Авраама Штерна (Abraham Jacob
Stern, 1769-1842) из Варшавы.
Слайд 20Идея Иоганна Мюллера
1786 г. Во Франкфурте увидела свет брошюра Филиппа
Клипштейна (Philipp Engel Klipstein, 1747-1808) “Beschreibung seiner neu erfindenen Rechenmaschine”
(“Описание вновь изобретенной счетной машины”), в которой рассказывалось о проекте разностной машины Иоганна Мюллера (Johann Helfrich Müller, 1746-1830). Эта специализированная вычислительная машина предназначалась для вычисления значений функции, заданной полиномом некоторой степени, с помощью метода конечных разностей.
Идея разностной машины появилась у изобретателя еще раньше: уже в 1784 г. он писал о машине, вычисляющей и печатающей арифметическую прогрессию. Мюллер рассчитывал построить разностную машину, взяв за основу конструкции свой арифмометр. Судя по его письмам, он также хотел оснастить машину печатающим устройством. Однако денег на постройку Мюллеру найти не удалось, и его проект, как и сама идея, был надолго забыт.
Слайд 21Математика
Функция F(x) = 2x + 3
x 1 2 3 4 5 6 7
F(x) 5 7 9 11 13 ? ?
D1 2 2 2 ? ? ?
Функция F(x) =
x 2 + 2x + 3
x 1 2 3 4 5 6 7
F(x) 6 11 18 27 38 51 66
D1 5 7 9 11 ? ?
D2 2 2 ?
Таким образом, если функция F(x)
задана полиномом n -й степени,
то ее n -е разности постоянны.
Слайд 22Математика
Функция F(x) = x 2 + x 3
x x 2 x 3 F(x) D1 D2 D3
0 0 0 0
1 1 1 2 2
2 4 8 12 10 8
3 9 27 36 24 14 6
4 16 64 80 44 20 6
5 150 70 26 6
6 252 102 32 6
7 392 140 38 6
8 ?
Слайд 23Проект Гаспара Прони
Гаспар Прони (Gaspard Clair François Marie Riche de
Prony, 1755-1839).
1791 (или 1793) г. Инженер и математик Г.
Прони по заданию правительства Франции возглавил работу по вычислению новых математических таблиц.
Организация работ основывалась на идеях великого английского экономиста Адама Смита (Adam Smith, 1723-1790), показавшего решающее значение специализации и разделения труда на его эффективность.
По разным оценкам в проекте Прони участвовали от 60-80 до 200 человек, разбитых на три секции.
Слайд 24Проект Гаспара Прони
Первая секция.
Несколько крупных математиков, которые вырабатывали формулы
для вычислений и проверки их результатов, подбирали начальные значения чисел
и углов, а также задавали требуемую точность расчетов (количество десятичных знаков результата) для каждой таблицы и т.д. Сотрудниками первой секции были Адриен-Мари Лежандр (Adrien-Marie Legendre, 1752-1833), Лазар Карно (Lazare Carnot, 1753-1823) и другие выдающиеся французские ученые.
Вторая секция (вычислители).
Несколько высококвалифицированных математиков. Они определяли значения величин и разности, использовавшиеся в расчетах, а также вырабатывали формат таблиц, рассчитывали значения первой строки и составляли пошаговые инструкции для дальнейших вычислений на данной странице.
Слайд 25Проект Гаспара Прони
Третья секция.
Здесь проводились вычисления. От сотрудников третьей секции
требовалось только умение складывать и вычитать. Их нанимали из числа
безработных, и по этой причине среди них было особенно много квалифицированных парикмахеров, оставшихся после революции без своих аристократических клиентов.
По окончании расчетов очередной страницы ее возвращали во вторую секцию для проверки результатов по формулам, предложенным математиками из первой секции.
Кроме того, каждая страница вычислялась дважды с использованием разных формул, что позволяло еще более повысить достоверность результатов.
Слайд 26Проект Гаспара Прони
1801 г. Колоссальная работа по расчету математических таблиц
завершилась.
Ее результат – 19 томов большого формата, объемом 251 страница
по 100 строк каждый. Среди них: таблицы логарифмов чисел от 1 до 200000, вычисленных с точностью 14 десятичных знаков, тригонометрических функций, произведений синусов на косинусы и др.
В силу различных экономических и политических причин таблицы были опубликованы только в 1891 г., причем в значительно сокращенном виде, а имя Прони даже не было указано на обложке и не упоминалось в предисловии…
Слайд 27Чарльз Бэббидж
Чарльз Бэббидж
(Charles Babbage, 1791-1871).
Автоматы Майарде, таблицы Прони и
ткацкий станок Жаккара отправные точки в размышлениях Бэббиджа.
Слайд 28Разностная машина Ч. Бэббиджа
1822 г. Проект разностной машины, вычисляющей функции
с постоянными вторыми разностями с точностью 6 знаков.
1830 г. Новый
проект – табулирование функций с постоянными шестыми разностями, точность 20 знаков.
1842 г. Правительство Англии окончательно отказывается финансировать дальнейшую разработку.
Общая стоимость работ составила около 34000 фунтов стерлингов.
Первая в истории попытка создать вычислительное устройство, автоматически выполняющее вычисления.
Слайд 29Аналитическая машина Бэббиджа
1834 г. Бэббидж сформулировал основные идеи новой машины, способной
выполнять вычисления по любой заданной математической формуле.
1834-1848 гг. Бэббидж выполнил
30 комплектов чертежей Аналитической машины.
Основная проблема – как использовать результаты счета в последующих вычислениях возникновение концепции памяти (в терминологии Бэббиджа – склад).
Другие идеи – отдельное устройство для выполнения арифметических операций (мельница).
Специальное устройство для управления ходом вычислений.
Использование для записи команд и данных перфокарт трех видов – операционных, числовых и перфокарт для хранения значений переменных.
Устройство для печати результатов.
Слайд 30Аналитическая машина Бэббиджа
Чертеж № 16, 1840 год.
Слайд 31Аналитическая машина Бэббиджа
Одна из операционных перфокарт Бэббиджа. Команда – умножить
содержимое ячейки памяти V6 на содержимое ячейки памяти V2.
Слайд 32Леди Лавлейс
Ада Аугуста, леди Лавлейс
(Ada Augusta, Lady Lovelace, 1815-1852).
Дочь сердца
моего, малютка Ада!
Похожа ль ты на мать? В последний раз,
Когда
была мне суждена отрада
Улыбку видеть синих детских глаз,
Я отплывал – то был Надежды час.
Дж. Г. Байрон
“Паломничество Чайльд-Гарольда”.
1816 г.
Слайд 33Леди Лавлейс – первый программист
1843 г. Леди Лавлейс перевела на
английский язык и опубликовала статью Л. Менабреа об Аналитической машине
Бэббиджа.
Огромное значение имеют обширные “Примечания переводчика”, которыми сопровождалась статья. Они содержали несколько “программ” для аналитической машины Ч. Бэббиджа, и фактически ознаменовали рождение программирования для вычислительных машин.
Первой программой можно считать приведенное в примечании D описание процесса решения системы двух линейных уравнений с двумя неизвестными.
Примечание G содержало еще более сложную программу вычисления чисел Бернулли, включавшую циклы и вложенные циклы.
Луиджи Менабреа
(Luigi Federico Menabrea,
1809-1896)
Слайд 35“Программы” леди Лавлейс
Вычисление чисел Бернулли:
Слайд 36Герман Холлерит
Герман Холлерит (Herman Hollerith, 1860-1929).
Счетно-табуляционные машины,
предназначенные для обработки
статистической
информации.
Слайд 37Счетно-табуляционные машины
1911 г.
DEHOMAG с коммутационной доской,
позволяющей перенастраивать машину на
выполнение разных
последовательностей действий.
1935 г. DEHOMAG D11.
Возможность автоматически выполнять последовательность арифметических
действий.
Слайд 38Специализированные машины
1914 г. Релейная машина для вычислений
по формуле pqb.
Леонардо Торрес-и-Кеведо
(Leonardo
Torres-y-Quevedo,
1852-1936).
Слайд 39Устройства памяти
Июнь 1923 г. Уроженец Испании Франсиско Кампос (Francisco Campos
Campaña) получил в Германии патент (заявка была подана 2 марта
1920 г.) на механическую бухгалтерскую машину, предназначенную для раздельного ведения счетов нескольких клиентов.
Машина могла складывать, вычитать, а также запоминать и хранить числа в памяти.
Она состояла из десяти пятизначных чисел, представленных наборами зубчатых реек (каждая рейка соответствовала одному разряду).
Слайд 40Устройства памяти
10 сентября 1924 г. Немецкий изобретатель Альфред Краузе (Alfred
Krause) получил патент на механическую бухгалтерскую машину, содержавшую устройство памяти
для хранения результатов вычислений (судя по всему, в качестве прототипа своей разработки Краузе использовал патент Ф. Кампоса).
1928 г. Ф. Кампос изготовил первый экземпляр своей механической бухгалтерской машины. По сравнению с описанным в патенте прототипом, Кампосу удалось добиться серьезного прогресса – его машина могла хранить и обрабатывать 1000 девятиразрядных десятичных чисел. Память была адресуемой (набрав номер счета, можно было распечатать его состояние). Машина Кампоса не имела ни предшественников, ни аналогов – это уникальное устройство стало первой в истории механической вычислительной машиной, имеющей память такого большого объема.
Слайд 41Устройства памяти
Бухгалтерские машины модели “National 3000” компании NCR имели несколько
регистров для запоминания промежуточных результатов и обладали возможностью передачи данных
из регистра в регистр.
С их помощью можно было фактически имитировать работу разностной машины Бэббиджа.
Начало 1920-х гг.
Слайд 42Конрад Цузе
Конрад Цузе (Konrad Zuse, 1910-1995).
Слайд 43Компьютеры Конрада Цузе
Каждая ячейка памяти состояла из трех металлических пластинок,
средняя из которых могла двигаться, смещая при этом штырь влево
или вправо и тем самым определяя значение ячейки – 0 или 1.
Главным достоинством такой памяти Цузе считал ее компактность и расширяемость.
1938 г. Механический управляемый программой компьютер Z-1.
Слайд 44Электронные компьютеры ENIAC
Джон Моучли (John William Mauchly, 1907-1980)
и
Джон Преспер
Эккерт-мл. (John Presper Eckert, Jr, 1919-1995).
Джон фон Нейман
(John von
Neumann, 1903-1957).
Слайд 45“Программирование” на ENIAC
Август 1942 г. Джон Моучли впервые использовал термин
to program (программировать), но еще не в современном смысле, а
для обозначения процесса соединения исполнительных устройств проектировавшейся им вычислительной машины с помощью штекерного коммутатора.
1945 г.
Слайд 46“Программирование” на ENIAC
Фрагмент “программы” ENIAC
и
процесс “программирования”.
Слайд 47Принципы фон Неймана
1. Программное управление работой компьютера.
2. Принцип условного перехода.
3.
Принцип хранимой программы.
4. Использование двоичной системы счисления.
5. Принцип иерархичности памяти.
Фактически
эти принципы выработали Д. Моучли и П. Эккерт.
Некоторые считают, что еще раньше их сформулировал Конрад Цузе.
Июнь 1945 г. Джон фон Нейман присоединился к группе разработчиков ENIAC и принял активное участие в обсуждении проекта их будущего компьютера EDVAC (Electronic Discrete Variable Computer).
Отчет “First Draft of Report on the EDVAC”:
Слайд 48Термин “программа”
Июль 1946 г. В своей лекции на конференции в
Пенсильванском университете Преспер Эккерт охарактеризовал принципиально новую концепцию компьютерной архитектуры,
основанную на хранении программы в памяти, и впервые использовал слово программа в современном значении.
Джон фон Нейман этот термин использовал крайне редко. В своей работе 1945 г., давая описание особенностей новой архитектуры, он говорит об инструкциях, стандартных командах (standard orders), операциях и коде (code) – но ни разу о программе! Год спустя в одной из статей словом программа он пользуется наряду со словом код, а еще через год – снова отказывается от него в пользу терминов план (plan) и установка (set-up).
Декабрь 1951 г. В отчете по работе над ЭВМ М-1, построенной под руководством И. С. Брука, четко говорится, что “Набор инструкций, необходимых для решения задачи, называется программой”.
Слайд 49Что такое программирование
Программа. Последовательность операций, выполняемых компьютером для достижения поставленной
цели или задачи. Описание на языке программирования действий, которые должен
выполнить компьютер в соответствии с алгоритмом решения конкретной задачи. Упорядоченная последовательность команд, подлежащих обработке.
Программирование – совокупность процессов, связанных с разработкой программ и их реализацией.
В широком смысле к этим процессам относят все технические операции, необходимые для создания программ, в том числе анализ требований, все стадии разработки, а также реализации в виде готового продукта.
В узком смысле программирование – процессы выбора структуры, кодирования и тестирования программ.
Слайд 50Plankalkül – первый
язык программирования
объединение двух значений.
присваивание.
оператор повторения.
заголовок подпрограммы.
Язык был разработан в 1945 г. Описание частично опубликовано
в 1959 и 1972 годах.
Слайд 51Plankalkül – первый
язык программирования
Программа проверки синтаксической правильности записи булевского выражения.
2000
г. Первая реализация языка.
Слайд 52EDSAC и первая программа
6 мая 1949 г. В Кембриджском университете
завершена постройка EDSAC (Electronic Delay Storage Automatic Calculator) первого
в мире компьютера с хранимой в памяти программой.
Первую программу – составление таблицы квадратов чисел – написал Дэвид Уилер (David John Wheeler, 1927-2004). Для написания программ использовались символические обозначения.
Тактовая частота составляла 500 килогерц, а большинство инструкций выполнялись за полторы миллисекунды.
Слайд 53EDSAC
Морис Уилкс (Maurice Wilkes, 1913-2010).
Память на ртутных линиях задержки.
Вывод результатов
вычислений.
Слайд 54Программирование для EDSAC
Июль 1949 г.
Начало программы вычисления интеграла Айри,
решения уравнения Айри y’’=xy.
157 команд, около 20 ошибок!
Слайд 55Отладка
Морис Уилкс вспоминал позднее, какой ужас охватил его при мысли,
что “большую часть оставшейся жизни придется провести в поисках ошибок
в собственных программах”.
Именно тогда разработчики компьютеров впервые осознали необходимость создания эффективных методов обнаружения ошибок (тестирования) и отладки программ, а также более эффективных методов написания самих программ.
Дэвид Уилер.
Слайд 56После этого началась История.
Но это уже совсем другая история…
СПАСИБО!