stringtranslate.com

Процедурное программирование

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

Первые крупные процедурные языки программирования появились ок.  1957–1964 , включая Fortran , ALGOL , COBOL , PL/I и BASIC . [2] Паскаль и C были опубликованы ок.  1970 –1972.

Компьютерные процессоры обеспечивают аппаратную поддержку процедурного программирования посредством регистра стека и инструкций для вызова процедур и возврата из них. Возможна аппаратная поддержка других типов программирования, таких как машины Lisp или процессоры Java , но ни одна попытка не имела коммерческого успеха. [ противоречивый ]

Практики разработки

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

Модульность и область применения

Модульность — это организация процедур программы в отдельных модулях, каждый из которых имеет определенную и понятную цель.

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

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

Совместное использование

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

Сравнение с другими парадигмами программирования

Императивное программирование

Процедурное программирование классифицируется как императивное программирование , поскольку оно предполагает прямую команду выполнения.

Процедурный является подклассом императива, поскольку процедурный включает концепции блока и области действия , тогда как императив описывает более общую концепцию, которая не требует таких функций. Процедурные языки обычно используют зарезервированные слова, которые определяют блоки, такие как if, whileи for, для реализации потока управления , тогда как неструктурированные императивные языки (т. е. язык ассемблера ) используют для этой цели таблицы перехода и ветвления .

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

Объектно-ориентированное программирование (ООП) , также классифицируемое как императивное , предполагает разделение реализации программы на объекты, которые предоставляют поведение (методы) и данные (члены) через четко определенный интерфейс. Напротив, процедурное программирование заключается в разделении реализации программы на переменные , структуры данных и подпрограммы . Важным отличием является то, что, хотя процедурный подход включает в себя процедуры работы со структурами данных, ООП объединяет их вместе. Объект — это структура данных и поведение, связанное с этой структурой данных. [3]

Некоторые языки ООП поддерживают концепцию класса, которая позволяет создавать объект на основе определения.

Номенклатура варьируется между ними, хотя они имеют схожую семантику:

Функциональное программирование

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

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

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

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

Логическое программирование

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

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

Ч:- Б 1 , …, Б н .

имеют двойную интерпретацию: как процедуры

показать/решить H , показать/решить B 1 и … и B n

и как логические последствия:

B 1 и … и B n подразумевают H .

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

Смотрите также

Рекомендации

  1. ^ «Парадигмы программирования».
  2. ^ «Добро пожаловать в IEEE Xplore 2.0: использование процедурных языков программирования для управления производственными системами». Слушания. Седьмая конференция IEEE по применению искусственного интеллекта . ieeexplore.ieee.org. дои : 10.1109/CAIA.1991.120848. S2CID  58175293.
  3. ^ Стивенсон, Джозеф (август 2013 г.). «Процедурное программирование против объектно-ориентированного программирования». neonbrand.com . Проверено 19 августа 2013 г.

Внешние ссылки