В этой статье вы прочитаете что такое «Императивное программирование», зачем нужно, думаю будет очень интересно.
Также посмотрите статью «Что такое метапрограммирование», тоже очень интересно.
Императивное программирование:
Императивное программирование (также процедурное программирование ) — одна из парадигм программирования или способов, с помощью которых решение проблем формулируется на языке программирования.
Императивное программирование описывает расчет с помощью последовательности команд и определяет точную процедуру ( алгоритм ) решения задачи.
Программа представляет собой набор переменных, которые в зависимости от оценки условий изменяют свое состояние с помощью команд.
Основным методом императивного программирования является процедурное программирование, поэтому эти термины часто путают.
Императивный подход тоже близок обычному человеку. Например, рецепты приготовления или инструкции по сборке купленных продуктов также являются пошаговыми командами, и каждый заказ привязан к определенному состоянию еды или комплектности продукта в зависимости от условий.
Этот естественный образ жизни людей в точности соответствует парадигме императивного программирования, и поэтому неудивительно, что большинство языков программирования и аппаратных реализаций большинства компьютеров являются императивными.
Аппаратное обеспечение, такое как повар / ассемблер, затем выполняет команду за командой в точности, как это соответствует императивному подходу.
Только отдельные команды являются инструкциями машинного кода, которые выполняет оборудование, а текущее состояние выражает содержимое памяти.
В более высоких императивных языках затем используются переменные и более сложные команды (т.е. выражения и функции ), но они по-прежнему исповедуют ту же императивную парадигму.
Первыми императивными языками программирования были машинные языки отдельных компьютеров.
На этих языках были только очень простые инструкции, которые позволяли очень легко реализовать аппаратное обеспечение, но затрудняли создание сложных программ.
Первым языком, устраняющим барьеры машинного кода для создания сложных программ, был FORTRAN, созданный Джоном Бэкусом в IBM в 1954 году.
FORTRAN принес возможности (такие как именование переменных, составные выражения, подпрограммы и многое другое), которые являются частью императивных языков и по сей день.
Следующие два десятилетия принесли с собой другие важные языки программирования более высокого уровня . К концу 1950-х и 1960-х годов появился язык АЛГОЛ, упростивший программирование математических алгоритмов.
Тогда языки COBOL (1960) и BASIC (1964) были попыткой адаптировать синтаксис программирования к синтаксису естественного языка — английского.
В семидесятых годах он был Никлаус Вирт разработан язык Паскаль и Деннис Ритчи (работают в Bell Labs ) языке C . Затем Вирт занялся языками Модула-2 и Оберон . Первый объектный язык был создан в конце 1960-х годов,Simula.
Для нужд Министерства обороны США в 1978 году, после четырех лет обобщения требований, Джин Ичбиа и команда Honeywell приступили к разработке языка Ada. Спецификация была впервые опубликована в 1983 году и пересматривалась в 1995 и 2005/6 гг.
В 1980-х годах интерес к объектно-ориентированному программированию возрос. Новые языки тогда исповедовали императивный стиль, но добавили поддержку объектов.
За последние два десятилетия двадцатого века их было создано значительное количество. В 1980 годе Palo Alto Research Center Xerox опубликовала Smalltalk -80 языка, первоначально задуманный Алан Кей в 1969 г.
Приобретения понятия из другого объектно-ориентированного языка программирования — Simula. Бьерн Страуструп разработал язык C ++, объектно-ориентированную версию хорошо известного C языка . C ++он был впервые реализован в 1985 году.
В конце 1980-х и 1990-х годах появилось большое количество императивных языков, основанных на концепциях объектно-ориентированного программирования. Известны Perl ( Ларри Уолл , 1987), Python ( Гвидо ван Россум , 1990), PHP ( Расмус Лердорф , 1994), Java ( Sun Microsystems , 1994) и C # ( Microsoft , 2000).
Деление:
В конечном итоге императивное программирование можно разделить на три группы.
Наивная парадигма иногда понимается как отдельная парадигма, а еще чаще она даже не упоминается среди парадигм программирования.
Наивные языки характеризуются своего рода вездесущим хаотизмом, обычно имеют бессистемный синтаксис и семантику.
В некоторых отношениях они имеют свойства, аналогичные неструктурированным языкам. Например, BASIC — это типичный ярлык .
Неструктурированная парадигма очень близка ассемблерам. Программы представляют собой линейные последовательности команд, и переходы в них выполняются командой типа «перейти к» — т.е. «перейти к (строке)».
Кроме того, в ранних языках этого стиля все строки программы были пронумерованы, и переходы можно было делать только путем указания определенного номера строки, что было очень непрактично.
Позже появились языки, в которых использовались так называемые метки — текстовые обозначения мест, куда программа должна переходить. Типичными ярлыками были, например, ранние версии FORTRAN и COBOL .
Структурированная парадигма. Из-за непрактичности команды перехода «перейти к» (главным образом в том, что структура программы практически не дает информации о ее выполнении, что значительно усложняет ее отладку), была создана структурированная парадигма.
Его главное преимущество заключается в том , что она заменяет оператор перехода с условными петлями ( «повторить до тех пор , пока условие истинно») и другие структурированные инструкции , которые гнездятся внутри друг друга. Типичные представители — C , Pascal и Ada .
Основные типы команд:
В императивном программировании используются три основные группы команд.
Назначение обычно выполняет операцию с информацией, хранящейся в памяти, и сохраняет результат в памяти для дальнейшего использования.
Кроме того, языки программирования более высокого уровня позволяют выполнять более сложные выражения, которые могут состоять из комбинации арифметических операций , программных функций и размещения результирующих значений в памяти.
Циклы позволяют повторять последовательность команд несколько раз подряд. Затем можно точно определить количество повторений или последовательность может повторяться до тех пор, пока указанное условие не изменится.
Команды ветвления позволяют выполнять определенную часть команд только при соблюдении соответствующего условия.
В противном случае этот раздел пропускается, и выполнение следующих сразу же команд продолжается.
Команды ветвления также позволяют перейти к другой части программы, обычно путем вызова подпрограммы ( функции , процедуры).
Отличия в противоположном подходе:
Прямым отличием от императивного программирования является декларативное программирование , которое основано на описании цели — точный алгоритм выполнения задается только интерпретатором соответствующего языка, и программист не занимается им.
Благодаря этому можно сохранить множество ошибок, возникающих, в основном, путем записи множества функций и методов одновременно в одну глобальную переменную.
В декларативном программировании они обычно используются вместо переменных для передачи возвращаемых значений функций .
С другой стороны, при императивном подходе программист может оптимизировать программу так, как ему нужно.
При декларативном подходе они должны полагаться на компилятор, который может не выбирать алгоритм, который был бы более выгодным в данный момент.
Кроме того, рекурсивный подход очень часто использует рекурсию , что предъявляет более высокие требования к программисту.
Он должен представить себе, как будет работать вся программа, вместо того, чтобы видеть перед собой точно написанный алгоритм , как при императивном подходе.
Вывод:
В этой статье вы прочитали что такое «Императивное программирование», зачем нужно и какие языки программирования работают на этом принципе.