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

редактировать

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

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

Содержание

  • 1 Императивное и процедурное программирование
  • 2 Обоснование и основы императивного программирования
  • 3 История императивных и объектно-ориентированных языков
  • 4 См. Также
  • 5 Примечания
  • 6 Ссылки

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

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

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

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

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

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

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

Многие императивные языки программирования (такие как Fortran, BASIC и C ) являются абстракциями из язык ассемблера.

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

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

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

См. Также

Примечания

Ссылки

  • Пратт, Терренс В. и Марвин В. Зельковиц. Языки программирования: проектирование и реализация, 3-е изд. Энглвуд Клиффс, Нью-Джерси: Прентис Холл, 1996.
  • Себеста, Роберт В. Концепции языков программирования, 3-е изд. Ридинг, Массачусетс: издательство Addison-Wesley Publishing Company, 1996.
Первоначально основано на статье Стэна Зайберта «Императивное программирование» из Nupedia, под лицензией GNU Free Documentation License.
Последняя правка сделана 2021-05-23 12:20:12
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте