Формальный язык

Материал из «Знание.Вики»

Форма́льный язы́к — это математическая абстракция, возникшая как обобщение обычных лингвистических понятий естественных языков[1]. Теория формальных языков берет свое начало от работ Ноама Хомского, который в середине пятидесятых годов ХХ века заложил основы теоретической лингвистики. Широко используемые языки разметки документов и гипертекста, языки описания интерфейсов и языки спецификаций, языки описания аппаратуры, языки описания распределённых систем и коммуникационных протоколов требуют проектирования инструментов их анализа и, возможно, трансляции, в которых широко используются методы и алгоритмы из теории формальных языков и грамматик[2]. Примерами формальных языков в информатике служат языки программирования, язык структурированных запросов к базам данных (SQL, structured query language)[3].

Характеристика формального языка

При изучении любого языка, как естественного, так и искусственного, рассматриваются три аспекта: синтаксис, семантику, прагматику. Синтаксис, семантика и прагматика являются характеристиками языка в его интуитивном понимании[3].

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

  1. Разработка механизмов порождения (или перечисления) слов с заданной структурой.
  2. Разработка методов проверки того, что некоторое слово принадлежит этому языку.

Семантика языка предполагает сопоставление цепочке языка некоторого смысла. Синтаксически верная языковая конструкция не всегда имеет смысл. Например, предложение «Дерево строит автомобиль» построено по правилам русского языка, но бессмысленно[3].

Прагматика языка ( др.-греч. πράγμα — «дело», др.-греч. πράγματος — «деятельность») определяет цели, которые ставит носитель языка. Например, человек может ставить себе целью получение определённой суммы денег за написание текста заданной длины. При этом ни синтаксический, ни семантический аспект он может совершенно не учитывать. Прагматика относится скорее к социально-философским аспектам языка[3].

Под формальным языком интуитивно понимают искусственно созданный человеком язык, предназначенный для решения специальных задач[3]. Любой язык основан на использовании определённого алфавита. Алфавит — это конечное непустое множество символов, например, . Строка – это упорядоченная конечная последовательность символов алфавита . При таком подходе формальным языком называется любое множество строк в данном алфавите [4].

Способы задания формальных языков

Первым способом задания формальных языков являются перечисляющие грамматики. Если определяемый язык L состоит из небольшого числа цепочек, то простейший способ описания языка состоит в составлении списка всех цепочек из L. Однако многие языки, например, языки программирования, невозможно или нежелательно задавать исчерпывающим перечислением входящих в них цепочек. Поэтому, как правило, используются другие способы определения языка, причем такие, которые позволяют описанию языка быть обозримым (заведомо конечным), хотя описываемый язык может быть и бесконечным[5].

Следующий способ задания формальных языков — это порождающие грамматики (генеративные грамматики), задающие правила, с помощью которых можно построить любую цепочку («предложение») языка. Одно из преимуществ определения языка с помощью порождающих грамматик состоит в том, что грамматика придаёт цепочкам языка определенную структуру, которая в большинстве случаев может отражать смысл предложения[5].

Третьим способом являются распознающие грамматики (аналитические грамматики), позволяющие по данному слову определить, входит оно в язык или нет. Этот метод определения языка связан со способом задания множества с помощью характеристического свойства (предиката) и состоит в использовании частичного алгоритма (предписания производить некоторые действия), который для произвольной входной цепочки остановится и ответит «да» после конечного числа шагов, если эта цепочка принадлежит языку. Схематизированные устройства, используемые для представления таких алгоритмов, называются распознавателями. Примерами распознавателей являются конечные автоматы, автоматы с магазинной памятью и машины Тьюринга[5].

Применение формальных языков

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

Примечания

  1. Чигарина Е.И. , Литвинов В.Г. Теория формальных языков и грамматик. — Самара: Издательство Самарского университета, 2018. — С. 9. — 129 с. — ISBN 978-5-7883-1279-8.
  2. Лаздин А.В. Формальные языки, грамматики, автоматы. — СПб.: Университет ИТМО, 2019. — С. 5. — 99 с.
  3. 3,0 3,1 3,2 3,3 3,4 3,5 Черпаков И. В. Теоретические основы информатики. — Москва: Юрайт, 2025. — С. 219. — 353 с. — ISBN 978-5-9916-8562-7.
  4. Соколов В.А. Введение в теорию формальных языков. — Ярославль: ЯрГУ, 2014. — С. 8 - 9. — 208 с. — ISBN 978-5-8397-1035-1.
  5. 5,0 5,1 5,2 Батура Т. В. Математическая лингвистика и автоматическая обработка текстов. — Новосибирск: РИЦ НГУ, 2016. — С. 53. — 166 с. — ISBN 978-5-4437-0548-4.
  6. Абдукаримова А. Ж. Важность построения формального языка, характеризующего нормативные документы // Интеллектуальные технологии на транспорте : журнал. — 2023. — № S1 (35-1). — С. 14—16. — ISSN 2413-2527.