Начала диалектического программирования.
Некоторые общие положения.
- 10.11.13 г. -


1. Предметная часть.


А. В ходе исследований начал одной из новых логик было установлено то, что и в этой логике (как и в гегелевской науке логики) обнаруживается свободное развитие содержания без субъектного обусловливания, что соответствует свободному, истинному мышлению, указанному Гегелем в его труде «Наука логики». Конечно, свободная реализация содержания далека от саморазвития понятия, но ведь и речь шла не о диалектическом познании, а лишь об одном из его инструментов (точнее – об одной из новых логик). Таким образом, был определен такой аспект существования, когда содержание самостоятельно без субъектного обусловливания определяет себя, свою реализацию (здесь: без вмешательства человека), но не стихийно, а упорядоченно. Это не новость в смысле указанных Гегелем положений, которые следует обсудить в дискуссиях. Но тут важны два момента. Во-первых, конструирование обсужденной логики происходит диалектически. Во-вторых, обнаруживается положенность упорядоченности, или некоторый регламент, что характерно для логики. При этом следует подчеркнуть, что регламент, с другой стороны, можно использовать субъективно (здесь: не значит, что всегда и только субъектом). Это будет конкретное развитие содержания, которое является одной из составляющих многообразия развития содержания. Не перегружая эту статью диалектическими выкладками, достаточно будет сказать, что через действительность была установлена возможность существования и обособления (построения) абстрактных упорядоченных вариантов развития, правда, характеризующихся своими условностями, условиями, распространяющимися на них (эти условия неизбежны по причинам, которые можно обсудить в дискуссиях). Иными словами, варианты развития содержания могут быть положены (выстроены и осуществлены) в соответствии с определенными условиями, которые распространяются на логику в целом, но в рассматриваемом случае имеют еще и свою специфику, понятие которой также можно обсудить в дискуссиях. При этом существенны два случая, из которых сейчас интересен тот, когда устанавливается, что различные исходные определения (данные) подпадают под один вариант (алгоритм) их развития. Так является строго определенная (=алгоритмическая) обработка определений, или данных: алгоритмическая программа.
    Таким образом, в современной диалектической философии понятие алгоритмической программы, как регламента определенной (=алгоритмической) обработки определений, или данных, выводится, а понятие компьютерной программы, кстати, является только лишь её следствием.
    Далее, отсюда определяется необходимость обоснования и изучения не только самой алгоритмической программы, т.е. не только некой конкретной формы (напр., та или иная реализация логики или тот или иной язык программирования), но и алгоритмической обработки данных вообще: диалектическое программирование.
    Уже отсюда определяется то, что диалектическое программирование – это исследование оснований алгоритмической обработки данных, в частности, обычного программирования, в т.ч. образования кода и его развитий.
    Таким образом, диалектическое программирование – концептуальная альтернатива обыкновенному программированию; они оба рассматриваются как виды человеческой деятельности и отличны от того, что принято называть «парадигмы программирования». Но если обыкновенное программирование сводится к составлению кода и изучению обстоятельств и возможностей этого, то диалектическое программирование исследует то, что предопределяет всё это, а также новые развития обнаруженных фундаментальных начал.
    Понятно, что диалектическое программирование – это не компьютинг (в т.ч. понимаемый и как изучение преобразования информации и создания компьютерных технологий) и не обобщенное программирование, которое сводится к безотносительному описанию данных и алгоритмов.
    При этом осмысление отдельных операций и содержаний процессов алгоритмизации позволило установить их концептуальную связь и особые положения, которые тоже можно обсудить в дискуссиях, и которые становятся основанием принципиально нового изучения функционирования как программного обеспечения, так и программно-технического комплекса (в т.ч. архитектуры компьютеров, например, установленной в диалектической кибернетике СДФ-архитектуры компьютеров), а также определяет особенность и существо диалектического программирования как принципиально новых предметных теоретизаций.
    Итак, диалектическое программирование – это исследование основ и существа алгоритмической обработки данных вообще, т.е. оснований вообще программирования и, в частности, образования кода.

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


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


В. С началом формирования диалектического программирования определиться просто, ибо его составляет базовый элемент одной из новых логик – операнд. В диалектическом программировании этот элемент именуется «переменная», так как он не является наличным бытием или его производной. Этот элемент – идеален, а, как положенное, он – переменная.
    В смысле качества и количества определяются … тип переменной и значение переменной.
    Как видно, понятия базовых для программирования положений – переменной, типа и значения – не берутся с потолка, как в обычном программировании, а выводятся (из содержания гегелевской науки логики и новодиалектического науки-логики-продолжения, точнее – из их определенного положенного развития, из одной из новых логик).
    Итак, переменная, тип и значение имеют более фундаментальные определения, чем представляют себе программисты, и могут быть представлены в таких формах, которые еще не ведомы обычному программированию и обусловливают новые для него возможности, использование которых уже происходит в познании современной диалектики.
    Понятно, что в силу ограничений и предметных потребностей субъективно можно составить любые требуемые типы, что проявилось, прежде всего, при исследовании совокупностей определений.

Через понятие совокупности переменных определяются соответствующие различия, которые дают другие важные положения программирования, такие как массив, структура, класс и т.д. Это интуитивно понятно, и простое обозначение этого на данном этапе изложения вполне достаточно.
    Главное, должно быть понятно то, что понятия базовых для программирования положений в диалектическом программировании не берутся бездоказательно («как нужно», «как пришло в голову автору языка программирования» и т.п.), как в обычном программировании, а выводятся из фундаментальных положений.
    Это относится и к свойствам переменных и их совокупностей, например, таким, как «чистый» (abstract) и «предметный» (имеющий значения, в т.ч. нуль), характеристика, принадлежность и др.


