Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

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

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

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

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

Самыми ранними императивными языками были машинные языки исходных компьютеров. На этих языках инструкции были очень простыми, что облегчало аппаратную реализацию, но затрудняло создание сложных программ. FORTRAN , разработанный Джоном Бэкусом в International Business Machines (IBM) с 1954 года, был первым крупным языком программирования, устраняющим препятствия, создаваемые машинным кодом при создании сложных программ. FORTRAN был скомпилированным языком, который позволял именованные переменные, сложные выражения, подпрограммы и многие другие функции, которые теперь распространены в императивных языках. В следующие два десятилетия были разработаны многие другие важные языки императивного программирования высокого уровня. В конце 1950-х и 1960-х гг.Алгол был разработан для упрощения выражения математических алгоритмов и даже служил языком перевода операционной системы для некоторых компьютеров. MUMPS (1966) довел императивную парадигму до логической крайности, не имея никаких операторов вообще, полагаясь исключительно на команды, даже до такой степени, что команды IF и ELSE были независимыми друг от друга, связанными только внутренней переменной с именем $ ТЕСТ. COBOL (1960) и BASIC (1964) были попытками сделать синтаксис программирования более похожим на английский. В 1970-х годах Паскаль был разработан Никлаусом Виртом , а язык C - Деннисом Ричи.пока он работал в Bell Laboratories . Вирт разработал Модулу-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 # также работает на нем.

См. Также [ править ]

  • Функциональное программирование
  • Сравнение парадигм программирования
  • Реактивное программирование
  • История языков программирования
  • Список императивных языков программирования

Заметки [ править ]

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

Ссылки [ править ]

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