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

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

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

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

Добавлен: 23.04.2023

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

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

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

СОДЕРЖАНИЕ

Введение

1. Понятие и классификация языков программирования

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

2.1 Поколение языков программирования

2.1.1 Первое поколение языков программирования

2.1.2 Второе поколение языков программирования

2.1.3 Третье поколение языков программирования

3. Языки процедурного программирования

3.1 Фортран

3.2 Кобол

3.3. Алгол

3.4. Бейсик

3.5. ПЛ/1

3.6. Паскаль

3.7. Ада

3.8. Си

4. Недостатки структурного программирования

5. Объектно-ориентированный подход к программированию

6. Основные понятия объектно-ориентированного программирования

6.1 Функции объекта

6.2 Объекты

6.3 Атрибуты объектов

6.4 Классы

6.5 Методы класса

7. Основные принципы объектно-ориентированного программирования

7.1 Модификаторы доступа private и public

7.2 Инкапсуляция и скрытие данных

7.3 Интерфейсы

7.4 Наследование

7.4.1 Суперклассы и подклассы

7.4.2 Множественное наследование

7.4.3 Спецификатор доступа protected

7.4.4 Недостатки использования спецификатора protected

8. Полиморфизм

Заключение

Библиография

Введение

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

1. Понятие и классификация языков программирования

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

Структура команды ЭВМ в самой простейшей её вариации состоит из двух частей таких как[1]:

  1. Операционная часть – это код операции (сложение, вычитание и т.д.)
  2. Адресная часть – это адреса ячеек памяти; в них хранятся значения операндов, с которыми надо выполнить заданную операцию. По количеству указанных адресов в команде, различают одно-, двух-, трехадресные команды.

ЭВМ воспринимает только команды, состоящие из единиц и нулей, т.е. машинный код. На начальной стадии развития ЭВМ человеку было необходимо составлять программы на языке, понятном компьютеру, в машинных кодах[2]. В те времена команды состояли из кода операций и адресов операндов, в виде различных сочетаний единиц и нулей.

Данный способ программирования был сложен, неудобен. Язык программирования слишком громоздок при написании на нем кода можно легко допустить ошибку, достаточно было записать в неправильном порядке единицу или ноль. Программировать на таком языке очень сложно так как программу очень трудно контролировать. Еще одна сложность заключается в том, что для программирования на машинном языке необходимо знать внутреннюю структуру ЭВМ и принцип работы каждого блока[3]. Ну и самое плохое в таком методе программирования то, что программист затрачивает много времени, труда и повышенного внимания для написания программ на машинном языке.


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

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

Для упрощения и автоматизации программирования на машинном коде каждой ЭВМ разрабатывался свой автокод (или Ассемблер), этот язык в полной мере повторяет набор команд машинного языка.

Дальнейшее развитие языковых средств шло по пути создания машинно-независимых языков, позволяющих писать программы на любой доступной ЭВМ с предусмотренной возможностью переноса на более совершенную архитектуру[5].

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

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

  • машинные языки (computer language) – языки программирования, воспринимаемые аппаратной частью компьютера (машинные коды);
  • машинно-ориентированные языки (computer oriented language) – языки программирования, которые отражают структуру конкретного типа компьютера (Ассемблеры);
  • алгоритмические языки (algorithmic language) – не зависящие от архитектуры компьютера языки программирования для отражения структуры алгоритма (Паскаль, Фортран, Бейсик и др.);
  • процедурно-ориентированные языки (procedure oriented language) – языки программирования, где имеется возможность описания программы как совокупности процедур (подпрограмм);
  • проблемно-ориентированные языки (universal programming language) – языки программирования, предназначенные для решения задач определенного класса (Лисп, РПГ, Симула и др.);
  • интегрированные системы программирования.

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

  • процедурные;
  • функциональные;
  • логические;
  • объектно-ориентированные.

Программа на процедурном языке программирования состоит из последовательности операторов (инструкций), задающих те или иные действия. Одним из важнейших квалификационных признаков процедурных языков является их уровень, характеризующий степень близости языка программирования и машинного языка. За начало отсчета уровней принимается машинный язык, уровень которого равен нулю. Язык человека рассматривается как язык наивысшего уровня[6].


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

Еще в древности наши предки пытались создать устройства, облегчающие процесс вычисления к примеру древние греки и римляне применяли приспособление, подобное счетам, абак. Трое ученых в XV веке немецкие ученые В. Шиккард (1623) [7], Г.Лейбниц (1673) [8] и французский ученый Б. Паскаль (1642) [9] создали механические вычислительные устройства – предшественники всем известного арифмометра.

Принцип программного управления и запоминаемой программы были предсказаны Ч. Бэббиджем при работе над проектом аналитической машины «Машины для исчисления разностей»[10]. Ч. Бэббидж долгие годы плодотворно сотрудничал с Адой Лавлейс. Ада Лавлейс в 1843 году перевела статью Менабреа по лекциям Ч. Бэббиджа, где в виде подробных комментариев (по объему они превосходили основной текст) сформулировала главные принципы программирования аналитической машины[11]. Первая программа для машины Бэббиджа была разработана Адой Лавлейс, также она убедила учёного в том, что в изобретении необходимо использовать двоичную систему исчисления, именно она разработала принцип программирования и предложила термины «рабочая ячейка» и «цикл».

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