Г. Отдельно следует остановиться на таком положении.
    Еще Гегелем было различено субъективное обозначение.
    А в современной диалектической философии было осуществлено определение самости различения, выделения, чистой идентификации чего-то: термин; тут подразумевается ещё и объективное обозначение.
     Пока, не обсуждая диалектические основания и существо указанных положений, просто укажем, что в программировании имеются представления об объективном и субъективном терминах: это, например, в языке  C#,  соответственно, квалификация элементов, скрытых одинаковыми именами, и ссылочный тип.
    Более сложным является опосредствование ссылок, исследование которого происходит на следующем, более высоком кругу познания диалектического программирования. А пока, не усложняя объяснения диалектическими выкладками, просто укажем, что программисты интуитивно осознали и стали использовать и эти моменты: в том же  C# – это передача нечто на исполнение (методу) в качестве параметра и аргумент, передаваемый по ссылке.
    Определяется и «пустая ссылка» (NULL).
    Но вот можно ли образовать некие другие, не очевидные для программистов возможности, исходя из определения термина (обозначения, ссылки)? – это конкретный, чисто теоретический вопрос, который даже не поставлен в обыкновенном программировании, но исследуется в диалектическом программировании. Следует подчеркнуть то, что этот вопрос категориальный, т.е. он не касается структурных аспектов – создания типов, допускающих значения NULL, или неких наборов ссылок (списков, из которых широко известны очереди (Queue) и стеки (Stack)). Кстати, сами эти структурные аспекты также исследуются в диалектическом программировании, исходя из теоретических посылок.

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


Д. Соотношения переменных и ссылок – отдельный и очень важный вопрос, который следует обсудить в дискуссиях. Пока отметим, что многие совокупности переменных в силу опосредствования могут пониматься и как тип значений и как ссылочный тип, что обусловливает возможность их различных реализаций в разных языках программирования (напр., массив в  PASCAL  и в  C#), но в них не было никакого теоретического обоснования, и всё делалось «как можно» или «как удобнее».
    Однако это еще один важный теоретический вопрос, который решает диалектическое программирование в зависимости от того или иного параметра ограничений (т.е. теперь технически можно реализовать многое, и поэтому реализация той или иной возможности, согласно диалектическому программированию, определяется при понимании задач конструируемого языка или метода решения проблемы, а не как это делалось обычно, исходя из субъективных представлений).
    Кстати, возможности, определяемые сочетанием обозначений, объектами и их параметрами, далеко не тривиальны, но в обычном программировании дальше наследования и рефлексивных возможностей (возможность динамической модификации программных инструкций во время работы и их вызова) дело почему-то не пошло.


Е. Отдельным вопросом является рассмотрение операций, выражений и методов.
    При этом, согласно диалектике, познание диалектического программирования (образуемые в нем рассуждения) также должно осуществляться в форме движущегося в диалектическом познании содержания, и при этом создаваемые содержание и логика должны вовлекать в свое движение предметное содержание, раскрывать его, постигать его диалектику и понятие.
    В этом смысле диалектическое программирование активно использует достижения современной диалектической философии в области логики. Например, были установлены новодиалектические синтетические возможности рассуждений, не раскрытые Гегелем, когда для предметного содержания может быть образовано определение, аналитически не выводимое из него (что, кстати, согласуется с теоремой Гёделя), и потом оно может быть использовано в синтетических и других построениях.
    Таким образом, при данном предметном объеме возможно создание синтетического нового, а не только аналитически выводимого.
    При этом появляется возможность реализации самостийных синтетических построений, т.е. саморазвития соответствующих логических (алгоритмических) построений.
    Эта возможность обусловливает не только новый вид алгоритмических построений (синтетические алгоритмические построения), но и в целом новую форму программирования (форму метапрограммирования) – разделенное программирование. Пока отметим лишь то, что для его понимания важно определение суждения, представления о котором в науках несостоятельны, поэтому обсуждение этой формы метапрограммирования на основе материалистичных наук весьма проблематично.

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


Ж. Отдельным вопросом является рассмотрение изменяемых совокупностей данных – баз данных, причем не только общеизвестных, но и принципиально новых.


З. Важным в методологическом, а потом и в программно-структурном смысле является очевидное различение алгоритмов:
– один («обычный») характеризуется определенным субъективным развитием содержания, правда, уже не на основе несостоятельных законов логики,
– второй (новодиалектический) определяется свободным (неопределенным несубъективным) развитием содержания (программного кода) [в т.ч. в силу разделенного программирования], что соответствует свободному, истинному мышлению, указанному Гегелем в его труде «Наука логики».

Отсюда следует ряд значимых выводов, один из которых касается диалектического искусственного интеллекта; при этом диалектическое программирование и диалектический искусственный интеллект основаны на разных видах программирования (а в науках идея и виды программирования при создании искусственного интеллекта и системных и прикладных программ не отличаются).


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


[См. «Разделенное программирование», «Программирования диалектического становление»,  «Языков программирования объектно-ориентированных основы» и «Обозначения: их различения и структура»; «Диалектического искусственного интеллекта принципы самодвижения» и «Диалектического искусственного интеллекта формы самодвижения».]


2. Дискуссионная часть
[в рамках проекта ДИАЛЕКТИКА].

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

б. Для предметных дискуссий в рамках Академии диалектики и диалектической философии предоставляются ссылки на дополнительные материалы.

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

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


3. Другие обсуждения: http://all-discussions.livejournal.com/49090.html.