36222

Парадигмы программирования. Правила структурного программирования

Доклад

Информатика, кибернетика и программирование

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

Русский

2015-01-18

37.5 KB

1 чел.

Парадигмы программирования

Программирование как таковое существует с середины XX века. По преобладанию определённой парадигмы можно различить три периода:

  1.  На заре  появления программирования как такового никаких правил, ограничивающих фантазию программиста, не существовало. Причём создавались вполне работоспособные программы. Это можно объяснить только тем, что  программы в те времена были в основном простые, работала над каждой группа, не больше, чем 10 человек, а чаще всего вообще только 1 программист. Он же потом осуществлял сопровождение программы и перенос в случае необходимости на другие аппаратные платформы.

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

На это были свои причины, написание логичных и читабельных программ было невозможно  объективно, поскольку не было нужных средств в самих языках программирования, например, каждая ветвь условного оператора (IF) в языке FORTRAN позволяла исполнить только 1 оператор в каждой ветви, поневоле приходилось использовать безусловный переход (GOTO), чтобы отработать все операторы ветви, а затем ещё один переход, чтобы вернуться на следующий оператор после IF.

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

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

В конце 60-х годов знаменитый программист Эдсгер Дейкстра, обозначив проблему, первым ввёл термин структурное программирование. Он обозначил им необходимость следовать при написании программ определенным правилам, придерживаться строгой иерархии при структурировании программы и признал «оператор GOTO вредным». Это вызвало ожесточённую полемику в рядах программистов. Итогом её была  победа структурного мышления.

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

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

Правила структурного программирования

  1.  При построении структуры пакета программ, придерживаться иерархической структуры, избегая беспорядочного вызова мелких подпрограмм.
  2.  Каждая подпрограмма должны выполнять законченную логическую функцию.
  3.  Желательно, чтобы размер подпрограммы не превышал 100 операторов (оптимально -25 операторов, которые можно одновременно увидеть на экране монитора).
  4.  Использовать только обобщённые управляющие конструкции (см. след. раздел), применять оператор GOTO только в специальных, «разрешённых» случаях (например при переходе на конец программы).
  5.  Заботиться о прозрачности программ, о возможности их тестирования ещё на этапе разработки структуры пакета, приступать к написанию тестов ещё до написания программ.
  6.  Повышать «читабельность» программы, для чего следует:
  •  Избегать вложенности циклов и операторов IF более 3-х уровней
  •  Избегать так называемых «программистких трюков» всегда отдавая предпочтения наиболее понятному варианту при написании кода.
  •  Использовать «говорящие» идентификаторы, родственные идентификаторы должны начинаться с одинакового префикса.
  •  Комментировать программу
  1.  Следующий кризис программирования произошёл двадцать лет спустя.  К этому времени неизмеримо возросли возможности электронной техники. Вычислительные задачи перестали быть основным её предназначением. С появлением персональных компьютеров (ПК) наиболее распространёнными стали мультимедийные задачи. Потребность в написании программ стала столь велика, что невозможно стало её удовлетворение «ручным» способом. Насущной стала проблема автоматизации процесса программирования.

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

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

В 1989 году началась так называемая война методологий. До того времени господствовала структурная парадигма. С появлением возможностей объектно-ориентированного программирования  появилась парадигма ООП. Надо сказать, что она не отрицает структурную парадигму и скорее строится на ее базе.

Основу  ООП составляют :

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


 

А также другие работы, которые могут Вас заинтересовать

30511. Структурированный язык запросов SQL. История создания языка SQL. Подмножество SQL - Data Definition Language (DDL). Модификация схем базы данных . Стандартные типы данных. Вычисляемые столбцы. Подмножество SQL - Data Query Language (DQL) 65.5 KB
  Модификация схем базы данных . Стандартные типы данных. Доска то что выделено курсивом устно Язык SQL имеет два основных компонента: язык DDL Dt Definition Lnguge предназначенный для определения структур базы данных; язык DML Dt Mnipultion Lnguge предназначенный для выборки и обновления данных. Для определения данных символьного типа используется следующий формат: CHRCTER [VRYING] [length] Битовые данные тип bit Битовый тип данных используется для определения битовых строк т.
