Металингвистическая абстракция в информатике — это процесс решения сложных проблем путём создания нового языка или словарного запаса, для лучшего понимания предметной области (проблемы или проблем). Этот вопрос подробно описан в учебнике МТИ «Структура и интерпретация компьютерных программ»Structure and Interpretation of Computer Programs (Абельсон Х., Сассман Д. Д. Структура и интерпретация компьютерных программ ), который рекомендует использовать язык Scheme как основу для создания новых языков.

Объяснение Рассмотрим, например, моделирование аэропорта с помощью компьютера. В процедурных языках программирования (например, Си) программист будет создавать структуры данных для представления элементов аэропорта и функции для работы с данными этих структур. В объектно-ориентированных языках программирования (например, C++) программист может создавать объекты для представления элементов аэропорта с методами, которые представляют их поведение и функционирование. В функциональных ЯП (например Scheme) он создаст функцию, представляющую модель поведения элементов инфраструктуры аэропорта. Металингвистический же программист решит проблемы путём создания нового языка моделирования аэропорта с собственными примитивами и операциями. В данный язык можно включить любые или все из вышеперечисленных методов, в зависимости от поставленной задачи.

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

См. также Lisp — пример метаязыка программирования Языково-ориентированное программирование Парадигмы программирования Предметно-ориентированный язык Метакомпилятор

Литература

Англоязычная

Русская

Ссылки МЕТАЯЗЫК КАК СПОСОБ ОБРАЗОВАНИЯ АБСТРАКЦИЙ В КОНКРЕТНО-НАУЧНОМ ПОЗНАНИИ СС-BY-SA Глава 4. Металингвистическая абстракция

Примечания

Категория:Программирование Категория:Концепции языков программирования Категория:Абстракция