В разработке программного обеспечения существует деятельность, называемая моделированием предметной области , с помощью которой разработчик создает представление предметной области, используя некоторый язык (в конечном счете, язык программирования). При моделировании конкретной области разработчикам приходится принимать, так сказать, некоторые «метафизические решения»*. В частности, необходимо решить:
Должно ли определенное «существо» в домене быть представлено как сущность или как значение . Грубо говоря, сущность — это объект, который существует сам по себе, имеет идентичность и нить непрерывности во времени. Значение содержит атрибуты, но не имеет концептуальной идентичности. Это различие отражает различие между сущностью и акциденцией , соответственно, на аристотелевском жаргоне.
Как представить течение времени для сущности (см. пункт 1): либо как серию изменений состояния, через которые проходит эфемерная сущность; или как ряд неизменяемых состояний, расположенных в последовательности. В последнем случае каждое из этих состояний существует вечно, связанное с моментом времени в жизни этой сущности.
Я не знаю ни одной философской работы, специально посвященной применению метафизических идей к моделированию программной области. В лучшем случае, насколько мне известно, пункт 1 был рассмотрен Эриком Эвансом , но лишь с небольшой ссылкой на метафизику; а пункт 2 был кратко упомянут Ричем Хики в связи с книгой Уайтхеда « Процесс и реальность ».
Итак, я ищу другие работы, которые устанавливают связь между этими двумя областями знаний и, что более важно, работы в области чистой метафизики, которые помогли бы мне получить более глубокий взгляд на моделирование предметной области.
* Конечно, есть и другие проблемы, связанные с моделированием предметной области, более технического характера, которые нас здесь не касаются.
Я вижу две основные области, в которых моделирование предметной области может извлечь выгоду из метафизики.
Одним из них является работа, проводимая в фундаментальных онтологиях такими авторами, как Гиззарди и Вагнер. [Я знаю, что слово онтология здесь имеет другое значение, чем в философии; это печально]. Их работа над НЛО, например, подчеркивает, что такие конструкции, как сорталии, жесткие и нежесткие типы, моментные и вещественные индивиды и т. д., должны быть частью основ концептуального моделирования. Основные языки моделирования, такие как UML, используют конструкцию класса в качестве центрального строительного блока, и почти все, что вы добавляете в свою модель, является классом, потому что оно должно быть классом. Следовательно, фазы, роли и другие небазовые типы моделируются (часто плохо) как классы. Язык моделирования, основанный на иерархии основных типов НЛО, возможно, предложил бы более богатую палитру, из которой можно было бы выбирать, чтобы модели были более точными. Другие работы, такие как работы Партриджа , также подчеркивают, что онтологический выбор, такой как пердурантизм или эндюрантизм, имеет отношение к концептуальному моделированию.
Вторая область полезности заключается в улучшении способов моделирования за счет повышения осведомленности разработчиков моделей о метафизических проблемах. Мы с коллегами взяли это за основу и включили в различные направления работы. Например, мы с моими коллегами только что приняли на конференции ER 2013 доклад под названием «Являются ли концептуальные модели концептуальными моделями?», в котором мы обсуждаем, являются ли «концепты» в концептуальных моделях на самом деле зависимыми от разума представлениями, способностями (см. Dummet), или независимые от разума чувства Фреге. В зависимости от того, какие концепции используются в моделях или какими мы хотим их видеть, такие задачи, как проверка достоверности модели, возможно, придется пересмотреть.
Я могу привести вам еще один пример того, как метафизика (с помощью эпистемологии) помогла улучшить моделирование предметной области, повысив осведомленность разработчиков моделей об этих проблемах. В языке моделирования ConML (который мы совместно создали) существует особая семантика null/unknown, которая выходит за рамки обычной семантики null, встречающейся в большинстве языков моделирования, таких как UML: ключевое слово null ConML обозначает отсутствие информации, тогда как неизвестное ключевое слово обозначает наличие информации, но отсутствие знания о ней. Таким образом, p.Age , где p имеет тип Person , никогда не может быть нулевым ., поскольку это факт (ну, я не ожидаю, что кто-то будет его оспаривать), что у каждого человека есть возраст, независимо от того, знаем мы его или нет. Но p.Spouse может быть нулевым, поскольку у многих людей нет супруга. Разработчики моделей, использующие UML, например, склонны использовать null для обозначения либо отсутствия информации, либо отсутствия знаний об этом; введение этого онтологического и эпистемического различия в ConML через два отдельных ключевых слова делает модели более выразительными.
Я думаю, что принятие метафизической терминологии сообществом моделирования предметной области является неудачным и приводит к путанице — наиболее заметным примером является злоупотребление термином «онтология».
Эта чрезмерная буквализация, конечно, не ограничивается злоупотреблением метафизикой — более общая проблема заключается в слишком серьезном отношении к метафорам. Например, в сообществе объектно-ориентированных разработчиков также существует известная путаница между «объектами» и физическими объектами. «Объект» в программной системе представляет собой контейнер для некоторого состояния системы (известного как «свойства») в сочетании с набором предопределенных действий, которые могут изменить это состояние (известных как «методы».) К сожалению, многие начинающие разработчики моделей начинают с создания объектной модели на основе физических объектов, что редко бывает оптимальным.
Решения, которые приходится принимать разработчику программного обеспечения, не имеют абсолютно никакого метафизического значения, и Аристотель или Уайтхед не могут предложить ничего полезного. Что лучше моделировать как Сущность или Значение — это прагматичное решение, основанное на том, как человек хочет отслеживать его поведение во времени, и не имеет ничего общего с аристотелевскими категориями или модальностями.
Короче говоря, это вовсе не философские вопросы, а чисто практические. Используйте любую модель, которая создаст более чистый код, и помните, что метафоры только в этом: не путайте карту с территорией.
Отавио Маседо
ЦезарьГон