Как понятия объектно-ориентированного подхода в программировании соотносятся с понятиями материи, информации и меры в Концепции Общественной Безопасности
Концепция Общественной Безопасности (КОБ) произвела на меня большое впечатление масштабом и глубиной своих идей и изменила мой взгляд на привычные вещи. Вникая в неё, я, неожиданно для себя, обнаружил тесную связь понятий материи, информации и меры1 с основными понятиями объектно-ориентированного программирования (ООП)2, которые необходимы мне для работы. В данной статье я покажу эту связь.
Объектно ориентированный подход родился в борьбе программистов с растущей сложностью программ. На данный момент это очень (возможно, самый) популярный подход, реализованный в огромном количестве языков программирования. Центральным понятием ООП, как можно догадаться из названия, является объект.
Объект обладает состоянием, поведением и индивидуальностью.
Состояние – это совокупность свойств и их значений. Например яблоко может иметь свойство “цвет” и значение этого свойства – “зелёный”. Программисты выражают состояние через поля (или данные-члены) объекта, а также через значения и типы данных этих полей.
Поведение – это действия и реакции объекта, выраженные через изменения его состояния и передачу сообщений. Например, яблоко может расти – это один из аспектов его возможного поведения. Программисты выражают поведение через методы (или функции-члены) объекта в которые заключают программные алгоритмы.
Следующим важным понятием объектно-ориентированного подхода является класс. Он несёт в себе структуру и поведение объекта. Структура – это совокупность свойств объекта и их возможных значений или, другими словами, множество возможных состояний. А поведение – это множество способов перехода между возможными состояниями.
Следует различать множество возможных состояний и текущее состояние объекта. Когда мы говорим, что объект обладает состоянием, мы подразумеваем, что оно взято из множества возможных состояний, задаваемых классом.
Индивидуальность – это свойство объекта, отличающее его от всех других объектов (даже от тех, которые имеют тот же класс и то же состояние). Два зелёных яблока, например, являются разными объектами, несмотря на то, что значения их свойства “цвет” совпадают.
Объединяя сказанное, можно представить объект как совокупность класса, текущего состояния и индивидуальности (если рассматривать класс, как носитель поведения и множества возможных состояний объекта).
Таково понятие объекта в объектно-ориентированном программировании. Перейдем к концепции Материи-Информации-Меры в КОБ.
Объект реального мира (по КОБ) представляет собой единство Материи, Информации и Меры.
Материя – то, из чего объективно состоит окружающий мир, то, что мы можем субъективно ощутить нашими органами чувств. Например, стул состоит из материи.
Информация – то, что имеет свойство отображения, это то, что мы можем скопировать с одного материального носителя на другой. Например, фотография стула – это не сам стул, но она содержит информацию о стуле или его образ. Понятие образа тождественно понятию информации.
Мера – форма, задающая множество возможных состояний материи и информации, а также законы (алгоритмы) их преобразования. Мера – это форма, закон, алгоритм, система кодирования. Чертеж стула несет в себе его меру, но мерой являются и физические законы, благодаря которым возможно существование стула.
Человек может мысленно отделить одно из этих понятий от другого, но в реальности ничто не может существовать иначе как в их единстве. Стул без меры – это нечто бесформенное, стул без образа – это нечто непознаваемое, стул без материи – это нечто невоплотимое.
Можно заметить сходство понятий меры (по КОБ) и класса (в ООП), так как они обозначают то, что задает структуру и возможные способы преобразования объекта.
Между информацией (по КОБ) и текущим состоянием (в ООП) тоже можно заметить сходства, так как оба этих понятия означают то, что можно скопировать и то, что преобразуется по законам, заданным мерой (КОБ) или классом (ООП).
Однако, чтобы копируемый объект приобрел индивидуальность (в ООП), его необходимо поместить на новый материальный (по КОБ) носитель (например, записать в новую область памяти). Так, индивидуальность объекта (в ООП) указывает нам на его материальную составляющую. Если принять все вышесказанное, то понятие объекта в ООП становится схожим с понятием объекта в КОБ.
Каждый день программисты на практике доказывают верность принципов объектно-ориентированного подхода. Однако, если мы находим отражение этих понятий в концепции Материи-Информации-Меры, может ли это послужить косвенным подтверждением ее правильности? С другой стороны, концепция Материи-Информации-Меры претендует на наиболее общее описание реальности. Находя отражение этой концепции в ООП, можем ли мы утверждать, что теория программирования затрагивает не только сферу разработки программного обеспечения, но и более глубокие вопросы бытия?
- О мировоззрении триединства материи-информации-меры читайте, например, в «Основы социологии», ч. 1. [↩]
- Об объектно-ориентированном подходе можно найти много информации. Лично я считаю книгу “Объектно-ориентированный анализ и проектирование” Грэйди Буча достаточно глубоким источником знаний на эту тему. [↩]