Файл: Технологии программирования. История развития программирования в России..pdf

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

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

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

Добавлен: 22.04.2023

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

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

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

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

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

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

И вновь сложность разрабатываемого программного обеспечения стала ограничиваться способностью программиста отслеживать процессы обработки данных уже на новом уровне. К этому добавились проблемы согласования интерфейса при разработке проекта несколькими программистами. В результате возникла проблема создания технологии разработки сложных программных продуктов, снижающей вероятность появления ошибок. Такая технология была создана и получила название «структурное программирование».

1.3  Структурное программирование.

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

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

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


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

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

Принципы структурного программирования были впервые реализованы в языке ALGOL. Первая версия ALGOL была выпущена в 1958 году (и называлась ALGOL-58). Вторая версия – через два года, в шестидесятом году. Затем – в 1968 году была выпущена усовершенствованная версия этого языка программирования высокого уровня. Заточена эта версия была под то, чтобы с легкостью можно было конвертировать обычные математические формулы в код на этом языке программирования.

ALGOL был популярен не только в странах Европы (именно там его и создали), но и в СССР. Он внес большое влияние на все последующие языки, в том числе – на язык программирования Pascal. 

1.3.1. Фортран в СССР

Фортран в СССР появился позже, чем на Западе, поскольку поначалу у нас более перспективным языком считался Алгол. Во внедрении Фортрана большую роль сыграло общение советских физиков со своими коллегами из CERN, где в 1960-х годах почти все расчёты велись с использованием программ на Фортране.

Первый советский компилятор с Фортрана был создан в 1967 г. для машины «Минск-2», однако он не получил большой известности. Широкое внедрение Фортрана началось после создания в 1968 г. компилятора ФОРТРАН-ДУБНА для машины БЭСМ-6. Машины ЕС ЭВМ, появившиеся в 1972 г., уже изначально имели транслятор Фортрана («позаимствованный» с IBM/360 вместе с другим программным обеспечением)

1.3.2 Современный Фортран. Достоинства языка

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


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

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

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

1.4  Модульное программирование.

Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм). Например, это могут быть модуль управления графическими ресурсами, модуль вывода данных на принтер и т.д.

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

Практика программирования показывает, что структурный подход в сочетании с модульным программированием позволяет создавать достаточно надежные программы, объем которых не превышает  100000 операторов. При большем же объеме программы сложность межмодульных интерфейсов обычно возрастает настолько, что предусмотреть взаимовлияние отдельных частей программы становится очень сложно. Кроме того, «узким местом» модульного программирования является то, что ошибка в интерфейсе при вызове подпрограммы выявляется только при выполнении всей готовой программы (поскольку из-за раздельной компиляции модулей обнаружить эти ошибки раньше невозможно).


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

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

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

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

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

1.6 Структурное и модульное программирование

В 1965 г. итальянцы Бом и Джакопини предложили использовать в качестве базовых алгоритмических элементов следование, ветвление и цикл. Почти в то же время к аналогичным выводам пришел голландский ученый Э. Дийкстра, заложивший основы структурного программирования. В 1970-х гг. эта методология оформилась, и корпорация IBM сообщила о применении в разработке программного обеспечения «Усовершенствованных методов программирования», одним из компонентов которых являлась технология нисходящего структурного программирования, основу которого составляет следующее:


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

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

Развитие получило модульное программирование, основа которого заключается в следующем:

* функциональная декомпозиция (разбиение) задачи на самостоятельные подзадачи - модули, связанные только входными и выходными данными;

* модуль представляет собой «черный ящик», позволяющий разрабатывать части программ одного проекта на разных языках программирования, а затем с помощью компоновочных средств объединять их в единый загрузочный модуль;

* должно быть ясное понимание назначения всех модулей задачи и их оптимального сочетания;

* с помощью комментариев должно описываться назначение всех переменных модуля.

В период 1970--1980-х гг. развитие теоретических исследований оформило программирование как самостоятельную научную дисциплину, занимающуюся методами разработки программного обеспечения (ПО).

Профессиональное программирование вышло на уровень технологии.

Методы разработки ПО синтезируют:

* методы инженерных расчетов для оценки затрат и выбора решений;

* математические методы для составления алгоритмов;

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

1.7 Компонентное программирование

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