Современные методы и понятия программирования

Содержание

Слайд 2

Программа Лекции - экзамен Семинарские занятия Практика на ЭВМ – зачёт (необходимое условие для экзамена)

Программа

Лекции - экзамен
Семинарские занятия
Практика на ЭВМ – зачёт (необходимое условие для

экзамена)
Слайд 3

Рекомендации Разговаривать только с лектором исправлять замеченные ошибки лектора задавать вопросы

Рекомендации

Разговаривать только с лектором
исправлять замеченные ошибки лектора
задавать вопросы по ходу лекции
Входить

и выходить в любое время, не отвлекая аудиторию
Пропуски лекций не фиксируются
Распечать конспекты
старосты групп могут получить, написав письмо по адресу mike@iis.nsk.su
Слайд 4

Литература Болски М.И. Язык программирования Си. М.: «Радио и связь». 1988.

Литература

Болски М.И. Язык программирования Си. М.: «Радио и связь». 1988.
Керниган Б.,

Ритчи Д., Фбюэр А. Язык программирования Си. Задачи по языку Си. М.: «Финансы и статистика», 1985
Грогоно П. Программирование на языке Паскаль. М. «Мир», 1982
Н.Вирт. Алгоритмы + структуры данных = программы. М.: «Мир», 1985.
Пярнпуу А.А. Программирование на Алголе и Фортране. М.: «Наука»,
1978Пейган Ф. Практическое руководство по Алголу 68. М.: «Мир», 1979.

Языки программирования Ада, Си, Паскаль. М.: «Радио и связь», 1989
Геллер Д.П., Фридман Д.П. Структурное программирование на АПЛ. М.: «Машиностроение», 1982
Сафонов В.О. Автокод Эльбрус. ЛГУ, 1982.
Входной язык для системы АЛЬФА-6 (руководство к пользованию). ВЦ СО АН СССР. Новосибирск, 1976.
Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. 384 стр., с ил.; 2000, 4 кв.; Вильямс
Ахо А., Сети Р., Ульман Дж. Компиляторы: принципы, технологии и инструменты, – М.: «Вильямс». 2001.

Слайд 5

Что такое программирование? Заставить кого-то сделать что-то, что нам хочется Устав

Что такое программирование?

Заставить кого-то сделать что-то, что нам хочется
Устав ВС
Кулинарная книга
ПДД
Гипноз,

реклама, НЛП
Программирование ЭВМ
Слайд 6

Виды программирования (1) Прикладное программирование – создание программ для конечных пользователей

Виды программирования (1)

Прикладное программирование – создание программ для конечных пользователей
Надёжность,

устойчивость, «защита от дурака»
Интуитивность, удобство пользовательского интерфейса
Эффективность
Гуманитарные аспекты
Слайд 7

Виды программирования (2) Системное программирование – создание программ для создания программ

Виды программирования (2)

Системное программирование – создание программ для создания программ
Операционные системы
Система

управления базами данных
Системы программирования
Системы автоматизации проектирования (САПР)
Математические пакеты
...
Слайд 8

Виды программирования (3) Технология программирования – средства организации процесса програмирования Спецификация

Виды программирования (3)

Технология программирования – средства организации процесса програмирования
Спецификация
Проектирование
Отладка, тестирование
Докуменирование
Сопровождение, версионность

Слайд 9

Виды программирования (4) Теоретическое программирование –программа, как предмет исследования. Дискретная математика,

Виды программирования (4)

Теоретическое программирование –программа, как предмет исследования.
Дискретная математика, кибернетика (структуры

данных, алгоритмы)
Теория вероятности (сложность)
Алгебра и логика (программа – формула)
Системный анализ (проектирование)
Слайд 10

Логическая модель ЭВМ Вычислитель Исполнитель Условие Управление Память Данные Команды Результаты

Логическая модель ЭВМ

Вычислитель

Исполнитель

Условие

Управление

Память

Данные

Команды

Результаты

Виды команд:
Арифметические, битовые
Присваивания, пересылки
Ввод/вывод
Управляющие

