|
В чем проявляется диалектика абстрактного и конкретного в мышлении программиста? Рассмотрим типовую, абстрактную задачу, решаемую каждым программистом.
Дано:
- предметная область Q общественной практики общественного тела человечества;
- объекты A и B очерченной предметной области Q, взаимодействующие между собой в результате обмена информацией между ними;
- информационные коды, которыми обмениваются объекты A и B между собой;
- микропроцессорное оборудование, обеспечивающие съем и передачу следящих и управляющих кодов объектам A и B (этот пункт может включаться и в раздел "Найти").
Найти:
- программный код, обеспечивающий "бесчеловечный" контроль и управление деятельностью объектов A и B при помощи ЭВМ или ПК.
Не трудно видеть, что без конкретной насыщенности данной задачи реальными чувственными объектами решить ее, что называется "в общем виде" не представляется возможным. Это верх абстракции. Чехарда терминов. Но лишь на взгляд непосвященного человека.
Для программиста же это не пустая абстракция, а конкретная модель постановки задачи для программирования. Достаточно заменить в ней абстрактные "термины - переменные" на конкретные понятия реальной практики живого общественного человеческого организма, как возникает реальная проблема, имеющая четкие и конкретные границы и требующая четкого и конкретного решения.
Переведем абстрактный язык типовой программистской задачи в конкретные понятия. Для примера используем одну из наиболее распространенных в современном мире "смешанных" задач - организация и ведение бухгалтерского учета на предприятии.
Дано:
- предметная область: бухгалтерский учет;
- объекты очерченной предметной области, взаимодействующие между собой: органы управления и подразделения предприятия; государственные фискальные и другие органы; материальные и основные средства предприятия; работники предприятия и т.д. и т. п.;
- информационные коды, которыми обмениваются объекты между собой: первичные документы управленческого и бухгалтерского учета;
- микропроцессорное оборудование, обеспечивающие съем и передачу следящих и управляющих кодов объектам: персональные компьютеры, множительная техника, средства связи и т. п.
Найти:
- программный код, обеспечивающий эффективный контроль и управление деятельностью объектов при помощи ПК.
Данная задача относится к категории смешанных - человеко-машинных - потому, что в качестве управляемых объектов выступают социальные и экономические институты: предприятие, органы государственной власти, работники.
Невооруженным взглядом видно, что для решения данной задачи сил одного программиста будет крайне мало. Очевидно, что потребуются скоординированные усилия целой группы специалистов. И вся их деятельность изначально будет направлена на то, чтобы сначала расщепить, разложить и препарировать весь комплекс взаимодействий между объектами рассматриваемой предметной области на составные части - атомы взаимодействия. Лишь только после этого будет возможно описание каждого отдельного его акта - единичного объекта.
Полученные единичные описания в дальнейшем должны быть классифицированы по наиболее существенным, с точки зрения информационного обмена, основаниям и объединены сначала в группы, а затем и в классы по общим для каждого из них свойствам. После этого из полученных классов становится возможным составление целостной модели всей предметной области, охватываемой условиями поставленной задачи.
Таким образом, методику составления программы можно выразить схемой: абстрактное общее - анализ - конкретное частное - синтез - конкретное общее.
Приведенная схема соответствует диалектическому пониманию категорий абстрактного и конкретного. Отсюда можно заключить, что профессиональная деятельность программиста требует от него научно-теоретического мышления.
Поэтому далеко не случайно то, что диалектическое единство абстрактного и конкретного нашло свое воплощение в объектно-ориентированном подходе к программированию. Суть этого подхода заключается в том, что данные (информация) не целесообразные для функциони-рования других объектов скрываются за интерфейсом - своего рода экраном - внутри тех из них, для кого они необходимы.
Для выявления целесообразности сокрытия или наоборот открытия данных программист сначала должен абстрагироваться от узкоместнеческих "интересов" одного объекта и взглянуть на целостную картину информационных взаимодействий с точки зрения общей пользы. А затем ему нужно посмотреть на ту же самую проблему "глазами" конкретного объекта, с его "точки зрения" - безопасно ли предоставлять те или иные данные для всеобщего пользования. В точке смычки этих противоречий программист должен создать интерфейс, скрывающий за собой то, что показывать нельзя и наоборот, разрешающий доступ к тому, без чего нельзя получить общий суммарный результат.
|
|