
- •1.1. Эволюция и классификация языков программирования.
- •1.2. Процедурное программирование
- •1.3. Функциональное программирование
- •1.4. Логическое программирование
- •1.5. Объектно-ориентированное программирование
- •1.5.1. Что такое ооп
- •1.5.2. Основные понятия и принципы ооп
- •1.6. Основные понятия языков программирования.
- •1.7. Структуры и типы данных языка программирования
- •1.8. Ада Лавлейс – первый в мире программист
- •1.8.1. Краткая историческая справка
- •1.8.2. Биография
1.4. Логическое программирование
Новую область – логическое, или реляционное программирование, – открыло появление языка PROLOG (ПРОЛОГ) (PROgramming in LOGic – программирование в терминах логики). Этот язык был создан французским ученым А. Кольмероэ в 1973 году. В настоящее время известны и другие языки, однако наиболее развитым и распространенным языком логического программирования является именно Пролог. Так, имеется свыше 15 его различных реализаций на ПЭВМ. Языки логического программирования, в особенности Пролог, широко используются в системах искусственного интеллекта.
Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами (в терминах условий или ограничений) и цели (запроса). Процесс выполнения программы трактуется как процесс общезначимости логической формулы, построенной из программы по правилам, установленным семантикой используемого языка. Результат вычисления является побочным продуктом этого процесса. В реляционном программировании нужно только специфицировать факты, на которых алгоритм основывается, а не определять последовательность шагов, которые требуется выполнить. Это свидетельствует о декларативности языка логического программирования. Она метко выражена в формуле Р. Ковальского: "алгоритм = логика + управление".
Языки логического программирования характеризуются:
- высоким уровнем;
- строгой ориентацией на символьные вычисления;
- возможностью инверсных вычислений, то есть переменные в процедурах не делятся на входные и выходные;
возможной логической неполнотой, поскольку зачастую невозможно выразить в программе определенные логические соотношения, а также невозможно получить из программы все выводы правильные.
Логические программы, в принципе, имеют небольшое быстродействие, так как вычисления осуществляются методом проб и ошибок, поиском с возвратами к предыдущим шагам.
1.5. Объектно-ориентированное программирование
1.5.1. Что такое ооп
Объектно-ориентированное программирование – методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией (или, как еще говорят, экземпляром) определенного класса, а классы образуют иерархию на принципах наследуемости.
В данном определении можно выделить три части:
ООП использует в качестве элементов конструкции объекты, а не алгоритм;
каждый объект является экземпляром какого-либо определенного класса;
классы организованы иерархически.
Программа будет объектно-ориентированной только при соблюдении всех трех указанных требований. В частности, программирование, основанное на иерархических отношениях, не относится к ООП, а называется программированием на основе абстрактных типов данных.
Исходя из этого, ясно, что не все языки программирования являются объектно-ориентированными. По определению зарубежных специалистов, "если термин "объектно-ориентированный язык" что-то означает, то он должен означать язык, имеющий все необходимые средства для обеспечения объектно-ориентированного стиля программирования… Обеспечение такого стиля, в свою очередь, означает наличие соглашений по реализации стиля программирования. Если написание программы в стиле ООП требует специальных усилий или оно невозможно совсем, то этот язык не отвечает требованиям ООП". Теоретически возможна имитация объектно-ориентированного программирования на обычных языках, таких, как PASCAL или даже COBOL и ассемблер, но это крайне затруднительно. По мнению некоторых авторов, "язык программирования является объектно-ориентированным тогда и только тогда, когда выполняются следующие условия:
имеется поддержка объектов в виде абстракции данных, имеющих интерфейсную часть в виде поименованных операций и защищенную область локальных данных;
объекты относятся к соответствующим типам (классам);
типы (классы) могут наследовать атрибуты от супертипов (суперкласов)".
Термин "объект" появился практически независимо в различных областях, связанных с компьютеризацией, и почти одновременно в начале 70-х годов для обозначения того, что может иметь различные проявления, оставаясь целостным. Это требовалось для того, чтобы уменьшить сложность программных систем, обозначая объектами компоненты системы или фрагменты представляемых знаний. Объектно-ориентированный подход был связан со следующими событиями:
прогресс в области архитектуры ЭВМ, включая системную и аппаратную поддержку;
развитие языков программирования, таких, как Simula, Smalltalk, CLU, Ada;
развитие методологии программирования, включая принципы модульности и защиты информации.
К этому еще следует добавить три момента, оказавшие влияние на становление объектно-ориентированного подхода:
развитие баз данных;
исследования в области искусственного интеллекта;
достижения философии и теории познания.