Наука логики в программировании

Наука логики в программировании

Данная статья посвящена сравнительному анализу логических сущностей из произведения немецкого философа Георга Вильгельма Фридриха Гегеля «Науки логики» с их аналогами или их отсутствием в программировании.

Сущности из «Науки логики» выделены курсивом чтобы не было путаницы с общепринятыми определениями этих слов.

Чистое бытие

Если Вы откроете определение чистое бытие в книге, то увидите интересную строчку «без дальнейшего определения». Но для тех кто не читал или не понял не спешите обвинять автора в деменции. Чистое бытие — это базовое понятие в логике Гегеля означающие, что какой-то объект есть, прошу не путать с существованием объекта, объект может не существовать в реальности, но если мы его как-то определили в нашей логике он есть. Если Вы задумаетесь, то действительно такое вещи как чистое бытие невозможно дать определение, а любая такая попытка сведётся к тому, что Вы будете просто ссылаться на его синонимы или антонимы. Чистое бытие на столько абстрактное понятие, что может применяться абсолютно к чему угодно, включая само себя. В некоторых объектно-ориентированных языках есть возможность представлять в виде объекта всё что угодно, в том числе операции над объектами, что в принципе даёт нам такой уровень абстракции. Однако, в программировании прямого аналога чистого бытия нет. Чтобы проверить существование объекта, нам нужно проверить его отсутствие.

if(obj != null);

Странно, что такого синтаксического сахара ещё нет, учитывая что данная проверка является весьма популярной.

Ничто

Как можно было догадаться ничто является отсутствием чего бы то ни было. И его аналогом можно назвать NULL. Стоит отметить, что в науке логике ничто является чистым бытием, потому что оно тоже есть. В этом состоит некоторая загвоздка, к NULL мы не можем обратиться как к объекту ни в одном языке, хотя по сути он тоже им является.

Становление и моменты

Становление — это переход от ничто в бытие и от бытия в ничто. Это даёт нам два момента, первый называется возникновением, а второй прехождением. Прехождение названо так вместо исчезновения, потому что логическая сущность по сути не может исчезнуть, только если мы её не забыли. Снятием как таковым можно назвать процедуру присваивания. В случае, если у нас инициализируется объект происходит момент возникновения, а в случае присваивания другого значения или NULL момент прехождения.

obj = new object(); //возникновение
obj = null; //прехождение

Наличное бытие

Если вкратце наличное бытие — это объект не имеющий чёткого определения, но имеющий определённость. Что это значит. Каноничным примером является обыкновенный стул. Если Вы попытаетесь дать ему чёткое определение, то столкнётесь с множеством сложностей. Например, Вы скажите: «это предмет мебели предназначенный для сидения», но кресло тоже создано для этого и т.д. Но отсутствие чёткого определения не мешает нам выделять его в пространстве и использовать при передачи информации о нём, это потому что в нашей голове есть определённость стула. Возможно, некоторые уже догадались, что для выделения таких объектов из потока данных были созданы нейронные сети. Нейронную сеть можно обозначить как функцию определяющую эту определённость, но видов объектов которые бы включали в себя чёткие и нечёткие определения не существует, поэтому такими объектами нельзя пользоваться на одном уровне абстракции.

Закон перехода количественных изменений в качественные

Данный закон был сформулирован Фридрихом Энгельсом в результате интерпретации логики Гегеля. Однако, его можно вполне углядеть в первом томе в главе о мере. Суть его заключается в том, что количественные изменения в объекте могут повлиять на его качество. Например, у нас есть объект лёд, при накоплении температуры он превратится в жидкую воду и изменит свои качества. Для реализации такого поведения в объекте существует шаблон проектирования «Состояние». Возникновение такого решения вызвано отсутствием в программировании такой вещи как основание для возникновения объекта. Основание определяет условия при которых объект может возникнуть, а в алгоритме мы сами решаем в какой момент нам нужно проинициализировать объект.

PS: Если данная информация будет интересной я проведу обзор других сущностей из «Науки логики».

Источник: habr.com

Добавить комментарий