Файл: История и развитие методологии объектно-ориентированного программирования. Сферы применения (Исторические аспекты развития языков программирования).pdf
Добавлен: 29.02.2024
Просмотров: 99
Скачиваний: 0
СОДЕРЖАНИЕ
1. Исторические аспекты развития языков программирования
1.1. История развития представлений о программировании и формирования объектной модели
1.2. Краткая история методологий программирования
Методология машинного кодирования
Методология процедурного программирования
Методология логического программирования
Методология функционального программирования
Методология структурного программирования
Методология объектно-ориентированного программирования
2. Развитие объектно-ориентированной методологии программирования
2.1. Концептуальная база объектно-ориентированной методологии
2.2. Понятие объектно-ориентированного программирования
2.3. Виды объектно-ориентированных языков программирования
Достоинства методологии объектно-ориентированного программирования
Недостатки методологии объектно-ориентированного программирования
Содержание:
ВВЕДЕНИЕ
Сложность современных программных средств требует от их разработчиков владения наиболее перспективными технологиями. Одной из таких актуальных технологий в настоящее время является объектно-ориентированное программирование. Методология объектно-ориентированного программирования позволяет разрабатывать программные средства повышенной сложности за счет улучшения их технологичности (лучших механизмов разделения данных, увеличения повторяемости кодов, использования стандартизованных интерфейсов пользователя и т.д.)
Объектно-ориентированное программирование появилось в ходе длительной эволюции технологии разработки программных продуктов. В основу такой эволюции было положено стремление ускорить процесс создания надежных программных средств.
Применение объектно-ориентированной методологии программирования позволяет создавать хорошо структурированные, надежные в применении, относительно легко модифицируемые программные средства. Именно этим обусловлено широкое распространение объектно-ориентированного подхода и объектно-ориентированных языков программирования. Объектно-ориентированная методология программирования является одним из наиболее интенсивно развивающихся направлений теоретического и прикладного программирования.
Предмет курсовой работы: исторические аспекты развития методологии объектно-ориентированного программирования.
Цель работы: изучение основных исторических аспектов и особенностей развития методологии объектно-ориентированного программирования.
Для достижения поставленной цели необходимо решить ряд задач:
- Выполнить обзор исторических предпосылок возникновения языков и методологий программирования.
- Выполнить краткий обзор истории развития методологий программирования, в том числе объектно-ориентированной.
- Изучить концептуальную базу объектно-ориентированной методологии программирования.
- Рассмотреть основные виды объектно-ориентированных языков программирования.
- Выявить основные сферы применения объектно-ориентированного программирования.
1. Исторические аспекты развития языков программирования
1.1. История развития представлений о программировании
и формирования объектной модели
Для выражения программных идей разрабатывались языки программирования, которые в зависимости от поставленных задач обладали присущими именно конкретному языку набором свойств.
С момента создания первых ЭВМ подходы к разработке программного обеспечения прошли длинный и сложный путь. Безусловно, современное программное обеспечение на порядок масштабнее и сложнее своих предшественников. Именно возрастание сложности программного обеспечения стимулировало многочисленные прикладные исследования по методологии проектирования программного обеспечения, особенно в области декомпозиции, абстракции и иерархии. Таким образом, появилась тенденция перехода от языков программирования, которые бы указывали компьютеру, что делать, к языкам, которые описывали ключевые абстракции проблемной области и связи между ними. [6]
Рис. 1. Классификация П. Вегнера
П. Вегнер предложил классификацию языков программирования высокого уровня по поколениям в зависимости от того, какие языковые конструкции впервые в них появились (рис. 1). В каждом из последующих поколений изменялись поддерживаемые языками программирования механизмы абстракции. [4]
Языки программирования I поколения (1954 – 1958 гг.) применялись в научно-инженерной предметной области, словарь которой был практически полностью математическим. [6]
Рис. 2. Топология языков I поколения
Языки программирования II поколения (1959 – 1961 гг.) характеризовались развитием алгоритмических абстракций. В данный период мощность компьютеров достаточно быстро увеличивалась, что позволило расширить области их применения. Характерными особенностями языков программирования данного поколения являлись: задание типов данных, использование подпрограмм и указателей, раздельная компиляция, работа со списками, сборка мусора. [6]
Именно начиная с середины 1960-х годов подпрограммы стали важным промежуточным звеном между компьютером и решаемой задачей (рис. 3). Подпрограммы как механизм абстрагирования привели к существенным последствиям:
Рис. 3. Топология языков II поколения
- были разработаны языки программирования, которые поддерживают разнообразные механизмы передачи параметров;
- были заложены основы структурного программирования: языковая поддержка механизмов вложенности подпрограмм, научное исследование структур управления и областей видимости;
- появились методы структурного проектирования, позволяющие разрабатывать большие системы с использованием подпрограмм как готовых строительных блоков. [6]
В конце 1960-х годов в связи с появлением транзисторов, а позднее и интегральных схем, стоимость компьютеров существенно снизилась, а их производительность экспоненциально увеличилась. Развитие методологий программирования позволило существенно ускорить и облегчить разработку программного обеспечения, но при этом не успевало за растущими высокими темпами потребностями в программных средствах. Однако ни гибкость структурного метода, ни масштабы его использования не позволили существенно ускорить процесс программирования. Также возникла потребность в упрощении сопровождения и модификации разработанных программных средств. Необходимо было кардинально изменить способ построения программных систем таким образом, чтобы локальные изменения не могли нарушать работоспособность всей системы, и было легче модифицировать поведения системы. Далеко не все задачи поддавались алгоритмическому описанию и тем более алгоритмической декомпозиции. Требовалось приблизить структуру программ к структуре решаемых задач. [6]
В результате появились языки программирования III поколения (1962 – 1970 гг.) с поддержкой абстракции данных. У программистов появилась возможность создания пользовательских типов данных (рис. 4). Дейкстра одним из первых обратил внимание на важность построения программных систем в виде многоуровневых абстракций. Позднее Парнас ввел инкапсуляцию – сокрытие информации. [6]
Рис. 4. Топология языков III поколения
В 1970-х годах ряд исследователей (Лисков, Гуттаг, Шоу) разработали механизмы абстрактных типов данных, Хоар дополнил эти подходы теорией подклассов (рис. 5). Технологии построения баз данных также внесли свой вклад в разработку объектной модели, в модели, предложенной Ченом, моделирование происходит в терминах сущностей, их атрибутов и взаимоотношений. Свой вклад в развитие объектно-ориентированных абстракций внесли и исследователи в области искусственного интеллекта, разрабатывавшие методы представления знаний. Объектная модель получила широкое распространение лишь в конце 1980-х и начале 1990-х годов. [13]
Рис. 5. Топология языков IV поколения
Идеи и принципы объектной модели, положенные в основу объектно-ориентированной методологии программирования, позволили справиться со сложностью, характерной для широкого круга программных систем. Именно поэтому такой подход стал объединяющей концепцией компьютерной науки, применяемой не только в языках программирования, но и при разработке пользовательских интерфейсов, баз данных и даже компьютерной архитектуры.
Для более глубокого понимания факторов и причин возникновения объектно-ориентированной методологии программирования рассмотрим эволюцию методологий программирования. [7]
1.2. Краткая история методологий программирования
Прежде чем приступить к анализу эволюции методологий программирования, определим понятийный аппарат.
Под программированием будем понимать процесс описания программной идеи с помощью языка программирования, понятного приемнику и передатчику.
Программная идея – это направление деятельности, на основе которого описывается задача программирования.
Задача программирования – обеспечение взаимодействия компьютера и человека.
Концепция программирования является движущей силой для возникновения новой группы языков программирования.
Концепция программирования – это противоречие или совокупность противоречий, разрешение которых приводит к возникновению парадигмы программирования.
Парадигма – это устоявшаяся система научных взглядов, в рамках которой осуществляются исследования. [10]
Парадигма программирования (методология программирования) – это совокупность идей и понятий, которые сформулированы на основе концепции программирования и определяют стиль программирования.
Любая новая методология программирования сохраняет ряд некоторых признаков методологий-предшественниц, т.е. не является принципиально новой.
Для более наглядного представления эволюции методологий программирования опишем их в виде формализованного макета (рис. 6). [8]
Рис. 6. Макет описания методологии программирования
Методология машинного кодирования
Машинное кодирование является самой первой и примитивной парадигмой программирования и представляет собой систему команд вычислительной машины, интерпретируемую для конкретного микропроцессора. (рис. 7).
Рис. 7. Методология машинного кодирования
Основной недостаток методологии – сложность поставленной задачи, т.к. для решения сложных задач необходимо писать огромное количество строк кода. Таким образом, можно выделить противоречия методологии.
Увеличении сложности задачи программирования влечет недопустимое:
- увеличение машинного кода;
- усложнение структуры процессора;
- увеличение времени программирования.
Для разрешения обозначенных противоречий необходимо использовать принципы копирования и объединения. Таким образом, произошел переход к новой методологии программирования – ассемблированию. [6, 14, 18]
Методология ассемблирования
Выявленные в методологии машинного кодирования противоречия устраняются за счет следующих решений:
- используя принцип копирования, заменяется понятие адреса ячеек и их значения понятием «операнд»;
- используя принцип объединения, объединяются однородные машинные инструкции в мнемонические команды.
В итоге возникла новая методология программирования – ассемблирование (рис. 8) – методология, в которой осуществляется компиляция исходного текста программы на языке Ассемблер, в программу на машинном языке. Обращение к процессору выполняется через мнемонические команды, соответствующие инструкциям процессора вычислительной системы. [16]
Рис. 8. Методология «Ассемблирование»
В силу машинной ориентации языка ассемблера человеку сложно читать, и разрабатывать программы, как итог – увеличиваются затраты на их разработку. Помимо этого, программа, написанная на ассемблере, может быть запущена только на компьютере с архитектурой, под которую программа писалась. Далее приведем основные противоречия данной методологии:
- увеличение разнообразия аппаратных платформ приводит к увеличению количества несовместимых частей программных команд и процессора;
- увеличение сложности задачи программирования существенно увеличивает объем программного кода и время программирования;
- рост количества и сложности реализованных математических функций приводит к нарушению логики вычислений.