
- •Лекция № 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 году, после чего перешёл
на выпуск ЭВМ.