Императивное программирование: Обзор старейшей парадигмы программирования

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

Каковы особенности императивных языков программирования? Какие недостатки необходимо учитывать разработчикам? В этой статье мы ответим на самые распространенные вопросы об императивной парадигме.

Что такое императивное программирование?

Императивное программирование (от латинского imperare = повелевать) — это самая старая парадигма программирования. Программа, основанная на этой парадигме, состоит из четко определенной последовательности инструкций для компьютера.

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

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

Это самые известные императивные языки программирования:

  • Fortran
  • Java
  • Паскаль
  • АЛГОЛ
  • C
  • C#
  • C++
  • Ассемблер
  • BASIC
  • COBOL
  • Python
  • Ruby

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

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

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

Декларативное и императивное программирование

Императивные языки программирования отличаются от декларативных языков по одному фундаментальному пункту: императивное программирование фокусируется на «как», а декларативное — на «что».

Но что это значит? Императивные языки программирования состоят из пошаговых инструкций (как) для компьютера. Они четко описывают, какие шаги должны быть выполнены в определенном порядке, чтобы в итоге получить желаемое решение. В отличие от этого, в декларативном программировании желаемый результат (что) описывается напрямую. Это становится более понятным, если использовать для иллюстрации аналогию с кулинарией: императивные языки предоставляют рецепты, а декларативные — фотографии готового блюда.

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

Пример императивного программирования

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

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

$participantlist = [1 => 'Peter', 2 => 'Henry', 3 => 'Sarah'];
$firstnames= [];
foreach ($participantlist as $id => $name) {
    $firstnames[] = $name;
}

Декларативное программирование (PHP)

$firstnames = array_values($participantlist);

Преимущества и недостатки императивных языков программирования

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

С одной стороны, это объясняется тем, что данный подход является оригинальной формой программирования. С другой стороны, несмотря на существование альтернативных моделей, императивная парадигма все еще имеет некоторые практические преимущества.

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

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

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

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

Преимущества Недостатки
Легко читать Код быстро становится очень объемным и, следовательно, запутанным
Относительно легко изучать Более высокий риск ошибок при редактировании
Концептуальная модель (путь решения) очень проста для понимания новичками Системно-ориентированное программирование означает, что сопровождение блокирует разработку приложений
Характеристики конкретных приложений могут быть приняты во внимание Оптимизация и расширение сложнее

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

Оцените статью
cdelat.ru
Добавить комментарий