Появление цифровых программно-управляемых машин повлекло за собой рождение новой области в прикладной математике программирования.

В 1950-х гг. программирование возникает как профессия и область науки. Первые программы составлялись вручную на машинных языках, они были громоздки, и отладка таких программа была – очень трудоемкой. Создание мнемокодов помогло упростить приемы и методы составления и отладки программ, мнемокоды используют символьную адресацию и являются близкими по своей структуре к машинному коду. Для перевода программы записанной в мнемокоде на машинный язык использовали Ассемблер[12]. Далее возникла необходимость в таком коде, который позволил бы обмениваться программами с возможностью применения на различных машинах, такое решение было найдено и названо автокод. Автокод - набор псевдокоманд для решения специализированных задач, например, научных или инженерных[13].


До конца 1950-х гг. основным элементом конструкции ЭВМ были электронные лампы (1-го поколения). В этот период развитие идеологии и техники программирования шло за счет достижений американских ученых Дж. фон Неймана[14], сформулировавшего основные принципы построения ЭВМ, и Дж. Бэкуса, под руководством которого в 1954 г. был создан Fortran (Formula Translation) - первый язык программирования высокого уровня, используемый до настоящего времени в разных модификациях. Так, в 1965 г. в Дартмутском колледже Д. Кэмэни и Т. Куртцем была разработана упрощенная версия Фортрана -Basic. В 1966 г. комиссия при Американской ассоциации стандартов (ASA) разработала два стандарта языка: Фортран и Базисный Фортран. Используются также дальнейшие модификации языка (например, 1970, 1990 гг.).

А.А. Ляпуновым[15] в 1953 году был предложен операторский метод программирования, сама идея заключалась в том, чтобы автоматизировать программирование, в таком методе алгоритм решения задачи представлялся в виде совокупности операторов, которые образовали логическую схему задачи. Схемы позволяли расчленить громоздкий процесс составления программы, части которой составлялись по формальным правилам, а затем объединялись в целое. В 1954 году в СССР создана первая программирующая программа ПП-1, данная программа была разработана именно для проверки идей операторного метода, её более совершенная версия ПП-2 была разработана в 1955 году. Разработки в данном направлении привели к созданию ПП БЭСМ в 1956 году, 1957 г. - ППСВ, в 1958 г. - для машины «Стрела».

В 1954 году в США стал применятся схожий по существу с оперативным методом алгебраический подход. В 1956 г. корпорацией IBM разработана универсальная ПП Фортран для автоматического программирования на ЭВМ IBM/704[16].

В этот период по мере накопления опыта и теоретического осмысления совершенствовались языки программирования. В 1958 -1960 гг. в Европе был создан ALGOL, который породил целую серию алголоподобных языков: Algol W, (1967), Algol 68, Pascal (Н. Вирт, 1970 г.), С (Д. Ритчи и Б. Керниган, 1972 г.), Ada (под руководством Ж. Ишбиа, 1979 г.), C++ (1983).

На начало 1970-х гг. существовало более 700 языков высокого уровня и около 300 трансляторов для автоматизации программирования.

2.1 Поколение языков программирования

Из большого числа языков программирования, возникших за период развития информационных технологий, общество разработчиков приняло только те языки, которые были наиболее удобными и совершенными[17].


Анализируя языки программирования и обстоятельства, сопутствующие их появлению, можно обнаружить множество общих черт. Это позволяет сгруппировать языки по основным используемым принципам и выделить поколения в их развитии. Буч приводит следующую классификацию Вегнера[18]:

  • Первое поколение (1954 – 1958 г.г.)

FORTRAN I Математические формулы

ALGOL-58 Математические формулы

Flowmatic Математические формулы

IPL V Математические формулы

  • Второе поколение (1959 – 1961 г.г.)

FORTRAN II Подпрограммы, раздельная компиляция

ALGOL 60 Блочные структуры, типы данных

COBOL Описание данных, работа с файлами

Lisp Обработка списков, указатели, сборка мусора

  • Третье поколение (1962 – 1970 г.г.)

PL/1 FORTRAN+ALGOL+COBOL

ALGOL-68 Более строгий преемник ALGOL-60

Pascal Более простой преемник ALGOL-60

Simula Классы, абстрактные данные.

Широкое распространение мини- и микро-ЭВМ способствовало развитию языков программирования, также большую роль в развитии языков программирования сыграл рост числа разработчиков программного обеспечения, и многообразие операционных систем и различных сфер применения информационных технологий[19].

2.1.1 Первое поколение языков программирования

До появления языков программирования первого поколения, специалисты управляли ЭВМ непосредственно на уровне двоичных кодов, в то время первые цифровые ЭВМ были громоздки и очень несовершенны также они обладали малым объемом памяти и несовершенной системой ввода-вывода. Языки первого поколения существенно облегчили процесс программирования приблизили программирование к предметной области и отдалили его от конкретной машины. Их словарь практически полностью был математическим[20]. Топология языков первого и начала второго поколения приведена в рисунке 1.1.

Рисунок 1.1

Топология языков первого и начала второго поколения

Источник: В.В.Мухортов,В.Ю.Рылов Объектно-ориентированное программирование, анализ и дизайн: метод. пособие / В.В.Мухортов,В.Ю.Рылов.-Новосибирск: Изд-во Новософт, 2002г.-108

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