Jump to content

Металингвистическая абстракция

В информатике металингвистическая абстракция — это процесс решения сложных проблем путем создания нового языка или словаря для лучшего понимания проблемного пространства. В более общем смысле, оно также включает в себя способность или умение программиста мыслить за пределами предвзятых представлений о конкретном языке, чтобы исследовательски исследовать проблемное пространство в поисках решений, которые являются наиболее естественными или когнитивно эргономичными для него. . Это повторяющаяся тема в оригинальном MIT учебнике «Структура и интерпретация компьютерных программ» , в котором используется Scheme , диалект Lisp , в качестве основы для создания новых языков.

Объяснение [ править ]

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

Программист процедурного языка (например, C ) может создавать структуры данных для представления этих элементов аэропорта, а также процедуры или процедуры для работы с этими структурами данных и их обновления, моделируя аэропорт как серию процессов, которым подвергаются его различные элементы. Например, заказы — это база данных, используемая для синхронизации пассажиров и самолетов с помощью обновлений, регистрируемых по мере прибытия и вылета. Бюджеты аналогичны, но в отношении денег: аэропорты — это множество вещей, которые нужно делать в правильном порядке, чтобы пассажиры добирались туда, куда они хотят. собираемся.

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

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

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

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

См. также [ править ]

Ссылки [ править ]

  1. ^ Структура и интерпретация компьютерных программ, Часть 4 - Металингвистическая абстракция
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bce334d009e2ee24bb07a852563b9c91__1716086100
URL1:https://arc.ask3.ru/arc/aa/bc/91/bce334d009e2ee24bb07a852563b9c91.html
Заголовок, (Title) документа по адресу, URL1:
Metalinguistic abstraction - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)