.Net Framework в интересах диалектики – 1.2.
- 16.03.14 г. -


На сайт пришли интересные вопросы по поводу первой части статьи – по поводу … непрограммного использования ресурсов платформы .Net Framework (Microsoft Corp.) и знаний о них.
    Дело в том, что всем понятно, что язык программирования и сопутствующие ресурсы следует использовать для создания программ и т.д. А вот то, что они могут выступать и в другом качестве, это оказалось для кого-то в новинку, а для кого-то и в диковинку. Однако факт есть факт: анализируя платформу .Net Framework, можно определить много интересных непрофильных положений и даже метасмыслов. И вот именно по поводу этого и возникли вопросы.
    Конечно же, для диалектики важны более существенные вопросы, чем осуществление обычного программирования, например, организация диалектических исследований. Но такого рода вопросы могут быть интересны не всем. Кроме того, обычно нужна общепринятая конкретика. Поэтому в статье для разъяснения обсуждаемого вопроса будет акцентирован один концептуальный аспект, касающийся как конкретного положения программирования – абстрактного класса, так и конкретного положения диалектики – диалектического метода абстрактного класса (в дискуссиях можно затронуть и другие положения). Иными словами, обсуждение конкретного положения программирования проведем с учетом диалектического метода абстрактного класса, так как он, с одной стороны, некоторым образом связан с указанным положением программирования, но, с другой стороны, все же имеет гораздо большую ценность хотя бы в том, что он является элементом организации диалектических исследований. (При этом с программными возможностями можно ознакомиться в многочисленных учебных изданиях и руководствах, а диалектические реализации можно обсудить отдельно.)


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


Исследуя платформу .Net Framework, следует сказать о некоторой концептуальной похожести (даже о частичном совпадении тут говорить нельзя) ряда методологий и группируемых возможностей построения программ на основе платформы .Net Framework и отдельных методологических положений диалектики.
    Остановимся на таком важном положении диалектики, как метод абстрактного класса, который может быть сопоставлен с одним из ресурсов платформы .Net Framework и интересен еще и тем, что является базовым не только для диалектической методологии, но и для диалектической гносеологии в целом, в т.ч. для одного из её ключевых подразделений, исследующего организацию диалектических исследований.
    Рассмотрим, как уже было сказано выше, его один концептуальный аспект (т.е. аспекты функциональной и других сторон пока затрагивать не будем).

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

Интересно то, что вторая реализация метода (частная, применяемая для решения конкретного вопроса) некоторым образом соответствует тому, что используется в программировании. Например, в частности, согласно «Руководству по программированию в C#» ( (с) Microsoft Corp.), в языке программирования  C#  есть так называемые абстрактные классы (и интерфейсы): в них определяется лишь самая общая информация для производных классов. В самих абстрактных классах (и интерфейсах) нет никакой конкретики, ибо её надлежит определять в наследуемых классах. И у самих абстрактных классов не может быть их собственных объектов (экземпляров, реализаций).
    Зачем же нужны абстрактные классы (и интерфейсы)?
    Они нужны для определения общих параметров типа (например, методов), которые должны быть конкретно реализованы уже в производных классах (как уже было сказано выше, аспекты функциональной и других сторон пока затрагивать не будем).
    Смысл в том, что в программировании иногда (а в диалектике – зачастую!) требуется создать исходную конструкцию (класс), для которой определяется только общая информация (актуальная для всех последующих классов). При этом понятно, что конкретика определяется в процессе формирования программы (в диалектике – развития исследований, в т.ч. алгоритмов, программ). Обычно в абстрактном классе определяется лишь характер методов, которые должны быть конкретно реализованы в производных классах (именно это положение, очевидное и простое для обычного программирования, важно для диалектики и обладает в ней гораздо большим значением, но так и не понято в обычном программировании, хотя очень часто именно в нём оговаривается).

