Файл: История и развитие методологии объектно-ориентированного программирования. Сферы применения (Исторические аспекты развития языков программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.02.2024

Просмотров: 64

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. Исторические аспекты развития языков программирования

1.1. История развития представлений о программировании и формирования объектной модели

1.2. Краткая история методологий программирования

Методология машинного кодирования

Методология ассемблирования

Методология процедурного программирования

Методология логического программирования

Методология функционального программирования

Методология структурного программирования

Методология объектно-ориентированного программирования

2. Развитие объектно-ориентированной методологии программирования

2.1. Концептуальная база объектно-ориентированной методологии

2.2. Понятие объектно-ориентированного программирования

2.3. Виды объектно-ориентированных языков программирования

Достоинства методологии объектно-ориентированного программирования

Недостатки методологии объектно-ориентированного программирования

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

Содержание:

ВВЕДЕНИЕ

Сложность современных программных средств требует от их разработчиков владения наиболее перспективными технологиями. Одной из таких актуальных технологий в настоящее время является объектно-ориентированное программирование. Методология объектно-ориентированного программирования позволяет разрабатывать программные средства повышенной сложности за счет улучшения их технологичности (лучших механизмов разделения данных, увеличения повторяемости кодов, использования стандартизованных интерфейсов пользователя и т.д.)

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

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

Предмет курсовой работы: исторические аспекты развития методологии объектно-ориентированного программирования.

Цель работы: изучение основных исторических аспектов и особенностей развития методологии объектно-ориентированного программирования.

Для достижения поставленной цели необходимо решить ряд задач:

  1. Выполнить обзор исторических предпосылок возникновения языков и методологий программирования.
  2. Выполнить краткий обзор истории развития методологий программирования, в том числе объектно-ориентированной.
  3. Изучить концептуальную базу объектно-ориентированной методологии программирования.
  4. Рассмотреть основные виды объектно-ориентированных языков программирования.
  5. Выявить основные сферы применения объектно-ориентированного программирования.

1. Исторические аспекты развития языков программирования


1.1. История развития представлений о программировании
и формирования объектной модели

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

С момента создания первых ЭВМ подходы к разработке программного обеспечения прошли длинный и сложный путь. Безусловно, современное программное обеспечение на порядок масштабнее и сложнее своих предшественников. Именно возрастание сложности программного обеспечения стимулировало многочисленные прикладные исследования по методологии проектирования программного обеспечения, особенно в области декомпозиции, абстракции и иерархии. Таким образом, появилась тенденция перехода от языков программирования, которые бы указывали компьютеру, что делать, к языкам, которые описывали ключевые абстракции проблемной области и связи между ними. [6]

Рис. 1. Классификация П. Вегнера

П. Вегнер предложил классификацию языков программирования высокого уровня по поколениям в зависимости от того, какие языковые конструкции впервые в них появились (рис. 1). В каждом из последующих поколений изменялись поддерживаемые языками программирования механизмы абстракции. [4]

Языки программирования I поколения (1954 – 1958 гг.) применялись в научно-инженерной предметной области, словарь которой был практически полностью математическим. [6]

Рис. 2. Топология языков I поколения

Языки программирования II поколения (1959 – 1961 гг.) характеризовались развитием алгоритмических абстракций. В данный период мощность компьютеров достаточно быстро увеличивалась, что позволило расширить области их применения. Характерными особенностями языков программирования данного поколения являлись: задание типов данных, использование подпрограмм и указателей, раздельная компиляция, работа со списками, сборка мусора. [6]

Именно начиная с середины 1960-х годов подпрограммы стали важным промежуточным звеном между компьютером и решаемой задачей (рис. 3). Подпрограммы как механизм абстрагирования привели к существенным последствиям:


Рис. 3. Топология языков II поколения

  1. были разработаны языки программирования, которые поддерживают разнообразные механизмы передачи параметров;
  2. были заложены основы структурного программирования: языковая поддержка механизмов вложенности подпрограмм, научное исследование структур управления и областей видимости;
  3. появились методы структурного проектирования, позволяющие разрабатывать большие системы с использованием подпрограмм как готовых строительных блоков. [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. Методология «Ассемблирование»

В силу машинной ориентации языка ассемблера человеку сложно читать, и разрабатывать программы, как итог – увеличиваются затраты на их разработку. Помимо этого, программа, написанная на ассемблере, может быть запущена только на компьютере с архитектурой, под которую программа писалась. Далее приведем основные противоречия данной методологии:

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