Программирование, управляемое данными

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

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

Содержание
  • 1 Связанные парадигмы
  • 2 Другая интерпретация
  • 3 Приложения
  • 4 Преимущества и недостатки
  • 5 Языки программирования, управляемые данными
  • 6 См. Также
  • 7 Ссылки
Связанные парадигмы

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

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

Другая интерпретация

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

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

Другой распространенный пример - конечный автомат. Программист пишет механизм конечного автомата, но состояния и переходы между ними задаются файлом данных, который загружается в.

Приложения

Программирование, управляемое данными, обычно применяется к потокам структурированные данные для фильтрации, преобразования, агрегирования (например, статистики вычислений) или вызова других программ. Типичные потоки включают файлы журнала, значения, разделенные разделителями, или сообщения электронной почты, особенно для фильтрации электронной почты. Например, программа AWK может принимать в качестве входных данных поток операторов журнала и, например, отправлять все на консоль, записывать те, которые начинаются с WARNING, в файл «WARNING» и отправлять электронное письмо системному администратору в случае, если какая-либо строка начинается с «ERROR». Он также может записывать, сколько предупреждений регистрируется в день. В качестве альтернативы можно обрабатывать потоки значений, разделенных разделителями, обрабатывая каждую строку или агрегированные строки, такие как сумма или макс. В электронной почте такой язык, как procmail, может указывать условия, которым должны соответствовать некоторые электронные письма, и какие действия следует предпринять (доставить, отклонить, отклонить, переслать и т. Д.).

Некоторые языки, управляемые данными, являются полными по Тьюрингу, например, AWK и даже sed, в то время как другие намеренно сильно ограничены, особенно для фильтрации. Ярким примером последнего является pcap, который состоит только из фильтрации, с единственным действием «захват». В меньшей степени, sieve имеет фильтры и действия, но в базовом стандарте не имеет переменных или циклов, разрешая только операторы фильтрации без сохранения состояния: каждый входной элемент обрабатывается независимо. Переменные позволяют состояние, которое разрешает операции, которые зависят от более чем одного элемента ввода, такие как агрегирование (суммирование входных данных) или регулирование (разрешить не более 5 писем в час от каждого отправителя или ограничить повторяющиеся сообщения журнала).

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

Преимущества и проблемы

Хотя преимущества и проблемы могут варьироваться в зависимости от реализации, у этой парадигмы есть несколько больших потенциальных преимуществ и проблем. Функциональность просто требует, чтобы он знал абстрактный тип данных переменных, с которыми он работает. Функции и интерфейсы могут использоваться для всех объектов с одинаковыми полями данных, например, для «позиции» объекта. Данные могут быть сгруппированы в объекты или «сущности» в соответствии с предпочтениями практически без последствий.

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

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

Языки программирования, управляемые данными
  • AWK
  • Oz
  • Rust - были написаны несколько игровых движков, таких как Bevy и Amethyst, оба управляемые данными.
  • Perl - программирование, управляемое данными как в AWK, так и в sed - это одна парадигма, поддерживаемая Perl
  • sed
  • Lua
  • Clojure
  • Tab (язык)
Языки фильтрации почты
См. Также
Ссылки

https://homepage.cs.uri.edu/~thenry/resources/unix_art/ch09s01.html «Важной частью является перенос программной логики от аппаратных структур управления в данные».

.

Последняя правка сделана 2021-05-17 14:07:24
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте