- •Московский государственный институт электроники и математики
- •Архитектура эвм и систем
- •Содержание
- •Основные сокращения:
- •Введение
- •Конвейер команд
- •Архитектура эвм и языки программирования
- •Аппаратное и программное обеспечение для разработки системы контроля и управления объектами
- •Функциональная структура эвм Фон-Неймана
- •Каноническая структура эвм Фон-Неймана
- •Процессор
- •Вычислитель
- •Спецпроцессор
- •Определение эвм
- •Реализация моделей вычислителя
- •Понятие архитектуры эвм
- •Определение и понятия архитектуры эвм
- •Общее определение архитектуры средств обработки информации
- •Семейство эвм
- •Архитектурное сходство и родство представителей семейства
- •Поколения эвм
- •Показатель эффективности архитектурных свойств эвм.
- •Первое поколение (1949-1951[формирование поколений])
- •Второе поколение (1955-1966[формирование поколений])
- •Третье поколение эвм (1963 – 1965[формирование поколений])
- •О новшествах в машинах 3-его поколения:
- •Сравнительные характеристики эвм 1-3го поколения.
- •Конструктивно-технологический и функциональный признаки свт.
- •Признаки поколения свт.
- •Понятие архитектуры современного x86-процессора
- •Архитектура как совместимость с кодом
- •Архитектура как характеристика семейства процессоров
- •64-Битные расширения классической x86 (ia32) архитектуры
- •Процессорное ядро
- •Различия между ядрами одной микроархитектуты
- •Ревизии
- •Частота работы ядра
- •Микроархитектура процессоров Intel Itanium 2
- •Языки программирования
- •Поколения языков программирования
- •Первое поколение
- •Второе поколение
- •Третье поколение
- •Четвертое поколение.
- •Пятое поколение.
- •Классификация языков программирования
- •Парадигмы программирования.
- •Степень абстракции.
- •Распространенные языки программирования
- •Почему не существует «идеальных» языков программирования
- •Ассемблер
- •Архитектура микропроцессоров ia-32.
- •Введение.
- •Регистры и структура памяти ia-32
- •Команды ia-32
- •Литература
Языки программирования
Программа это последовательность данных и команд для процессора, как перевести эти данные в другие. Она составлена на формально определенном языке — языке программирования.
Определение языка программирования состоит из двух частей:
Синтаксис языка описывается формально. Он описывает значащие последовательности строк символов с помощью так называемой внеконтекстной грамматики. При этом средства представления могут быть разнообразными. Распространены формулы Бэкуса-Наура (БНФ) и синтаксические диаграммы.
Семантика описывает, какое значение имеют отдельные элементы языка, описанные синтаксисом. Семантика описывается естественным языком в правилах.
Поколения языков программирования
Программирование появилось еще в девятнадцатом веке, когда Ада Августа Байрон сформулировала «Инструкцию по расчетам для аналитической машины» британского математика Чарльза Бэббиджа. Аналитическая машина никогда не была закончена из-за своей механической сложности, так что первая в мире программа никогда не была запущена.
Формальное определение языка программирования появилось одновременно с созданием первого электромеханического компьютера. Конрад Цузе (1910 — 1995) разработал в середине сороковых годов с помощью последовательного исчисления первый в мире язык программирования высокого уровня. Однако полностью рукопись была опубликована только в 1972 году [Z72].
Развитие языков программирования можно разделить на пять поколений.
Первое поколение
Сначала электронные компьютеры программировались только на языках машинного уровня. Для этого процессору посылались бинарные коды, специально для данного процессора, как правило вместе с данными для обработки. Обычно речь шла об операциях по перемещению данных из памяти в регистр или о простой арифметике над содержимым регистра.
Второе поколение
На смену языкам первого поколения очень быстро пришли языки ассемблера ( Ассемблер), в которых операции формулировались читаемым открытым текстом, но все еще были ориентированы на регистр. Шестнадцатеричные машинные коды заменялись простыми, по возможности содержательными сокращениями, так называемыми мнемониками.
Программа на языке ассемблера переводилась на машинный язык с помощью транслятора, часто тоже называемого Ассемблером.
Третье поколение
Под языками третьего поколения понимают различные системы, возникающие примерно с начала 60х годов. В этот момент был сделан мощный скачок в сторону абстрагирования от конкретного типа аппаратной части. Разработчик больше не должен был писать программу под конкретную процессорную архитектуру с командами процессора. Поэтому эти языки часто обозначаются как языки «высокого» уровня.
Процедурные языки. Изначально речь шла проблемо-ориентированных языках с процедурной парадигмой программирования, ср. раздел 1.3.1. FORTRAN в 1954 году был первым из этих языков, которые широко распространились и продолжают распространяться и сейчас — после значительных «обновлений».
Разбиение программы на блоки впервые появилось в языке ALGOL, который сегодня больше не используется. В 1970 году началось распространение так называемого структурного программирования (язык Pascal). При этом начался отказ от «Спагетти-кода». Вместо явных развилок («goto») стали использоваться чистые управляющие структуры, которые позволяют распознать последовательность действий в исходном тексте программы.
Объектно-ориентированные языки. Одновременно примерно с 1970 годов начала развиваться объектно-ориентированная парадигма программирования, ср. раздел 1.3.1. Она базировалась по сути на ступенях развития языка Smalltalk, который был разработан уже в семидесятых годах Учебно-исследовательской группой лаборатории Xerox PARC (Palo Alto Research Center). Smalltalk будет подробно рассмотрен в главе 10.
С начала 1990х годов объектно-ориентированные аспекты были переняты большинством языков программирования.
Гибридные языки. Наряду с чисто процедурными и чисто объектно-ориентированными языками существуют и такие, которые перенимают обе концепции. С++ — их типичный представитель. Он использует функции из процедурных языков и классы из объектно-ориентированных.
Доменоспециализированные языки. Под это определение попадают все языки третьего поколения, которые распространены только в определенных областях деятельности (доменах), и оптимизированы именно под них.
Декларативные языки. Символическое программирование для решения не численных задач появилось около 1960 года вместе с языком LISP и сегодня привело к декларативной парадигме программирования, ср. раздел 1.3.1, которая есть сочетание логической и функциональной парадигм программирования, такое как программирование с ограничениями.