Вопрос 14. Понятие семантического разрыва
По существу большинство современных ПЭВМ являются машинами фон Неймана. Вычислительной машине с архитектурой фон Неймана присущи следующие характеристики:
- Единственная последовательно адресуемая память. Программы и данные хранятся в одной памяти, адреса областей которой составляют последовательность типа 0, 1, 2...
- Память является линейной. Она одномерна, т.е. имеет вид вектора слов.
- Отсутствует явное различие между командами и данными. Их идентифицируют неявным способом при выполнении операций.
- Назначение данных не является их неотъемлемой составной частью. Набор битов может быть символьной строкой или числом с плавающей точкой.
Хотя архитектура фон Неймана была логичным решением проблемы создания первой машины с запоминаемой программой, она не всегда удовлетворяет требованиям, которые предъявляются к программам, написанным на языках высокого уровня. В отличие от перечисленных выше характеристик языки программирования высокого уровня имеют следующие характеристики:
- Память состоит из набора дискретных именуемых переменных.
- Используются многомерные, а не просто линейные данные.
- Существует резкое разграничение между данными и командами.
- Назначение данных является внутренней частью самих данных, т.е. связано с самими данными; тип данных определяет и операции, выполняемые над ними.
Машина фон Неймана оказывается плохим средством для выполнения программ, написанных на языках высокого уровня по следующим причинам:
- Чрезмерный расход программных средств с целью согласования возможностей языка со структурой памяти по фон Нейману.
- Машина фон Неймана универсальна (адресация к чему угодно в памяти и т.д.). Универсальность отсутствует в языках программирования, следовательно, компилятор решает эту проблему.
- В силу относительной примитивности принципа организации памяти по фон Нейману операции (набор команд), выполняемые машиной, оказываются в равной мере примитивными.
Итак, принципы, на которых основывается архитектура фон Неймана, не согласуются с принципами языков программирования и иногда даже противоречат им. Факт различия принципов, лежащих в основе языков программирования высокого уровня и тех принципов, которые определяют архитектуру ЭВМ, называется семантическим разрывом. Семантический разрыв - это мера различия принципов, лежащих в основе языков программирования высокого уровня, и тех принципов, которые определяют архитектуру ЭВМ. Одной из дополнительных причин семантического разрыва является использование двоичной арифметики:
- Современные вычислительные системы вынуждены затрачивать много времени на десятично-двоичные преобразования.
- Двоичные числа конечной длины - это лишь аппроксимация десятичных чисел (например, дробные десятичные числа). Чтобы понять наличие семантического разрыва, нужно выбрать какой-либо язык и архитектуру ПЭВМ, и изучить взаимосвязи между ними.