Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП / ЯП / ЯП экзамен.doc
Скачиваний:
236
Добавлен:
11.05.2015
Размер:
322.05 Кб
Скачать
  1. Классификация языков программирования. Близость языков программирования к естественному языку.

Низкий уровень / Высокий уровень

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

Низкоуровневое – программирование, основанное на прямом использовании возможностей и особенностей конкретной вычислительной системы. Для разработки программ нужно знать

  1. Структуру функционирование системы в целом.

  2. Организацию оперативной памяти

  3. Состав внешних устройств (их адреса и форматы регистров)

  4. Организацию и функционирование процессора

  5. Состав его форматов. Состав форматов его регистров.

  6. Способы адресации. Системы команд.

  7. Система прерываний и т.д.

Намечают три вида низкоуровневых языков

  1. Машинный код

  2. Мнемо код

  3. Ассемблер , макроассемблер

Языки высокого уровня. Отличия их от низкоуровневых.

Повышение эффективности труда разработчиков. За счет абстрагирования от конкретных деталей аппаратного обеспечения.

Операторы и ключевые слова высокого уровня более осмысленны так же ведет к повышению производительности. Возможность повторного использования ранее написанных программных блоков. За счет оформления их в виде процедур и функций. Высокая переносимость программ. Недостаток – появление транслятора.

  1. Унификация и хорновский клоз в логических языках программирования.

Одним из наиболее важных аспектов программирования на Прологе является использование унификации (отождествления) и конкретизации переменных. Пролог пытается отождествить термы при доказательстве, или согласовании, целевого утверждения. Например, в программе для согласования запроса ?- человек(Х) целевое утверждение человек(X) может быть отождествлено с фактом служащий(Иван), в результате чего переменная Х станет конкретизированной: Х= Иван. Хорновский клоз (Ноrn clause) — это формула, в которой с помощью конъюнк­ции («и») элементарных формул выводится одиночная элементарная формула:

(s=>t)<=(t = tl||t2)^(s=>tl)

Логическое программирование основано на том наблюдении, что, ограничи­вая формулы хорновскими клозами, мы получаем правильное соотношение между выразительностью и эффективностью вывода. Такие факты, как t => t, являются выводами, которые ниоткуда не следуют, т. е. они всегда истинны. Вывод также называется головой формулы, потому при записи в инверсной форме оно появляется в формуле первым.

Чтобы инициализировать вычисление логической программы, задается цель:

“wor” => "Hello world"?

Машина вывода пытается сопоставить цель и вывод формулы. В данном слу­чае соответствие устанавливается сразу же: "wor" соответствует переменной s, a "Hello world" — переменной t. Это определяет подстановку выражений (в данном случае констант) для переменных; подстановка применяется ко всем переменным в формуле:

"wor" => "Hello world" <= ("Hello world" = tl || t2) ^ ("wor" => tl)

Теперь мы должны показать, что:

("Hello world" = t1|| t2) ^ ("wor" => tl)

является истинным, и это ведет к новому соответствию образцов, а именно попытке установить соответствие "Hello world" с tl || t2. Здесь, конечно, может быть много соответствий, что приведет к поиску. Например, машина вывода может допускать, чтобы tl указывало на "Не", a t2 указывало на "llо world"; эти подстановки затем проводятся во всем вычислении.

Соседние файлы в папке ЯП