
- •Нижегородский государственный университет им. Н.И. Лобачевского
- •1.Предисловие
- •2.Замечания по терминологии
- •3.Кибернетика и информатика
- •4.Предпосылки информатики
- •4.1.Мечта человека об искусственном человеке
- •4.2.Усилители физической и умственной деятельности человека
- •4.3.Ключевые проблемы информатики
- •5.Формализация естественного языка как средства общения.
- •6.Формализация физических характеристик среды обитания
- •6.1.Дискретные и непрерывные множества
- •6.2. Понятия измерительной шкалы, числа и измерения
- •6.3.Натуральное число
- •6.4.Позиционная система счисления
- •6.5.Натуральная числовая прямая
- •6.6.Целые числа (положительные и отрицательные)
- •6.7.Вещественные числа
- •7.Формализация физических зависимостей
- •7.1.Функции
- •7.2.Элементарные функции
- •7.3.Элементарная алгебра, аналитические и численные вычисления
- •8.Аналоговые и цифровые вычислители
- •9.Простейшие вычислители
- •9.1.Аналоговые вычислительные линейки
- •9.2.Цифровой абак и русские счеты
- •9.3.Цифровые механические арифмометры
- •9.4.Хронология событий.
- •10.Аналитические машины Чарльза Беббиджа.
- •11.Формализация рассуждений
- •11.1.Логика рассуждений
- •11.2.Логические функции и алгебра логики
- •11.3.Алгебра логики и алгебра релейно - контактных схем
- •12.Накануне компьютерной эры
- •12.1. Зарождение цифровых систем управления
- •12.2.Перфокарточные сортировальные машины
- •12.3.Методология моделирования
- •13.Теоретические модели вычислений
- •13.1.Алгоритм и его свойства
- •13.2.Проблема слов в ассоциативном исчислении
- •13.3.Нормальный алгоритм Маркова
- •13.4.Рекурсивные функции
- •13.5.Машина Тьюринга
- •13.6.Равнодоступная адресная машина
- •14.Пионеры зарубежной компьютеризации
- •15.Становление информатики в России. Борьба за признание
- •16.Два типа электронных вычислительных машин
- •16.1.Аналоговая вычислительная машина (авм)
- •16.2.Цифровая электронная вычислительная машина (компьютер, эвм)
- •16.3.Аналог или цифра
- •17.Пионеры отечественной компьютеризации
- •18.Становление информатики в России. Начальный период
- •19.Оригинальные отечественные серийные эвм (компьютеры)
- •19.1.Эвм Стрела
- •Элементная база
- •Программное обеспечение
- •Описание машины
- •Технико-эксплуатационные характеристики
- •Особенности эвм
- •19.2.Семейство эвм "м-20"
- •Структура эвм
- •Элементная база
- •Программное обеспечение
- •Технико-эксплуатационные характеристики
- •Особенности машины
- •Об использовании эвм м-20
- •Описание машины
- •Элементная база
- •Программное обеспечение
- •Технико-эксплуатационные характеристики
- •Особенности эвм
- •19.3.Семейство эвм "бэсм"
- •19.3.1.Бэсм-1
- •Структура эвм
- •19.3.2.Бэсм-2
- •Структура эвм
- •19.3.3.Бэсм-4
- •Структура эвм
- •Элементная база
- •Программное обеспечение
- •Технико-эксплуатационные характеристики
- •19.4.Семейство эвм "Минск"
- •19.4.1.Минск-1
- •19.4.2.Минск-2
- •19.4.3.Минск -22
- •19.4.4.Минск-23
- •19.4.5.Минск-32
- •Описание машины
- •Программное обеспечение
- •Технико-эксплуатационные характеристики
- •Особенности эвм
- •19.5.Семейство эвм "Урал"
- •19.5.1.Урал-1, Урал-2, Урал-3, Урал-4
- •Описание машины
- •Элементная база
- •Программное обеспечение
- •Основные эксплуатационно-технические данные
- •Особенности эвм
- •19.5.2.Урал-11, Урал-14, Урал-16
- •Описание машины
- •Элементная база
- •Программное обеспечение.
- •Основные эксплуатационно-технические данные машины “Урал-11”
- •Особенности эвм
- •19.6.Эвм "Весна" и "Снег"
- •19.7.Эвм бэсм-6
- •Описание машины
- •Элементная база
- •Программное обеспечение
- •Технико-эксплуатационные характеристики
- •Особенности машины
- •19.8.Многопроцессорные вычислительные комплексы "Эльбрус"
- •Описание машины.
- •Элементная база
- •Программное обеспечение
- •Типовые комплектации
- •Производительность
- •19.9.Управляющие эвм
- •20.Эволюция элементарной базы и поколения эвм
- •20.1.Базисные логические элементы
- •20.2.Элементы регистровой памяти
- •20.3.Элементы памяти на магнитных сердечниках.
- •20.4.Интегральные схемы
- •20.5.Поколения эвм
- •21.Американская система ibm-360
- •22.Семейство Ряд "ес эвм"
- •22.1.Хронология создания
- •22.2.Ес эвм. Крупнейший промах или всеобщее счастье?
- •23.Автоматизация программирования
- •23.1.От двоичных кодов к ассемблерам - языкам символьного кодирования
- •Ассемблеры
- •Программы - загрузчики
- •23.2.Языки программирования высокого уровня
- •23.3.Трансляция программ
- •24.Первые компьютеры Сарова
- •25.Начало компьютеризации Нижегородского госуниверситета
- •26.Они были первыми
- •26.1.Конрад Цузе
- •26.2.А лан Тьюринг
- •26.3.Джон Маулчи и Джон Эккерт
- •26.4.Джон фон Нейман
- •26.5.А ксель Берг
- •26.6.В иктор Глушков
- •26.7.Сергей Лебедев
- •26.8.Исаак Брук
- •26.9.Николай Матюхин
- •26.10.Михаил Карцев
- •26.11.Юрий Базилевский
- •26.12. Башир Рамеев
- •26.13.Георгий Лопато
- •26.14. Всеволод Бурцев
- •27.Приложения
- •27.1.Основные черты кибернетики
- •27.1.1.Общенаучное значение кибернетики
- •27.1.2.Электронные счетные машины и нервная система
- •27.1.3.Прикладное значение кибернетики
- •27.2."Сигнал" Игоря Полетаева
- •27.3.Хронология компьютеростроения
- •Литература
- •Оглавление
23.3.Трансляция программ
Мы уже говорили, что представление данных и команд в компьютере целесообразно делать многоуровневым: с одной стороны - внешнее представление, удобное для человека, с другой стороны - внутреннее представление, эффективное для обработки компьютером. Для чисел это очевидная дилемма десятичной и двоичной системы кодирования, для языков общения человека с компьютером - иерархия языков программирования.
Мы также знаем, что компьютер может исполнять программу, представленную в двоичных кодах, загруженную в оперативную память и настроенную по месту загрузки. Такие программы вручную не изготавливаются. Они получаются в результате работы системных программ - трансляторов из текстов программ, записанных на символьных языках различного уровня.
Транслятором принято называть системную программу, преобразующую текст программы пользователя в семантически тождественный текст, записанный на языке более низкого уровня.
Сказанное выше можно представить в виде следующей диаграммы рис.82.
Рис. 82. Иерархия языков программирования и трансляторов
Начнем с автокода - ассемблера. Каждая секция программы, записанная на языке автокод, преобразуется транслятором ассемблирующего типа в объектный модуль, записанный на двоично-символьном языке, который "понимает" редактор связей. Этот редактор связей из нескольких объектных модулей формирует единый загрузочный модуль - перемещаемую двоичную программу. Эта программа записана в относительных адресах, как бы предназначенная для загрузки с нулевого адреса оперативной памяти. Загрузчик находит свободное место в оперативной памяти, в которое размещает загрузочный модуль, настраивая его по месторасположению. В результате получается абсолютный модуль, который может выполняться.
Если программа состоит из модулей, написанных на языке высокого уровня, вместо ассемблера она обрабатывается компилятором. В результате получаются объектные модули, которые преобразуются в загруженную двоичную программу вышеописанным образом.
Обратим внимание, что объектный модули, полученные из символьных модулей языка высокого уровня и символьных секций автокода, записаны на одном и том же языке редактора связей, т.е. неотличимы друг от друга. Это важное свойство позволяет при программировании на языке высокого уровня использовать ассемблерные вставки. Редактор связей не интересует предыстория объектных модулей.
Технологическая схема компиляции изображена на (рис.83). Три компьютера (K1, K2, K3) выполняют системные программы компилятора, редактора связей и загрузчика. Чаще всего, в качестве этих компьютеров используется один и тот же реальный компьютер. В результате получается абсолютный модуль программы пользователя, который исполняется на компьютере K0, реализуя преобразование исходных данных d в результирующие данные r.
Рис. 83. Технологическая схема компиляции. K0 – K3 различные компьютеры или последовательно один и тот же компьютер
Трансляторы подразделяются на два класса: компиляторы и интерпретаторы. Выше мы описали работу транслятора компилирующего типа- компилятора.
Транслятор интерпретирующего типа - интерпретатор, по сути дела представляет собой виртуальную машину "понимающую" язык программирования высокого уровня (рис. 84). Такая виртуальная машина состоит из аппаратуры компьютера и транслятора интерпретирующего типа, расширяющего возможности аппаратуры до "понимания" языка программирования высокого уровня.
Рис. 84. Транслятор - интерпретатор как виртуальная вычислительная машина
При разработке небольших программ интерпретатор имеет преимущество перед компилятором в смысле простоты использования. Основные его недостатки, проявляющиеся при конструировании больших программ: программа работает дольше, не реализуется сборка собирать большие программы из модулей, разработанных различными программистами.
Компилятор свободен от названных выше недостатков интерпретатора. Также преимуществом компиляции является возможность многократного исполнения загрузочного модуля без повторной его трансляции. Последнее соображение особо существенно в случае больших программ, для которых время, затрачиваемое на трансляцию и редактирование, является существенным.
В настоящее время в одной системе программирования реализуется как интерпретатор, так и компилятор для одного и того же языка (Паскаль, СИ).