Как понятия объектно-ориентированного подхода в программировании соотносятся с понятиями материи, информации и меры в Концепции Общественной Безопасности

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

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

Объект обладает состоянием, поведением и индивидуальностью.
Объект = Состояние+Поведение+Индивидуальность

Состояние – это совокупность свойств и их значений. Например яблоко может иметь свойство “цвет” и значение этого свойства – “зелёный”. Программисты выражают состояние через поля (или данные-члены) объекта, а также через значения и типы данных этих полей.

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

Следующим важным понятием объектно-ориентированного подхода является класс. Он несёт в себе структуру и поведение объекта. Структура – это совокупность свойств объекта и их возможных значений или, другими словами, множество возможных состояний. А поведение – это множество способов перехода между возможными состояниями.
Класс = Поведение + Состяние(возможное)

Следует различать множество возможных состояний и текущее состояние объекта. Когда мы говорим, что объект обладает состоянием, мы подразумеваем, что оно взято из множества возможных состояний, задаваемых классом.
Состояние = Состояние(возможное) + Состояние(текущее)

Индивидуальность – это свойство объекта, отличающее его от всех других объектов (даже от тех, которые имеют тот же класс и то же состояние). Два зелёных яблока, например, являются разными объектами, несмотря на то, что значения их свойства “цвет” совпадают.

Объединяя сказанное, можно представить объект как совокупность класса, текущего состояния и индивидуальности (если рассматривать класс, как носитель поведения и множества возможных состояний объекта).
Объект = Класс + Состояние(текущее) + Индивидуальность

Таково понятие объекта в объектно-ориентированном программировании. Перейдем к концепции Материи-Информации-Меры в КОБ.

Объект реального мира (по КОБ) представляет собой единство Материи, Информации и Меры.
Объект = Материя + Информация + Мера

Материя – то, из чего объективно состоит окружающий мир, то, что мы можем субъективно ощутить нашими органами чувств. Например, стул состоит из материи.

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

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

Человек может мысленно отделить одно из этих понятий от другого, но в реальности ничто не может существовать иначе как в их единстве. Стул без меры – это нечто бесформенное, стул без образа – это нечто непознаваемое, стул без материи – это нечто невоплотимое.

Можно заметить сходство понятий меры (по КОБ) и класса (в ООП), так как они обозначают то, что задает структуру и возможные способы преобразования объекта.

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

Однако, чтобы копируемый объект приобрел индивидуальность (в ООП), его необходимо поместить на новый материальный (по КОБ) носитель (например, записать в новую область памяти). Так, индивидуальность объекта (в ООП) указывает нам на его материальную составляющую. Если принять все вышесказанное, то понятие объекта в ООП становится схожим с понятием объекта в КОБ.
Класс ~ Мера, Состояние(текущее) ~ Информация, Индивидуальность ~ Материя

Каждый день программисты на практике доказывают верность принципов объектно-ориентированного подхода. Однако, если мы находим отражение этих понятий в концепции Материи-Информации-Меры, может ли это послужить косвенным подтверждением ее правильности? С другой стороны, концепция Материи-Информации-Меры претендует на наиболее общее описание реальности. Находя отражение этой концепции в ООП, можем ли мы утверждать, что теория программирования затрагивает не только сферу разработки программного обеспечения, но и более глубокие вопросы бытия?

  1. О мировоззрении триединства материи-информации-меры читайте, например, в «Основы социологии», ч. 1. []
  2. Об объектно-ориентированном подходе можно найти много информации. Лично я считаю книгу “Объектно-ориентированный анализ и проектирование” Грэйди Буча достаточно глубоким источником знаний на эту тему. []