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

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

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

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

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

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

Обоснование и основы императивного программирования

Аппаратная реализация почти всех компьютеров обязательна.[примечание 1] Почти все компьютерное оборудование предназначено для выполнения Машинный код, который является родным для компьютера и написан в императивном стиле. С этой низкоуровневой точки зрения состояние программы определяется содержимым памяти, а операторы представляют собой инструкции на родном машинном языке компьютера. Использование императивных языков более высокого уровня переменные и более сложные утверждения, но все же следуют той же парадигме. Рецепты и процесс контрольные списки, в то время как не компьютерные программы, также являются знакомыми концепциями, похожими по стилю на императивное программирование; каждый шаг - это инструкция, и физический мир сохраняет состояние. Поскольку основные идеи императивного программирования концептуально знакомы и напрямую воплощены в аппаратном обеспечении, большинство компьютерных языков относятся к императивному стилю.

Заявления о присвоении в императивной парадигме выполнять операцию с информацией, находящейся в памяти, и сохранять результаты в памяти для дальнейшего использования. Императивные языки высокого уровня, кроме того, позволяют оценка сложных выражения, который может состоять из комбинации арифметические операции и функция оценки и присвоение полученного значения памяти. Зацикленные операторы (как в пока петли, делать пока петли, и для петель ) позволяют выполнять последовательность операторов несколько раз. Циклы могут либо выполнять содержащиеся в них операторы предопределенное количество раз, либо они могут выполнять их повторно, пока не изменится какое-либо условие. Условный разветвление Операторы позволяют выполнять последовательность операторов только при выполнении некоторых условий. В противном случае операторы пропускаются, и последовательность выполнения продолжается с оператора, следующего за ними. Операторы безусловного перехода позволяют передавать последовательность выполнения в другую часть программы. К ним относятся прыжок (называемый перейти к на многих языках), выключатель, и подпрограмма, подпрограмма, или вызов процедуры (который обычно возвращается к следующему оператору после вызова).

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

Многие императивные языки программирования (например, Фортран, БАЗОВЫЙ, и C ) находятся абстракции из язык ассемблера.[1]

История императивных и объектно-ориентированных языков

Самыми ранними императивными языками были машинные языки исходных компьютеров. На этих языках инструкции были очень простыми, что облегчало аппаратную реализацию, но затрудняло создание сложных программ. FORTRAN, разработан Джон Бэкус в Международные Бизнес Машины (IBM), начиная с 1954 года, был первым крупным языком программирования, который устранил препятствия, создаваемые машинным кодом при создании сложных программ. FORTRAN был компилируемый язык который позволял именованные переменные, сложные выражения, подпрограммы и многие другие функции, которые теперь распространены в императивных языках. В следующие два десятилетия были разработаны многие другие важные языки императивного программирования высокого уровня. В конце 1950-х и 1960-х гг. АЛГОЛ был разработан для упрощения выражения математических алгоритмов и даже служил в качестве Операционная система целевой язык для некоторых компьютеров. МАМПЫ (1966) довели императивную парадигму до логической крайности, не имея никаких утверждений вообще, полагаясь исключительно на команды, вплоть до того, что сделали команды IF и ELSE независимыми друг от друга, связанными только внутренней переменной с именем $ TEST. . КОБОЛ (1960) и БАЗОВЫЙ (1964) были обеими попытками сделать синтаксис программирования более похожим на английский. В 1970-е годы Паскаль был разработан Никлаус Вирт, и C был создан Деннис Ричи пока он работал на Bell Laboratories. Вирт перешел к дизайну Модула-2 и Оберон. Для нужд Министерство обороны США, Жан Ичбия и команда в Honeywell начал проектирование Ада в 1978 году, после 4-летнего проекта по определению требований к языку. Спецификация была впервые опубликована в 1983 году с изменениями в 1995, 2005 и 2012 годах.

В 80-е годы наблюдался стремительный рост интереса к объектно-ориентированного программирования. Эти языки были обязательными по стилю, но добавляли функции для поддержки объекты. В последние два десятилетия ХХ века появилось много таких языков. Болтовня -80, изначально задуманный Алан Кей в 1969 г., выпущен в 1980 г. Исследовательским центром Xerox в Пало-Альто (PARC ). Опираясь на концепции на другом объектно-ориентированном языке -Симула (который считается первым в мире объектно-ориентированный язык программирования, разработанный в 1960-е годы) -Бьярне Страуструп разработан C ++, объектно-ориентированный язык, основанный на C. Дизайн C ++ началось в 1979 году, а первая реализация была завершена в 1983 году. В конце 1980-х и 1990-х годах заметными императивными языками, основанными на объектно-ориентированных концепциях, были Perl, выпущено Ларри Уолл в 1987 г .; Язык Wolfram Language, выпущено Wolfram Research в 1988 г .; Python, выпущено Гвидо ван Россум в 1990 г .; Visual Basic и Visual C ++ (который включал Библиотека Microsoft Foundation Class (MFC) 2.0), выпущенный Microsoft в 1991 и 1993 годах соответственно; PHP, выпущено Расмус Лердорф в 1994 г .; Ява, выпущено Sun Microsystems в 1995 г. JavaScript, к Брендан Эйх (Netscape ), и Рубин Юкихиро «Мац» Мацумото, оба выпущены в 1995 году. .NET Framework (2002) является обязательным по своей сути, как и его основные целевые языки, VB.NET и C # что бегают по нему; однако Microsoft F #, функциональный язык, также работает на нем.

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

Примечания

  1. ^ Реконфигурируемые вычисления является заметным исключением.

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

  1. ^ Брюс Экель (2006). Мышление на Java. Pearson Education. п. 24. ISBN  978-0-13-187248-6.
  • Пратт, Терренс В. и Марвин В. Зельковиц. Языки программирования: разработка и реализация, 3-е изд. Энглвуд Клиффс, Нью-Джерси: Prentice Hall, 1996.
  • Себеста, Роберт В. Концепции языков программирования, 3-е изд. Ридинг, Массачусетс: издательство Addison-Wesley Publishing Company, 1996.
Первоначально основано на статье Стэна Зайберта «Императивное программирование» из Нупедия, под лицензией Лицензия свободной документации GNU.