Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
26.04.2015
Размер:
571.9 Кб
Скачать

1.5. Проблемы технологии

Традиционный компьютер общего назначения, как и традиционный язык программирования, основаны на принципе последовательного, директивного управления, а большинство задач формулируется на принципах логического, предикативного подхода.

Пример1 Семантика высказываний и семантика команд

Логика

находимся в положении 1 (включено) - горит

находимся в положении 2 (выключено) - не горит

Абстракция

p1 ( в положении 1), p2 ( в положении 2) - предикаты (true, false)

s- переменная состояния со значением (0-не горит, 1-горит)

p1=>s=1

p2=>s=0

Реализация

int p1,p2,s;

scanf(“%d %d”,&p1,&p2);

// и как лучше?

1)if(p1) s=1;

if(p2) s=0;

2)if(p1) s=1;

else s=0;

3)if(p1) s=1;

else if(p2)s=0;

else s=1;

Проблема

Контроль инвариантности, полноты и непротиворечивости высказываний в реализации не предусмотрен семантикой языка

Понятие неопределенного значения (NULL значения)

Пример2 Последовательность выполнения

Логика

поворот заданной точки плоскости на 45

Абстракция

x и y – координаты точки

x= 2x-2y

y= 2x+2y

Реализация

int x, y;

scanf(“%d %d”,&x,&y);

float s2= sqrt(2);

x= s2*x-s2*y;

y= s2*x+s2*y;

Проблема

При вычислении y используется измененный x

Проблема параллельных вычислений

Поиск аналогий и установка соответствий между этими, в общем разными, принципами и составляет суть процесса программирования.

Специализированные средства позволяют выполнить задачу определенного типа более эффективно, но бесполезны для задач другого типа.

Программно-технические средства общего назначения обладают алгоритмической полнотой и универсальностью, но требуют верификации, т.е. доказательства правильности своего кода.

Понятия и основные тезисы к разделу

Технология программирования- дисциплина, изучающая процессы программирования и порядок их прохождения

Архитектура вычислителя – определяет структурную схему вычислителя, средства и способы доступа к элементам этой структурной схемы, набор и формат исполняемых команд, организацию памяти и способы доступа к ней.

Архитектура компьютера — помимо базовых принципов архитектуры любого вычислителя заключает в себе требования к функциональности (назначение, организация и разрядность интерфейсов, адресация памяти, правила обработки прерываний, набор и доступность регистров), а также принципы организации основных узлов, таких как процессор, ОЗУ, видеоподсистема, дисковая система, периферийные устройства и устройства ввода-вывода.

Машина Тьюринга – один из вариантов архитектуры вычислителя, которая была предложена на раннем этапе развития программных систем наряду с архитектурой конечных автоматов, машиной Поста и др., согласно тезису Черча этот тип вычислителя обладает алгоритмической полнотой

Машина фон Неймана – архитектура предложенная рабочей группой под руководством Джоном фон Нейманом в Принстоне и послужившая основой современных компьютеров, определяет процессор и однородную память, предназначенную для совместного хранения команд и данных

Гарвардская архитектура – отличается от архитектуры фон Неймана неоднородностью памяти по отношению к хранению и доступу для команд и данных

CISC (англ. Complex Instruction Set Computer)— концепция вычисления с полным набором команд (100-200), которая характеризуется нефиксированным значением длины команды, небольшим числом регистров, каждый из которых выполняет строго определённую функцию.

RISC (англ. Reduced Instruction Set Computer)— концепция вычисления с сокращённым набором команд (50-100), которая характеризуется фиксированным значением длины команды, большое количество регистров общего назначения (32 и более), любые операции «изменить» выполняются только над содержимым регистров.

Компьютер общего назначения - способен эмулировать машину Тьюринга.

Операция– простейшая инструкция задающая работу исполнителя

Структурное программирование– программирование, допускающее для управления порядком выполнения операций только последовательное выполнение, ветвление и итерацию

Компиляция- специальные действия по преобразованию исходного вида программы в вид понятный исполнителю

Окружение языка– включает операционную среду, компилятор, библиотеки, сервисные средства

Язык программирования высокого уровня – характеризуется лексикой подобной естественному языку, семантикой связанной с областью использования, независимостью от исполнителя

Язык высокого уровня общего назначения - язык высокого уровня предоставляющий возможность создания программы для эмулирования машины Тьюринга.

Верификация программы -доказательство правильности кода программы

Императивное программирование- технология программирования, характеризующаяся принципом последовательного изменения состояния вычислителя пошаговым образом.

Событийно-управляемое программирование– подход при котором задаются реакции программы на различные события