30512. Синтаксис оператора SELECT. Обзор его подразделов (списка выборки, секций FROM, WHERE, GROUP BY, HAVING, OREDER BY).. Способы упорядочивания итогового набора в секции OREDER BY 23.79 KB
  SELECT селект оператор DML языка SQL возвращающий набор данных выборку из базы данных удовлетворяющих заданному условию. При формировании запроса SELECT пользователь описывает ожидаемый набор данных: его вид набор столбцов и его содержимое критерий попадания записи в набор группировка значений порядок вывода записей и т. Синтаксис оператора SELECT SELECT column_list FROM tble_nme [WHERE условие] [GROUP BY условие] [HVING условие] [ORDER BY условие] SELECT Ключевое слово которое сообщает базе данных о том что оператор является...
30513. Разделение ресурса 68.3 KB
  Способы решения проблемы гонок: Локальная копия Синхронизация Метод блокирующей переменной Метод строгого чередования Алгоритм Деккера Алгоритм Петерсона Комбинированный способ Локальная копия Самый простой способ решения копирование переменной x в локальную переменную. В общем виде алгоритм выглядит следующим образом: Поток: while stop { synchronizedSomeObject { {criticl_section} } } Метод блокирующей переменной Суть метода состоит в том что если значение этой переменной равно например 1 то ресурс занят другим...
30515. Средства синхронизации потоков в ОС Windows. Функции и объекты ожидания. Критические секции 25.71 KB
  При создании многопоточных приложений необходимо контролировать взаимодействие отдельных потоков. Большинство ошибок при работе с потоками возникает из-за того, что во время работы приложения различные потоки пытаются обратиться к одним и тем же данным. Для предотвращения подобной ситуации в ОС Windows (как впрочем и в других операционных системах) существуют средства синхронизации, которые позволяют контролировать доступ к разделяемым ресурсам.
30517. Понятие файловой системы. Логическая и физическая организация файловой системы FAT 37.17 KB
  В широком смысле понятие файловая система включает: совокупность всех файлов на диске наборы структур данных используемых для управления файлами такие например как каталоги файлов дескрипторы файлов таблицы распределения свободного и занятого пространства на диске комплекс системных программных средств реализующих управление файлами в частности: создание уничтожение чтение запись именование поиск и другие операции над файлами. Двоичные файлы не используют SCIIкоды они часто имеют сложную внутреннюю структуру например...
30518. Ключи криптосистемы. Жизненный цикл ключей. Требования к обеспечению безопасности жизненного цикла ключей. Управление ключами в криптографических системах 34.39 KB
  Методы разграничения доступа: Разграничение доступа по спискам; Использование матрицы установления полномочий; Разграничение доступа по уровням секретности и категориям; Парольное разграничение доступа.; управление сроком действия паролей их периодическая смена; ограничение доступа к файлу паролей; ограничение числа неудачных попыток входа в систему это затруднит применение метода грубой силы ; обучение пользователей; использование программных генераторов паролей такая программа основываясь на несложных правилах может...
30519. Технологии обеспечения безопасности корпоративной сети с использованием оборудования 2-го уровня модели OSI 228.33 KB
  VLN Virtul Loclre Network это одна из функций Fst Ethernet. VLN позволяет изменять конфигурацию сети объединять пользователей в отдельные рабочие группы определять доступные сегменты для отдельно взятого порта. VLN дает возможность значительно оптимизировать работу локальной сети за счет разгрузки отдельных ее сегментов от лишнего трафика. С помощью VLN можно еще контролировать и эффективно подавлять широковещательные штормы которые в больших сетях иногда останавливают работу целых сегментов.