- •Лекция № 1
- •Тема 1.1. Сущность и роль технологии программирования, языки и системы программирования.
- •Учебные вопросы:
- •Тема 1.1. Сущность и роль технологии программирования, языки и системы программирования.
- •Введение
- •1. История программирования от первых автоматов до первых эвм
- •1.1. О терминах
- •1.2. Ранняя история программирования автоматов
- •1.3. Станки с числовым программным управлением
- •1.4. Вычислительные машины
- •1.5. Двоичная система
- •1.6. Архитектура фон Неймана
- •1.7. Машинный код
- •2. Сущность, роль и основные принципы технологии программирования
- •2.1. Этапы решения задач на эвм
- •2.2. Задачи технологии программирования
- •2.3. Основные принципы технологии программирования
- •3. Основные понятия программирования
- •4. Языки и системы программирования, язык JavaScript
- •4.1. Классификация языков программирования
- •4.2. Характеристика систем программирования на языкахJavaScript/Jscript
1.4. Вычислительные машины
Вычислительные механизмы – механические, а затем электромеханические арифмометрыи их предшественники – машины В. Шиккарда (1623 г.), Б. Паскаля (1643 г.), Г.В. Лейбница (1673 г.) и др. (рис. 1.9) – умели автоматически выполнять толькоарифметические операции: сложение, вычитание, умножение и деление. Программы их выполнения были реализованы непосредственно их конструкцией. Управление же последовательностью этих операций и ввод чисел осуществлялись вручную. Так что эти машины были непрограммируемыми. Впрочем, сказанное относится и к современным электроннымнепрограммируемым калькуляторам, даже к тем программам «Калькулятор», которые работают в компьютерах, смартфонах и планшетах.
|
|
|
Суммирующая машина Паскаля. |
Калькулятор Лейбница. |
Арифмометр «Феликс» (СССР, 1929-1978). |
Рисунок 1.9. Непрограммируемые вычислительные машины. |
Первым проектоммеханическойпрограммируемойвычислительной машины была «Аналитическая машина» английского математика Ч. Бэббиджа (1791–1871), разрабатывавшаяся им в 1834–1852 годы (рис. 1.10). Машина Бэббиджа работала в десятичной системе, программа и данные во время исполнения должны были считываться с перфокарт (как в станках Жаккара, с которыми Бэббидж был знаком). Через 100 лет было доказано, что машина Бэббиджа обладала свойствомвычислительной универсальности, как и современные компьютеры18.
Бэббиджу впервые в мире довелось разработать архитектуру19и систему команд программируемойуниверсальнойВМ. Архитектура Аналитической машины (рис. 1.11) включала четыре основных блока, как и в современных ЭВМ:
устройство управления(УУ) – управляет другими устройствами, читая программу и данные с перфокарт;
арифметическое устройство(«фабрика», АУ) – выполняет арифметические операции, операции сравнения и извлечения квадратного корня, используя память и собственные регистры;
память,запоминающее устройство(«склад») – состоит из числовых регистровпеременных: «столбов», состоящих из цифровых зубчатых колёс (планировалась 1000 столбов по 50 цифровых колёс и одному для знака числа, т.е. память на 1000 десятичных 50-разрядных чисел);
устройство ввода и вывода (планировался ввод с перфокарт и вывод на печать и на перфокарты).
Перфокарты указывали УУ, какие команды следует выполнить:
цифровыекарты содержали число и номер столба памяти, на который нужно было его загрузить;
карты переменныхуказывали, с какого столба памяти число должно быть передано в регистр АУ, или наоборот;
карты операцийзаставляли АУ выполнить определённую операцию (арифметическую, сравнения, извлечения квадратного корня), а результат также в регистр АУ;
карта условного переходауказывала, на сколько карт вернуться, если разность операндов в АУ отрицательна.
Неизвестно, записывал ли Бэббидж систему команд машины в явном виде, как это принято в руководствах по современным компьютерам. Сам он просто описывал на конкретных примерах, что происходит при выполнении той или иной операции.
При жизни Бэббиджа были построены лишь некоторые узлы машины, и она не была испробована в действии. Бэббидж оставил огромное количество чертежей, общих схем, пояснительных заметок. Только в 1906 году (через 35 лет после его смерти) его сыном по этим чертежам была построена модель АУ и устройства печати, которая действовала, хотя и с ошибками (модель не была программно управляемой). В 1840 году Бэббидж прочёл цикл лекций об Аналитической машине в Италии, в Турине. Подробные записи этих лекций, сделанные математиком Л.Ф. Менабреа (1809–1869), хорошо разобравшемся в идеях Бэббиджа и конструкции его машины, был им опубликован в 1942 году.
У Ч. Бэббиджа была замечательная помощница – молодой английский математик Ада Лавлейс (дочь поэта Байрона), которая считается первым в мире программистом вычислительных машин (рис. 1.12). С начала 1841 года она серьёзно занялась изучением машин Бэббиджа. Своё восхищение созданием Бэббиджа она передала словами: «Машина ткёт алгебраический узор, как ткацкий станок Жаккара – цветы и листья». Лавлейс перевела статью Менабреа на английский язык и, снабдив подробными примечаниями, опубликовала в 1843 году20. Основная заслуга А. Лавлейс в том, в этих примечаниях описаны первые программы для Аналитической машины и заложены теоретические основы программирования. Так, она ввела понятия «рабочая ячейка» (используемая для хранения промежуточных результатов), «цикл» (повторяющееся исполнение некоторого участка программы), «цикл циклов» (современный цикл в цикле или кратный цикл). В своих программах она использовала и циклы, и кратные циклы. При этом она применяет приёмы экономии количества используемых рабочих ячеек и команд программы.
Важно подчеркнуть, что именно циклы обеспечивают универсальность вычислительной машине, а образуются они в машине Бэббиджа (и современных ЭВМ) именно с помощью команды условного перехода. Тем более удивительно, что эта команда появилась в ЭВМ только в 1948 году (ЭВМ ManchesterBaby, Англия), т.е. не в первых ЭВМ21.
Приведём пример программы (карт) для вычисления факториала по формуле n! = на машине Бэббиджа (на псевдокоде):
1: Установить nна 1 столбе памяти (счётчик цикла, 1-й сомножитель);
2: Установить 1 на 2 столбе (накопитель факториала, 2-й сомножитель);
3: Установить 1 на 3 столбе памяти (конечное значение счётчика);
4: Копировать в АУ операнд с 1 столба памяти;
5: Копировать в АУ операнд с 2 столба памяти;
6: Умножить;
7: Запомнить результат на 2 столбе памяти;
8: Копировать в АУ операнд с 1 столба памяти;
9: Копировать в АУ операнд с 3 столба памяти:
10: Вычесть (второй операнд из первого: счётчик–1);
11: Запомнить результат на 1 столбе памяти;
12: Копировать в АУ операнд с 3 столба памяти;
13: Копировать в АУ операнд с 1 столба памяти;
14: Вернуться на 10 команд (т.е. к команде 4), если разность отрицательна.
15: Копировать в АУ операнд с 2 столба памяти (результат);
16: Напечатать (операнд АУ, т.е. результат).
В этой программе цикл образуют команды (карты) с 4 по 14.
В 1835 году английским физиком и инженером Дж. Генри было изобретено электромагнитное реле22, которое широко стало использоваться при приёме и автоматической печати двоичных сигналов азбуки Морзе по электрическому телеграфу (с 1836 года). С тех пор появилась техническая возможность использоватьдвоичную системув вычислительных машинах. Но произойдёт это лишь через 100 лет.
Первымипрограммируемыми вычислительными машинами, нашедшими широкое применение, сталитабуляторы– электромеханические машины, предназначенные для автоматической обработки (суммирования и категоризации) числовой и буквенной информации, записанной на перфокартах, с выдачей результатов на бумажную ленту, перфокарты или специальные бланки. Работа табулятора производилась в соответствии с набираемой накоммутационной панелипрограммой. Однако, в силу ориентации на специальный класс задач и вызванной этим специфической конструкцией, табуляторы не являлись универсальными вычислительными машинами, какой была аналитическая машина Бэббиджа.
Изобретателем табуляторов стал американский инженер Г. Холлерит, построивший в 1890 г. первый статистический табулятор (рис. 1.13) с целью ускорить обработку результатов переписи населения, которая проводилась в США. Холлерит в 1896 году организовал фирму по производству табуляторов, продавая их железнодорожным управлениям и правительственным учреждениям (партия табуляторов была также закуплена и Российской империей). Табуляторы Холлерита обработку числовых данных производила в десятичной системе, как во всех предыдущих вычислительных машинах. Для этого в нём было от 40 до 120 механических счётчиков. Колёсный механизм счётчиков приводился в движение с помощью электромагнита, срабатывавшего при замыкании электрической цепи металлическим стержнем, проходившим через отверстие в перфокарте (т.е., Холлерит использовал электромеханическое реле).
С 1924 года фирма Холлерита стала называтьсяIBMи постепенно превратилась в современный «голубой гигант» компьютерной индустрии. IBM производила табуляторы до 1949 года (рис. 1.14), продавала до 1976 года, хотя в последние годы они использовались лишь как периферийное оборудование ЭВМ. В Советском Союзе счётно-аналитические машины (табуляторы, сортировщики и др.) начали выпускаться с 1929 года, к 1939 году был освоен весь спектр этой техники. Московский завод САМ выпустил последний табулятор в 1950 году, после чего перешёл на выпуск ЭВМ.