- •Московский государственный институт электроники и математики
- •Архитектура эвм и систем
- •Содержание
- •Основные сокращения:
- •Введение
- •Конвейер команд
- •Архитектура эвм и языки программирования
- •Аппаратное и программное обеспечение для разработки системы контроля и управления объектами
- •Функциональная структура эвм Фон-Неймана
- •Каноническая структура эвм Фон-Неймана
- •Процессор
- •Вычислитель
- •Спецпроцессор
- •Определение эвм
- •Реализация моделей вычислителя
- •Понятие архитектуры эвм
- •Определение и понятия архитектуры эвм
- •Общее определение архитектуры средств обработки информации
- •Семейство эвм
- •Архитектурное сходство и родство представителей семейства
- •Поколения эвм
- •Показатель эффективности архитектурных свойств эвм.
- •Первое поколение (1949-1951[формирование поколений])
- •Второе поколение (1955-1966[формирование поколений])
- •Третье поколение эвм (1963 – 1965[формирование поколений])
- •О новшествах в машинах 3-его поколения:
- •Сравнительные характеристики эвм 1-3го поколения.
- •Конструктивно-технологический и функциональный признаки свт.
- •Признаки поколения свт.
- •Понятие архитектуры современного x86-процессора
- •Архитектура как совместимость с кодом
- •Архитектура как характеристика семейства процессоров
- •64-Битные расширения классической x86 (ia32) архитектуры
- •Процессорное ядро
- •Различия между ядрами одной микроархитектуты
- •Ревизии
- •Частота работы ядра
- •Микроархитектура процессоров Intel Itanium 2
- •Языки программирования
- •Поколения языков программирования
- •Первое поколение
- •Второе поколение
- •Третье поколение
- •Четвертое поколение.
- •Пятое поколение.
- •Классификация языков программирования
- •Парадигмы программирования.
- •Степень абстракции.
- •Распространенные языки программирования
- •Почему не существует «идеальных» языков программирования
- •Ассемблер
- •Архитектура микропроцессоров ia-32.
- •Введение.
- •Регистры и структура памяти ia-32
- •Команды ia-32
- •Литература
Степень абстракции.
Степень абстракции языка определяет, насколько семантика отдельных конструкций языка отличается от команд микропроцессора. Низшая степень абстракции у машинных языков. Машинные языки воспринимаются выполняющим процессором напрямую. Следующую плоскость абстракции составляют языки ассемблера.
Типичные диалекты ассемблера разрешают употребление символьных имен и меток перехода, а также определение макро-блоков. Ассемблер переводит исходный текст в машинный язык, в котором символьные имена и метки переходов, также как и макро-блоки представляются при помощи номерных кодов машинных команд и адресов.
Языки программирования высокого уровня явно абстрагируются от лежащей в основе процессорной архитектуры. Процедурные языки содержат управляющие структуры, которые компилятор переводит в элементарные команды для процессора. Абстракции данных поддерживаются через определения новых типов данных, таких как структуры или массивы.
Еще на один шаг дальше идут объектно-ориентированные языки. Здесь данные и методы сливаются в единую абстрактную единицу, не имеющую прямого соответствия с процессорными платами. Самую высокую степень абстракции обнаруживают декларативные языки, в которых нет явного различия между данными и операциями.
Схема выполнения в языках программирования.
Компилирующие языки программирования. Исходный текст программы перед первым выполнением сначала переводится компилятором в машинный код. За счет этого предперевода достигается высокая скорость выполнения. В дальнейшем при компилировании исходный текст проверяется на наличие ошибок.
Интерпретирующие языки программирования. Исходный текст программы при выполнении будет прочитан интерпретатором и пошагово обработан. Обработка интерпретируемой программы выглядит медленной по сравнению с компилируемой, но является более гибкой. С одной стороны, дорогостоящий цикл Исправление-Компилирование-Тест слишком сложен для небольших изменений в программе, с другой стороны интерпретатор может следить за программой в течение всего времени выполнения.
Смешанные формы. Ранние языки программирования могли быть четко отнесены к одной из групп, сегодня же различия быстро стираются. Современные языки программирования, такие как Java или C# компилируют выполняемую программу сначала в промежуточный код, который после этого выполняется при помощи интерпретатора в виде виртуальной машины. В Java, например, при выполнении обозначаются так называемые «хотспоты» (часто используемые сегменты программы), которые при выполнении переводятся в машинный код. За счет этого программы на Java или C# выполняются в контролируемой программной оболочке, без критического ухудшения общего времени выполнения по сравнению с исключительно компилируемыми программами.
Распространенные языки программирования
Сегодня существует более 1000 различных языков программирования, некоторые из которых были популярны только пару лет.
Важнейшие языки программирования
Язык |
Краткое описание |
Ada |
Язык для требовательного к безопасности использования, структурированный язык в области реального времени, разработан Жаном Ишбиа из фирмы Honeywell Bull в 1970х годах, поддерживается министерством обороны США. |
ALGOL |
«Algorithmic Language» («Алгоритмический язык»), с 1960 года, предшественник многих императивных языков. |
ANSYS |
«Analysis Systems» («Аналитические системы»), для описания расчетов с применением метода конечного элемента. |
APL |
Язык программирования для мощных вычислительных машин старого поколения, специфицирован в 1961 году Иверсоном. |
Apple Script |
Универсальный скриптовый интерфейс под Mac OS X |
APT |
«Automatic Programmed Tools» («Автоматически программируемые инструментальные средства»), язык для вычислительных машин, с 1959 года. |
Assembler |
Близкий к машинному язык программирования |
AutoCAD |
Язык четвертого поколения для компьютерного дизайна. |
Awk |
Язык обработки строк для ОС UNIX |
BASIC |
Разработанный для начинающих универсальный язык программирования. |
BCL |
Предшественник C |
C |
Аппаратноблизкий универсальный язык программирования. |
C* |
C-диалект для параллельного программирования. |
C# |
C-производный фирмы Microsoft. |
C++ |
Объектно-ориентированное расширение C. |
CHILL |
МККТТ язык высокого уровня, разработан в 1976 для телекоммуникационной области. |
CLOS |
Common LISP Object System (всеобщая система объектов LISP), с 1988, расширение LISP в объектно-ориентированные языки. |
CLP |
Constrained Logic Programming (Программирование ограниченной логики), с 1990 года |
COBOL |
Common Business Oriented Language (Единый дело-ориентированный язык), примерно с 1960 гг, еще распространен в банковской области. |
CSP |
Communicating Sequential Processes (Взаимодействие последовательных процессов), разработанный Тони Хоаре формальный язык для описания параллельных процессов. |
Delphi |
Объектно-ориентированный язык программирования. |
DSL |
Design System Language (язык систем дизайна), предшественник PostScript |
Dylan |
Dynamic Language (динамический язык), потомок Scheme, разработан под руководством Apple в 1992 году для КПК Ньютон |
Eiffel |
Объектно-ориентированный язык программирования. |
Erlang |
Язык реального времени с функциональной парадигмой |
Forth |
Проблемо-ориентированный язык с перевернутым польским представлением для описания выражений, разработан в 1960 году Чарльзом Г. Муром. |
FORTRAN |
Первый язык программирования высокого уровня (1954 г), распространен в научных отраслях и сегодня благодаря мощным библиотекам. |
Haskell |
Функциональный язык программирования, основан на лямбда-вычислениях, таких как Миранда, назван в честь американского математика Хаскела Брукса Керри (с 1990 года) |
HTML |
Hypertext Markup Language (язык разметки гипер-текста), описательный язык для веб-сайтов, ср. [H04] |
IDL |
Interface Definition Language (язык описания интерфейса), для абстрактного описания распределенных объектов |
Java |
Объектно-ориентированный язык программирования для универсального применения. |
JavaScript |
Скриптовый язык, в основном применяется для «приглаживания» HTML-страниц. |
JCL |
Job Control Language (язык контроля работы), скриптовый язык, с 1960 г. |
LISP |
List Processor (обработчик списков), символьно-ориентированный язык реализации лямбда-исчислений (с 1960 года), распространен в области искусственного интеллекта (ИИ) и компьютерной алгебры. |
Logo |
Потомок LISP (с 1970), разработан Сеймуром Папертом, легкая адаптация языка-интерпретатора |
Maple |
Программируемая система компьютерной алгебры. |
Mathematica |
Программируемая система компьютерной алгебры. |
MATLAB |
MATrix LABoratory (МАТематическая ЛАБоратория), математическое программное обеспечение, широко применяется в области компьютерного моделирования. |
Miranda |
Легкий для изучения функциональный скриптовый язык (1985 год), разработан Девидом Тернером, больше не поддерживается |
Modula-2 |
Расширение Pascal в модульную концепцию, um modulare Konzepte, разработан в 1978 году Николаусом Виртом |
Mondrian |
Функциональный язык, похожий на Haskell |
Oberon |
Наследник Modula-2 и Pascal, разработан Николаусом Виртом и Юргом Гуткнехтом, в основном для использования в обучении |
Objective-C |
Похожее на Smalltalk расширение C, разработан в середине 80х годов Бредом Коксом, объектно-ориентированный интерфейс программирования под Mac OS X |
Occam |
Язык для параллельного программирования транспьютеров, 1985 год |
Pascal |
Процедурный язык программирования, разработан в 1968 году Николаусом Виртом, назван в честь французского математика Блейза Паскаля, раньше часто использовался при обучении программированию |
PEARL |
Process and Experimental Automation Realtime Language (язык процессов и экспериментальной автоматизации в реальном времени), язык для мультизадачных систем и систем реального времени |
Perl |
Универсальный скриптовый язык, разработан в 1987 году Ларри Волом, основа многих веб-приложений. |
PHP |
PHP: Hypertext Preprocessor (PHP: гипертекстовая предобработка), для динамического составления веб-страниц. |
PL/I |
Programming Language I (язык программирования I), предшественник С, разработан в 1964 году фирмой IBM |
PostScript |
Язык описания страниц, разработан в 1984 году фирмой Adobe, ср. [H04] |
PROLOG |
Programming in Logic (логическое программирование), разработан в начале 70х годов Алэном Кольмеро, применяется в отрасли искусственного интеллекта. |
Python |
Скриптовый язык, который изначально был разработан для распределенной промышленной системы Амеба (1991 год). |
Ruby |
Скриптовый язык, похожий на Python, с объектно-ориентированными и функциональными элементами, разработан в 1993 году Юкихиро Матсумото. |
Scheme |
Диалект LISP, разработан в 1975 году в МТИ, поддерживает также императивные элементы |
Self |
Объектно-ориентированный и базированный на прототипах язык, как правило академического применения, разработан в 1986 году Дэвидом Унгаром и Рэнделлом Б. Смитом |
SGML |
Standard Generalized Markup Language (стандартный обощенный язык разметки), описательный язык для маркироваки текстов, с 1978 года |
Simula |
Предшественник Smalltalk, разработан в 1966 Оле-Йоханом Далом и Кристеном Нугардом |
Smalltalk |
Объектно-ориентированный язык программирования, подготовил дорогу многим другим таким языкам, разработан в 1970х годах Аланом Кеем, Даниэлом Ингалльсом и Адель Гольдберг в центре исследований XEROX Parc. |
SNOBOL |
Ориентированный на строки символьный язык, для манипуляций с цепочками символов, разработан в 1965 году Д. Ж. Фарбером, Р.Е. Грисволдом и Ф.П. Поленски из AT&T. |
SQL |
Standard Query Language (стандартный язык запросов), язык запросов к базам данных, с 1980 года |
Tcl |
Tool command language (язык управления инструментами), легкий для изучения скриптовый язык с влиянием C и LISP, с 1988 года, разработан Джоном Оустерхоутом. |
VBasic |
Visual Basic, основанный на Basic язык от Microsoft, разработан в 1991 и продолжает развиваться дальше. |
VRML |
Virtual Reality Modeling Language (язык моделирования виртуальной реальности), описательный язык для моделирования трехмерных миров, ср. [H04] |
XML |
eXtensible Markup Language (расширяемый язык разметки), мета язык для определения описательных языков, XML является частью SGML, ср. [H04] |
XSLT |
Функциональный язык программирования для перевода XML-документов либо опять в XML либо в другие форматы, разработан Джеймсом Кларком и Михаилом Каем, с 1999г. |
Родословная» важнейших языков программирования и их потомков