Процессор

Слайд 11

Дискретная память Бит - элементарная единица хранения информации: 2 значения –

Дискретная память

Бит - элементарная единица хранения информации: 2 значения – 0

и 1 (или 3? Или 10?)
Байт – минимальная адресуемая группа битов из 8 битов (или 6? или 9? Или 10?)
Слово – группа из 4-х байтов, с которой может оперировать одна команда (или 2? Или 6?)
Сегменты, страницы, тэгированная память ....

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

0 1

0 1 2 3 4 5 6 7

0 1 2 3 4 5 6 7

0 1

Бит

Байт

Байт

Слово

...

Слайд 12

Операционная система Внутренние функции Управление ресурсами (память, время, бумага) Реакция на

Операционная система

Внутренние функции
Управление ресурсами (память, время, бумага)
Реакция на сигналы, аварийные ситуации
Статистика
Внешние

функции
Создание процессов и их взаимодействие
Безопасность, полномочия пользователей
Файловая система
Интерфейс
Слайд 13

Языки программирования: машинные языки Программа Хранится в (кодовом сегменте) памяти Представляется

Языки программирования: машинные языки

Программа
Хранится в (кодовом сегменте) памяти
Представляется последовательностью 0 и

1
Интерпретируется процессором
Пример:
00010010 10000100

Код команды

Операнд

Слайд 14

Языки программирования: ассемблер .MODEL SMALL .DATA b DW 5 c DW

Языки программирования: ассемблер

.MODEL SMALL
.DATA
b DW 5
c DW 3
a DW ?

.CODE
begin MOV AX,@DATA
MOV DS,AX
MOV AX,B
ADD AX,C
MOV A,AX
MOV AH,4CH
INT 21H
END begin

Мнемокод:
Мнемоники команд вместо их двоичного представления
Мнемонические названия ячеек памяти: как данных, так и команд

Слайд 15

Языки программирования: ассемблер Достоинства Понимаемость Простота модификации кода (например, вставка команд)

Языки программирования: ассемблер

Достоинства
Понимаемость
Простота модификации кода (например, вставка команд)
Простота и прозрачность преобразования (трансляции)

в машинный язык
Слайд 16

Языки программирования: макроассемблер Определение: MI MACRO C1,C2,CP,MP MOV ax,C1 I MUL

Языки программирования: макроассемблер

Определение:
MI MACRO C1,C2,CP,MP
MOV ax,C1 I
MUL C2
MOV CP,dx
MOV

MP,ax
ENDM
Вызовы в программе:
MI DI,A,S1,S2
MI S,2,DI,SI

Макросредства:
Определение макроса – текстового шаблона с параметрами - расширяемость, повышение уровня абстракции
Библиотеки макросов - переиспользование кода

Слайд 17

АЯВУ – алгоритмические языки высокого уровня Независимость от машины Универсальные языки Специализированные языки

АЯВУ – алгоритмические языки высокого уровня

Независимость от машины
Универсальные языки
Специализированные языки

Слайд 18

АЯВУ – алгоритмические языки высокого уровня Императивные – последовательность изменений состояния

АЯВУ – алгоритмические языки высокого уровня

Императивные – последовательность изменений состояния памяти
Algol-60,

Fortran, COBOL
Algol-68, Simula-67, PL/I
Pascal, C, Ada, Modula-2, C++
Java, C#
Слайд 19

АЯВУ – алгоритмические языки высокого уровня Функциональные – Lisp, Scheme, Miranda,

АЯВУ – алгоритмические языки высокого уровня
Функциональные – Lisp, Scheme, Miranda, ML,

Haskel
программа представляется совокупностью определений функций
λ-исчисление
Слайд 20

АЯВУ – алгоритмические языки высокого уровня Математическое определение Scheme

АЯВУ – алгоритмические языки высокого уровня
Математическое определение
Scheme

Слайд 21

АЯВУ – алгоритмические языки высокого уровня Логические языки – Prolog программа

АЯВУ – алгоритмические языки высокого уровня
Логические языки – Prolog
программа представляется

