0 просмотров

Реификация и абстракция в управлении конфигурациями

Овеществление и абстракция — две фундаментальные концепции компьютерного программирования и того, как люди общаются в целом. Эти две концепции также лежат в основе разработки языка оркестровки Forge Architect.

Абстракция — это процесс создания конструкции, которая улавливает суть того, что является конкретным. Это можно сделать путем определения общих шаблонов, которые являются общими для всех конкретных экземпляров. Например, изобретение абстрактной конструкции Animal, полученной из конкретных экземпляров Cat и Dog, которые вы наблюдаете в реальной жизни. Абстракция — это то, как люди создают и передают концепции высокого уровня и выводят отношения высокого уровня из наблюдения низкого уровня. Это дает людям возможность представлять знания и разум.

Овеществление (иногда называемое уточнением) — чуть менее известное понятие, противоположное абстракции. Это процесс превращения абстрактного в нечто конкретное. Например, изготовление автомобиля по чертежу автомобиля. Или перейти от чего-то общего к чему-то более конкретному, например, от Person к PersonWithHat . Или кодирование абстрактной неявной связи в базе данных SQL в примитивные объекты первого класса, которыми можно манипулировать.

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

Статья в тему:  Фильм с Джоном Хэммом, который играет в искусственном интеллекте

Каждый язык программирования балансирует между осью абстракции и овеществления как в целом, так и в их различных частях. Независимо от того, поднимаетесь ли вы с точки зрения абстракции или опускаетесь с точки зрения овеществления, вы идете на компромиссы, которые имеют отношение к соотношению сигнал/шум в ваших коммуникативных выражениях. Подобные идеи возникают в обсуждениях идеи Blub Полом Грэмом. Быть более абстрактным в ваших выражениях имеет смысл только в том случае, если ваш контекст позволяет вам игнорировать низкоуровневые операции. Быть более овеществленным в ваших выражениях имеет смысл только в том случае, если ваш контекст предполагает решение проблем на низком уровне.

Язык Matrix Forge Architect предназначен для абстрагирования настоящий операции инфраструктуры в более абстрактную языковую модель, а также преобразование неявных инфраструктурных ожиданий в конкретные явные спецификации, о которых можно рассуждать.

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

Системы управления конфигурациями сегодня сталкиваются с 2 проблемами:

  1. В основном они не позволяют нам лаконично (с высоким отношением сигнал/шум) выразить концепции высокого уровня в инфраструктурной оркестровке. Таким образом, им не хватает абстракции. (когда они это делают, они часто наивно реализованы и недостаточно абстрактны или компонуемы, подобно ошибке реификации в естественных языках)
  2. Они часто не дают явного контроля над неявными инфраструктурными отношениями, существование которых мы ожидаем. Таким образом, им не хватает овеществления.
Статья в тему:  Где существует искусственный интеллект

Пример недостаточной абстракции:

Использование портов IP + для адресации зависимостей является формой случайной сложности.Они должны быть абстрагированы от основной характеристики зависимости, которая представляет собой API зависимости, а не географически распределенный IP + порт.

Пример недостаточного овеществления:

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

Давайте представим отношения зависимости между приложением WordPress и базой данных MySQL. Реализация этого фактора где-то написана на PHP. Вместо этого этот фактор должен быть абстрагирован от приложения PHP, но на самом деле он конкретизирован в языке управления конфигурацией.

Это связано с тем, что, с точки зрения управления конфигурацией, вы можете написать некоторый фрагмент конфигурации, который неявно полагается на ожидание наличия зависимости между WordPress и Mysql. Однако эта связь на самом деле не гарантируется языком, вместо этого она просто должна существовать, а фактические гарантии находятся где-то еще, также известном как жуткое действие на расстоянии.

Для нового разработчика, не связанного с вашей системой, чтение языка управления конфигурацией не дает человеку понимания или способности понять причину отношений между wordpress и mysql, это просто неявное знание, что они не обязательно будут вникать, пока не начнут осмотр остальной инфраструктуры.

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

Статья в тему:  Комедия с искусственным интеллектом как тебя зовут

Таким образом, любая система управления, такая как Forge Architect, должна балансировать между абстракцией и овеществлением.

Похожие идеи в других областях:

  • LessWrong.com SotW Будьте конкретными
  • Учебное пособие по «Лестнице абстракции» от Брета Виктора (среди прочего бывшего дизайнера Apple!)
  • Эти слайды, демонстрирующие языки программирования, имеют соответствующий уровень абстракции:

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
Adblock
detector