Итак, очевидна некоторая концептуальная похожесть (повторим, даже о частичном совпадении тут говорить нельзя) одной из методологий построения программ на основе платформы .Net Framework и одного из методологических положений диалектики.
    Но что тут важного для диалектики, если она обладает более сильными средствами в части абстрактных построений?
    Для диалектики важен ряд положений, которые проявляются именно в ресурсах платформы .Net Framework (кстати, поэтому именно о ней и идет разговор). Укажем три наиболее простых из них.
    Во-первых, декларация абстрактных классов (и интерфейсов) должна иметь не сложные реализации, нужные для решения диалектических задач, а предельно простые, важные в методологическом смысле моменты, и тут важно то, что можно проследить начинание структуры проекта (мысли, программы) и её наиболее общие положения. Тут действия в диалектике, правда, будут затрагивать а) категории, которые в науках определены бездарно, несмотря даже на выводы Аристотеля, чьими цитатами напичканы учебники по философии, и б) другие диалектические положения, собственно благодаря которым абстракции в диалектике более глубоки, чем простое понятие абстрактного класса в программировании. Однако понятно то, что и простые структурные положения и главное, их позиционирование и реализация важны диалектике. А где их еще изучать, как не в простых алгоритмах! Вот и оказывается необходимым изучение вопросов, связанных с декларацией и развитием абстрактных классов (и интерфейсов) в обычном программировании, что наиболее актуально на основе хорошо проработанных ресурсов платформы .Net Framework.
    Отсюда следует, что, во-вторых, очень важен опыт зарубежных специалистов, создающих руководства и учебные пособия, и вообще многих тысяч людей, общающихся на форумах по поводу конкретных вопросов. Дело в том, что жизнь (написание конкретных программ и даже наивные вопросы) создает такие ситуации, которые вряд ли можно предусмотреть заранее и указать в руководствах и учебниках. Эти ситуации становятся реальными неожиданно и понимаются по факту в процессах обсуждения. И эти самые моменты: знания и жизненные моменты – весьма интересны и важны диалектике для более глубокой и детальной проработки её ресурсов.
    И, наконец, в третьих, важны сами программные ресурсы (точнее – прослеживающиеся в них концептуальные решения), т.е. ресурсы (программные решения) платформы .Net Framework, в частности, позволяющие создавать обсуждаемые абстрактные классы (и интерфейсы), их наследников и вообще алгоритмы на их основе. При этом тут речь идет и о концептуальных моментах и о формальных моментах, программных ресурсах, которые продуманы и реализованы. Да, они реализованы в простейших для диалектики формах, а в самой диалектике есть более высокие абстракции, которые представляют гораздо большую ценность. Но пониматься они могут и с учетом простых формальных моментов. Поэтому и простейшими формами нельзя пренебрегать, тем более, что эти формы прорабатываются в программировании весьма тщательно.
    Таким образом, оказываются важными не столько сами программные ресурсы платформы .Net Framework (такие же формальные положения и другие присутствуют и в иных программных разработках), сколько их особенности и выступающие в связи с её спецификой вопросы, которые возникают (правда, только в диалектическом программировании) при исследовании ряда её положений и соответствующей документации, причем даже в отношении простых по своему существу положений, в т.ч. абстрактных классов (и интерфейсов).


Примечание.
    Странно то, что платформа .Net Framework предоставляет возможности, связанные с абстрагированием, довольно в убогом виде. Остается только предполагать: корпорация Microsoft просто не видит очевидных возможностей, которые просто напрашиваются и для обсуждений и для реализации, или специально их не афиширует и даже в какой-то мере создает трудности для их обнаружения? В любом случае в «Руководстве…» и другой литературе указаны, по сути, лишь побочные возможности, созданные на базе простых формальных моментов абстракций. О реальных положениях можно будет поговорить отдельно...


Так что следует не только изучить платформу .Net Framework, но и понять её скрытые смыслы.

Что еще можно добавить в завершении статьи?
    Во-первых, некоторые из обозначенных положений следует обсудить в дискуссиях, ибо в них открываются некоторые нюансы, которые существенны для понимания ряда вопросов программирования и познания.
    Во-вторых, ряд положений абстрактных классов и интерфейсов будут затронуты не только в предметных дискуссиях, но и в ряде последующих статей сайта.


См. «Новая гносеология» и  «Изложения метод абстрактного класса».


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

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

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

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

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


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