Парадигма программирования

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

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

Существуют две основные группы парадигм - императивная и декларативная. Язык может быть и тем, и другим одновременно.

Содержание

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

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

·         3 Другие парадигмы

·         4 Обзор

·         5 Проблемы с парадигмами

·         6 История

o    6.1 Машинный код

o    6.2 Языки процедуры

o    6.3 Объектно-ориентированное программирование

o    6.4 Декларативные парадигмы

·         7 Сопутствующие страницы

·         8 Ссылки

·         9 Другие веб-сайты

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

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

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

  • Структурированный - Компьютеру даются указания, которые всегда в определенном порядке. Шаги типа "вернуться к шагу 3" (известные как goto statements) не допускаются.
    • Процедура - Программа позволяет программисту дать название списку ордеров, что превращает эти ордера в "процедуру", которую они могут использовать в дальнейшем. Большинство структурированных языков также являются процедурными.
  • Объектно-ориентированные - Идеи объясняются компьютеру с помощью объектов, частей кода, которые имеют набор ордеров, которые они могут быть отданы, и некоторой информации о них.

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

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

Наиболее известные декларативные парадигмы:

  • Функциональный - Большая часть работы выполняется функциями без побочных эффектов.
  • Логика - указывается набор фактов, а затем задается один или несколько "вопросов".
  • Event-driven (Управляется событиями) - Куски кода устанавливаются на выполнение, когда происходят определенные события (например, компьютер включается).

Другие парадигмы

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

Обзор

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

Несколько языков вписываются только в одну основную парадигму, например:

  • Smalltalk (объектно-ориентированный)
  • Ассамблея (императивная, но не структурированная или объектно-ориентированная)
  • Хаскелл (функциональный)
  • Пролог (логика)

Большинство языков, однако, находятся в нескольких парадигмах. Некоторые из них выделяются тем, что у них больше, чем один:

  • Скала (объектно-ориентированная, функциональная, параллельная)
  • Visual Basic (управляемый событиями, объектно-ориентированный)
  • Common Lisp (процедурный, функциональный, объектно-ориентированный, мета)
  • Схема (функциональная, процедурная, мета)
  • Perl (функциональный, процедурный, мета, объектно-ориентированный, ориентированный на события)
  • Питон (функциональный, объектно-ориентированный, процедурный)
  • Рубин (функциональный, объектно-ориентированный, процедурный)
  • Язык Wolfram (функциональный, процедурный, общеизвестный)
  • Оз (логический, функциональный, императивный, объектно-ориентированный)
  • F# (функциональный, императивный, объектно-ориентированный, мета)

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

Многие парадигмы программирования известны также тем, что они не позволяют людям делать то, что они позволяют людям делать. Один раз, когда это верно, это функциональные языки. Когда функциональный язык только или в основном функциональный, он обычно не допускает побочных эффектов. Другой раз, когда это так, это структурированное программирование: оно отличается от обычных императивных языков тем, что не позволяет программистам использовать "операторы goto" (операторы, говорящие программе перейти на более ранний шаг). По этой и другим причинам люди иногда думают, что новые парадигмы не позволяют достаточно вещей. Иногда, однако, для компьютера нормально не позволять людям делать вещи: он может помочь людям избежать проблем с их кодом, и позволить компьютеру догадаться об этом, чтобы он мог выполнять код быстрее, или даже проверить код на наличие проблем до того, как он запустится!

Обзор различных парадигм программирования, по словам Питера Ван Роя.Zoom
Обзор различных парадигм программирования, по словам Питера Ван Роя.

Проблемы с парадигмами

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

История

Новые парадигмы создавались с течением времени, и люди либо указывали на них в то время, либо оглядывались назад. Одной из первых парадигм, которая была признана в качестве нового способа программирования, стало структурированное программирование, начиная с 1960-х годов. Идея "парадигмы программирования" возникла в 1978 году, если не ранее, когда Роберт В. Флойд использовал ее в процессе обучения. Слово "парадигма" в том смысле, в каком его имел в виду Роберт, было впервые использовано Томасом Куном в его книге "Структура научных революций" (1962).

Машинный код

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

В 1960-х годах языки ассемблера были улучшены за счет добавления новых вещей, таких как библиотека COPY, макросы (биты "специального" кода, которые трансформировались в обычный код до запуска программы), выполняемые процедуры (наборы инструкций, заданные именем и сохраненные на потом), и переменные (элементы, заданные именами и сохраненные на потом), не входящие в состав программы. Это позволяет использовать некоторый код более чем в одном проекте и не беспокоиться об аппаратных проблемах (проблемы, которые случаются только на одном компьютере) благодаря таким командам (имена направлений), как READ/WRITE/GET/PUT.

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

процедурные языки

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

  • COmmon Business Oriented Language (COBOL) - использует такие слова, как "файл", "переместить" и "скопировать".
  • FORmula TRANslation (FORTRAN) - использует математические слова и символы (формы, используемые при написании и наборе текста). Разработана в основном для науки и техники.
  • ALGOrithmic Language (ALGOL) - создан для написания алгоритмов (набор шагов, указывающих компьютеру, что делать). Использует математические слова и символы, так же как и FORTRAN.
  • Язык программирования один (PL/I) - должен был быть полезен всем.
  • Beginners All purpose Symbolic Instruction Code (BASIC) - сделан для помощи начинающим программистам.
  • C - язык программирования, предназначенный для многих вещей. Деннис Ричи работал над ним с 1969 по 1973 год в AT&T Bell Labs.

Объектно-ориентированное программирование

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

Поскольку объектно-ориентированное программирование - это парадигма, а не язык, люди создали объектно-ориентированные языки ассемблера, такие как HLA (High Level Assembly - Ассемблера высокого уровня).

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

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

Связанные страницы

  • Миндсет
  • Система типов
  • мученическая полнота

Вопросы и ответы

В: Что такое парадигма программирования?


О: Парадигма программирования - это способ группировки языков программирования на основе того, как они работают.

В: Каковы две основные группы парадигм?


О: Две основные группы парадигм - это императивная и декларативная.

В: Чем отличаются императивная и декларативная парадигмы?


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

В: Может ли язык быть одновременно императивной и декларативной парадигмой?


О: Да, язык может быть одновременно и императивной, и декларативной парадигмой.

В: Как парадигма программирования группирует языки?


О: Парадигмы программирования группируют языки по тому, что они делают. Они смотрят на то, как выполняется код, как он сгруппирован, в каком порядке и из каких частей состоит программа.

В: Существуют ли другие типы парадигм программирования, кроме императивной и декларативной?


О: Да, существуют другие типы парадигм программирования, кроме императивной и декларативной. Например, некоторые из них рассматривают способ выполнения кода (например, разрешение побочных эффектов), а другие - способ группировки кода (например, объединение кода в одну или две части).

В: Каждый ли язык относится только к одному типу парадигмы программирования?


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

AlegsaOnline.com - 2020 / 2023 - License CC3