Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инф и Инф технол / ЛЕКЦИЯ 1 Инф ЖД 2 сем.doc
Скачиваний:
56
Добавлен:
10.04.2015
Размер:
80.38 Кб
Скачать

1.4. Логическое программирование

Новую область – логическое, или реляционное программирование, – открыло появление языка PROLOG (ПРОЛОГ) (PROgramming in LOGic – программирование в терминах логики). Этот язык был создан французским ученым А. Кольмероэ в 1973 году. В настоящее время известны и другие языки, однако наиболее развитым и распространенным языком логического программирования является именно Пролог. Так, имеется свыше 15 его различных реализаций на ПЭВМ. Языки логического программирования, в особенности Пролог, широко используются в системах искусственного интеллекта.

Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами (в терминах условий или ограничений) и цели (запроса). Процесс выполнения программы трактуется как процесс общезначимости логической формулы, построенной из программы по правилам, установленным семантикой используемого языка. Результат вычисления является побочным продуктом этого процесса. В реляционном программировании нужно только специфицировать факты, на которых алгоритм основывается, а не определять последовательность шагов, которые требуется выполнить. Это свидетельствует о декларативности языка логического программирования. Она метко выражена в формуле Р. Ковальского: "алгоритм = логика + управление".

Языки логического программирования характеризуются:

- высоким уровнем;

- строгой ориентацией на символьные вычисления;

- возможностью инверсных вычислений, то есть переменные в процедурах не делятся на входные и выходные;

возможной логической неполнотой, поскольку зачастую невозможно выразить в программе определенные логические соотношения, а также невозможно получить из программы все выводы правильные.

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

1.5. Объектно-ориентированное программирование

1.5.1. Что такое ооп

Объектно-ориентированное программирование – методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией (или, как еще говорят, экземпляром) определенного класса, а классы образуют иерархию на принципах наследуемости.

В данном определении можно выделить три части:

  • ООП использует в качестве элементов конструкции объекты, а не алгоритм;

  • каждый объект является экземпляром какого-либо определенного класса;

  • классы организованы иерархически.

Программа будет объектно-ориентированной только при соблюдении всех трех указанных требований. В частности, программирование, основанное на иерархических отношениях, не относится к ООП, а называется программированием на основе абстрактных типов данных.

Исходя из этого, ясно, что не все языки программирования являются объектно-ориентированными. По определению зарубежных специалистов, "если термин "объектно-ориентированный язык" что-то означает, то он должен означать язык, имеющий все необходимые средства для обеспечения объектно-ориентированного стиля программирования… Обеспечение такого стиля, в свою очередь, означает наличие соглашений по реализации стиля программирования. Если написание программы в стиле ООП требует специальных усилий или оно невозможно совсем, то этот язык не отвечает требованиям ООП". Теоретически возможна имитация объектно-ориентированного программирования на обычных языках, таких, как PASCAL или даже COBOL и ассемблер, но это крайне затруднительно. По мнению некоторых авторов, "язык программирования является объектно-ориентированным тогда и только тогда, когда выполняются следующие условия:

  • имеется поддержка объектов в виде абстракции данных, имеющих интерфейсную часть в виде поименованных операций и защищенную область локальных данных;

  • объекты относятся к соответствующим типам (классам);

  • типы (классы) могут наследовать атрибуты от супертипов (суперкласов)".

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

  • прогресс в области архитектуры ЭВМ, включая системную и аппаратную поддержку;

  • развитие языков программирования, таких, как Simula, Smalltalk, CLU, Ada;

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

К этому еще следует добавить три момента, оказавшие влияние на становление объектно-ориентированного подхода:

  • развитие баз данных;

  • исследования в области искусственного интеллекта;

  • достижения философии и теории познания.