совокупностью фактов (аксиом) и правил вывода
математическая логика
Слайд 22

АЯВУ – алгоритмические языки высокого уровня Переписывание термов – Refal программа

АЯВУ – алгоритмические языки высокого уровня
Переписывание термов – Refal
программа представляет собой

терм со вставленными операциями перобразования
унификация
нормальные алгорифмы Маркова
Слайд 23

Реализация языков программирования Cемантика языка L сопоставляет программе p функцию L[p] : D → D

Реализация языков программирования

Cемантика языка L сопоставляет программе p функцию
L[p] : D

→ D
Слайд 24

Реализация языков программирования Интерпретатор языка L на языке I I[int](p,d) = L[p](d)

Реализация языков программирования

Интерпретатор языка L на языке I
I[int](p,d) = L[p](d)

Слайд 25

Реализация языков программирования Интерпретатор языка L на языке I Итеративно выбирает

Реализация языков программирования

Интерпретатор языка L на языке I
Итеративно выбирает очередную команду

в программе на языке L
Немедленно выполняет соответствующую последовательность действий в языке I.
Слайд 26

Реализация языков программирования Транслятор (компилятор) с языка L1 в язык L2

Реализация языков программирования

Транслятор (компилятор) с языка L1 в язык L2 –

это программа comp на языке I, удовлетворяющая следующему свойству: если p – программа на языке L1, то
obj = I[comp](p)
программа на языке L2, такая что для любых данных d
L2[obj](p) = L1[p](d)
Компилирует из переведённых команд программу на языке L2 , но не исполняет её
Слайд 27

Т-диаграммы Интерпретатор Транслятор

Т-диаграммы

Интерпретатор
Транслятор

Слайд 28

Многофазная трансляция И – итальянский, Р – русский, К – китайский

Многофазная трансляция

И – итальянский, Р – русский, К – китайский

Слайд 29

Общий язык, виртуальные машины Э – эсперанто, С – санскрит, Р - русский

Общий язык, виртуальные машины

Э – эсперанто, С – санскрит, Р -

русский
Слайд 30

Многоуровневая интерпретация И – итальянский, Р – русский, К - китайский

Многоуровневая интерпретация

И – итальянский, Р – русский, К - китайский

Слайд 31

Метод раскрутки С0 = ядро языка (присваивания, простые выражения, безусловный и

Метод раскрутки

С0 = ядро языка (присваивания, простые выражения, безусловный и условный

переход, процедуры без параметров)
С1 = С0 + сложные выражения
С2 = С1 + if, switch
L3 = L2 + while, loop
L4 = L5 + процедуры с параметрами
....
Сn = полный С
I = машинный язык
Слайд 32

Инициализация: «с чистого листа» Первый шаг

Инициализация: «с чистого листа»
Первый шаг

Слайд 33

Метод раскрутки Шаг раскрутки

Метод раскрутки

Шаг раскрутки

Слайд 34

Кросс-компиляция Перенос существующего транслятора на другую машину

Кросс-компиляция

Перенос существующего транслятора на другую машину

Слайд 35

Система программирования Текстовый редактор – текст программы (.c, .h) Включаемые файлы

Система программирования

Текстовый редактор – текст программы (.c, .h)
Включаемые файлы – предопределённые

макросы (.h)
Препроцессор – предобработка входных текстов (.c в .i)
Транслятор – перевести программу на машинный язык (.obj)
Библиотеки – «заготовки» программ на машинном языке (.lib)
Редактор связей – собрать готовую программу из частей (.exe)
Загрузчик – поместить программу в память на исполнение
Слайд 36

Система программирования Система построения – build, make

Система программирования

Система построения – build, make

Слайд 37

Система программирования Справочная система – контекстная помощь Отладка – пошаговое исполнение,

Система программирования

Справочная система – контекстная помощь
Отладка – пошаговое исполнение, точки останова,

просмотр текущих значений переменных...
Тестирование – проверка правильности работы программы на заранее заготовленных примерах
Профилирование – частота исполнения фрагментов программы