Кластерное программирование

Программа HabibtgKlaster

 

Автор: Хабибуллин Тавис Габдулхаевич

22.12.2012, Москва, http://tavis4.narod.ru

Программа HabibtgKlaster – макрокомпилятор, компилятор текстов – основная программа, позволяющая реализовать и продемонстрировать концепцию кластерного программирования.

Версия 1.0.0  

Автор программы: Хабибуллин Тавис Габдулхаевич

Некоторую информацию о проекте можно найти на сайте

http://tavis4.narod.ru

Предупреждение:

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

Введение

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

Каждый кластер размещается для простоты в отдельной таблице, в данном случае – таблице системы управления базой данных (СУБД) MS Access 2010.  В таблице размещаются фрагменты будущего исходного текста программы. Один кластер содержит один или несколько фрагментов текста, объединённых одной мыслью, идеей по внесению изменений или дополнений в тело программы (и других кластеров). Чаще всего это идея по разработке и включению (вкраплению) в программу новой функции или улучшения, расширения возможностей или детализации существующей функции.

Разные фрагменты одного и того же кластера вставляются макрокомпилятором автоматически в разные места общей программы (в отличие от обычного модуля или процедуры).

Кластер должен решать задачу «наделения» программы новой функцией от начала и до конца, пусть даже и не во всех деталях, например, если надо, решать такие вопросы, как объявление файлов и переменных, обнуление данных, открытие файлов, чтение файлов внутри цикла, вычисления и другие операторы, вывод результатов, закрытие файлов и т.д.

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

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

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

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

Предлагаемый подход применим ко всем языкам программирования, может сочетаться с визуальным, объектным и структурным программированием. Являясь по сути «сверхструктурным» программированием, кластерное программирование, тем не менее, позволяет «смягчить» жёсткие требования «нисходящего» проектирования за счёт появившихся возможностей по перенаправлению фрагментов кластеров с одного уровня на другой. Это важно, т.к. наше восприятие и мышление используют не только иерархические структуры и вертикальные связи, но и сетевые структуры и горизонтальные связи.

Программист записывает в кластер не только фрагменты текста, но и свои мысли (намерения) по внесению добавлений в программу, а «компилятор мыслей» материализует (реализует) эти мысли в виде результирующего программного текста, пригодного для обычного компилятора, такого, например, как Delphi 2010.

Кластерное программирование позволяет разрабатывать очень большие программы, включая в них всё новые и новые возможности, не запутываясь в огромном количестве функций, не путая «уровни», к которым принадлежит тот или иной фрагмент текста. Отжившие, старые варианты функций или уровней можно физически исключить из всего исходного текста, не опасаясь, что программа перестанет работать. Поэтому кластерное программирование можно назвать и «Эволюционным программированием», или «Программированием систем с бесконечным жизненным циклом».

Примером больших проектов может быть разработка самих операционных систем.

Удобная система комментирования поможет другим программистам изучить ваши программы и продолжить начатое вами дело. Она поможет выполнить подробное описание программы в буквальном смысле «параллельно» исходному тексту, даже если «первичные» авторы не оставили никаких комментариев. При этом «погружаться» в программу и разбираться в программе методом «ползания» по исходному тексту придётся один-единственный раз. Всё это может дать второе дыхание проектам типа «Открытых систем».

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

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

Описание комплекса

Список кластеров записывается в отдельной таблице Access 2010 с зарезервированным именем TableList. Ниже перечислены поля (столбцы) этой таблицы, их тип и назначение:

Off ------------   Boolean - включает и отключает кластер при макрокомпиляции

TableName -   Текстовый  -  мнемоническое имя таблицы-кластера

Nazvanie     -   Текстовый   название кластера

Kommentarii – МЕМО -  более подробное описание кластера

 

Сам кластер  размещается в таблице Access, имя которой даёт разработчик.

В нашем случае это, например, T0, T01, T02, T03, T031, T032.

Поля:

Off ------------   Boolean - включает и отключает строку таблицы-кластера при макрокомпиляции

ToTbl -- Текстовый    маркер, содержащий имя таблицы-кластера, в которую будет отправлен фрагмент текста, определяемый этим самым маркером, если он не равен пустой строке. Фрагмент определяется как совокупность всех строк с пустым значением поля ToTbl,  находящихся выше (перед) строкой с данным маркером плюс сама строка, содержащая данный маркер. Если поле ToTbl равно “file”, то это означает, что фрагмент будет отправляться не в таблицу, а во внешний текстовый файл. Это может быть, например, файл головной программы на Паскале или процедура. В поле ToMarker  при этом записывается зарезервированное слово “text”. Имя внешнего текстового файла берётся из поля ProgramText, например, ”Sotr.pas”. В этом случае считается, что сама строка в фрагмент не входит и в текстовый файл не отправляется.

ToMarker -- Текстовый    указывает на строку с меткой (маркером)  в поле Marker таблицы-кластера, в которую будет отправлен фрагмент текста. Фрагмент  помещается выше (непосредственно перед) строкой с данной меткой.

Marker -- Текстовый    метка, «точка вставки», маркер, идентифицирующий строку, в  которой он находится. На этот маркер указывает  поле ToMarker таблицы-кластера, из которой будет отправлен фрагмент текста. Фрагмент  помещается выше (непосредственно перед) строкой с данной меткой.

ProgramText – МЕМО – содержит фрагменты текста программы на любом языке.

Может использоваться и для ведения работ над обычными информационными материалами (статьи, учебники, инструкции и т.д.) одновременно в нескольких вариантах. Например:

1.    Общий, обзорный, ознакомительный вариант

2.    Изложение по существу

3.    Развёрнутый вариант с подробными примерами, ссылками и комментариями для специалистов в данной области.

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

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

Kommentarii – МЕМО – содержит подробный комментарий, ссылки - всё, что думает разработчик о данной «строке».

Установка программы

На компьютере пользователя предварительно должны быть установлены MS-Access 2010 и Delphi 2010.

Программа должна быть размещена обязательно на диске C: в корневой директории.

Zip-файл разархивируется в виде директории (папки) HabibKlaster.

После размещения необходимо на рабочем столе создать ярлык с именем HabibKlaster , указав путь к объекту

 C:\ HabibKlaster \LNK

Далее, кликните на ярлык HabibKlaster .

Вы попадёте в папку LNK.

Установки как таковой не требуется, но должны быть сделаны вручную следующие настройки:

Кликните на ярлык HabibDB .

В Access 2010 в поле Файл\параметры\Рабочий каталог\  надо ввести C:\HabibKlaster\HabibPrg

В Delphi 2010 также надо проследить, чтобы все выходные директории, например, для exe- модуля и рабочие директории по умолчанию для файлов программы на Delphi также совпадали с

C:\HabibKlaster\HabibPrg

Обычно все эти поля пустые, и их трогать не надо.

Чтобы вызвать Delphi, надо кликнуть ярлык Project1Sotr.dproj .

Если вы решили разместить комплекс  не на диске “C:”, вам придётся во всех настройках и ярлыках в папке “LNK” поменять имя диска и позаботиться о правильной адресации программных файлов, входящих в проект Delphi.

Поэтому при первом ознакомлении лучше оставаться на диске “C:”.

Для удаления программы достаточно уничтожить папку C:\HabibKlaster и ярлык.

Как пользоваться программой

Для начала работы кликните на ярлык HabibKlaster . Вы попадёте в папку LNK. Для лучшего понимания цели и назначения примера рекомендуется сначала просто просмотреть все готовые текстовые файлы (с расширением .txt) после предыдущего исполнения (автором) всех шагов по применению комплекса.

Итак, кликните ярлык Sotrudnik.txt. Он содержит список сотрудников организации. Каждая строчка содержит код сотрудника, оклад и фамилию. Смысл примера состоит в том, чтобы создать программу на Delphi, которая прочитала бы этот файл и рассчитала несколько показателей, например, количество сотрудников в организации, сумму окладов, среднюю зарплату, налоги и т.д. При этом мы должны иметь возможность получать исходные тексты с разными сочетаниями этих функций.

Далее, кликните ярлык SotrOtvet.txt. Это конечный результат созданной и выполненной программы на Delphi. Основная её процедура – Sotr.pas. Посмотреть через ярлык в чистом виде её нельзя. Она почти не содержит комментариев. Первый способ её посмотреть – стартовать Delphi:

Кликните ярлык Project1Sotr. Dproj

Среди прочих процедур должна появиться и Sotr.pas.

Если вы не хотите пока стартовать Delphi или она у вас не установлена, можно сначала с рабочего стола стартовать Notepad и в нём открыть файл C:\HabibKlaster\HabibPrg\Sotr.pas.

Параллельно с этим файлом макрокомпилятор HabibtgKlaster создаёт для просмотра пользователем его аналог  Sotr.pas.txt, в котором после каждой строки вставлены имеющиеся в комплексе комментарии. Этот файл можно посмотреть,

 кликнув ярлык Sotr.pas.txt

Кроме того, параллельно  макрокомпилятор создаёт для просмотра пользователем текстовый аналог  кластеров T0, T01, T02 и т.д., в которые также вставлены имеющиеся в комплексе комментарии. Информация из таблицы TableList помещается в самое начало и отчёркивается строкой из звёздочек ********* . После каждой строки таблицы ставится строка из минусов -------- . Кроме того, в конце каждого фрагмента ставится строка из точек ……. . Эти файлы можно посмотреть,

 кликнув ярлыки T0.txt, T01.txt, T02.txt и т.д. соответственно.

Теперь можно выполнить реально всю цепочку действий от начала до конца.

Стартуем Access,

Кликнув ярлык HabibDB.

Просмотрите все таблицы – TableList, T0, T01, T02, T030, T031, T032 и соответствующие формы, если они имеются.

Далее

Если вы что-то изменяли в базе данных, кликните

Файл / Сохранить

Далее

Кликните “Работа с базами” / ”Visual Basic

В появившемся окне модулей с помощью меню станьте на модуле HabibtgKlaster.

Кликните Run

 затем

Run Sub/UserForm   F5

Макрокомпилятор HabibtgKlaster выполнит свою работу, создаст все необходимые текстовые файлы.

Теперь стартуем Delphi.

Кликните ярлык Project1Sotr. Dproj

Если Delphi попросит разрешения пeрезагрузки модуля в связи с изменением даты и времени создания, ответьте “Yes “.

Просмотрите в окне редактирования файлы Sotr, Unit1, Project1Sotr, ничего не трогая.

Выполните вновь созданную программу, кликнув

Project / Build  Project1Sotr   Shift + F9

Run/ Run    F9

На появившейся форме Form1 нажмите кнопку “Button1”,  а через пару секунд можете закрыть приложение Delphi, кликнув крестик “x” в правом верхнем углу окна формы.

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

Теперь вы можете поэкспериментировать. Например, можно отключить кластер T01, кликнув поле Off таблицы TableList, далее «сохранить»,  и повторить все действия. На этот раз разницу в результатах можно заметить уже во всех выходных файлах, посмотрев их через ярлыки. В файле SotrOtvet.txt исчезнет строка

«Количество сотрудников =         ,

что и требовалось.

Можно отключить кластер T031  и включить T032.

Отключить  T030 – всё, что касается налогов. Программа должна стать совсем понятной.

Дальше вы можете попробовать слегка изменять существующие кластеры или создавать новые. Помните, что Кластер-заготовку T0 выключать нельзя.

Не смотрите, что кластеры и вся программа слишком простые. Сложность не “заставит” себя ждать. Представьте себе, что некоторые кластеры должны выводить данные о налогах не в текстовом виде, а в виде таблиц базы данных, тип которой определяет налоговая инспекция. Может попасться также противный алгоритм налогообложения и т.д.

Ещё о концепции

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

На этот процесс восприятия и образно-логического мышления, распознавания формальной структуры, фрагментов текста, связанных с конкретной функцией, расходуется время и умственная энергия. При этом вероятность ошибок достаточно велика. Не зря опытные программисты постоянно «прогоняют» свои программы даже после незначительных изменений. Тише едешь – дальше будешь.

Данный материал демонстрирует не готовый программный  продукт, а концепцию, и носит, в том числе, и пропагандистский характер.

Одна из целей – ещё раз подтвердить правильность имеющейся у автора модели процесса восприятия и мышления.

Ранее правильность этой модели была экспериментально подтверждена на материале музыки и архитектуры в моих работах “Исследование форм музыкально-мелодического мышления с помощью ЭВМ (компьютера)” и “Построение перспективных изображений с учётом динамики зрительного восприятия” и др.

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

Так появилась обучающаяся (с нуля) программа распознавания зрительных образов Habibtg в нынешнем виде.

Несколько слов о происхождении концепции кластерного  программирования. В упомянутой выше работе по исследованию форм музыкально-мелодического мышления с помощью ЭВМ впервые были экспериментально обнаружены структуры, названные мной тогда «классами связности». Такое название естественным образом следовало из математического аппарата, который использовался для построения модели.

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

Впрочем, так происходит во всех областях науки, техники и жизни – материя методом проб и ошибок, через миллиарды людей, познаёт сама себя.

В современных программно-технических средствах отображения, например, многое напоминает то, что происходит в нашем зрительном аппарате, только как бы “по ту сторону экрана” и в “обратном направлении”.

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

Не совсем научные термины типа «Искусственный интеллект» как бы стыдливо прикрывали тот факт, что мы не знаем, как на самом деле работает естественный интеллект, например, зрительное восприятие и пространственное мышление. В искусственный интеллект «ссыпали» (сваливали) всем давно известные математические инструменты. Сам же искусственный интеллект взамен ничего не мог дать, например, программированию по той простой причине, что он не является наукой о восприятии и мышлении.

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

В  то же время из авторской модели следует, что можно осознанно продолжить применение разных классов связности в программировании в разных «предметных» (понятийных) областях и на разных уровнях (абстрагирования).

 

Другая цель этой работы – обосновать данный подход и обратить на него внимание разработчиков. Поэтому сделаем ещё несколько замечаний.

Для комфортной работы с комплексом требуется решить несколько проблем.

1.    Хотелось бы иметь возможность легко и быстро вставлять строки в любом месте таблицы, а не только добавлять их в конец.

2.    Хотелось бы иметь возможность легко и быстро открывать Memo-поле только данной строки для просмотра и редактирования.

Насколько я помню, такие возможности были, по крайней мере, в Paradox для DOS. Работа с таблицей там мало чем отличалась от работы в текстовом редакторе.

3.    Было бы неплохо, если бы Интегрированная среда разработки Delphi или Visual Basic могли работать не только в текстовом формате, но и в формате кластерных таблиц. Можно было бы указывать ошибки трансляции, редактировать текст и выводить результаты проектирования (в том числе - визуального) в формате наших кластерных таблиц с проставленными маркерами, а процесс слияния их с нашими кластерами стал бы полностью автоматизированным. При этом полная и глубокая переработка текста, созданного, скажем, ИСР Delphi не приводила бы к потере "вкраплений" ручного текста. Весь "ручной" текст программы сохранялся  бы в наших кластерных таблицах.

Напомним, что в нашем примере по правилам Delphi файлы должны объявляться в модуле (Unit), и мы это сделали "вручную" в готовом текстовом файле Unit1.pas. Сейчас, правда, с помощью кластера можно создать модуль Unit2.pas c объявленными там нашими файлами. Но оператор Uses Unit2 in "Unit2.pas", а также вызов процедуры Sotr после нажатия кнопки на форме пока приходится  вписывать вручную прямо в текстовые файлы Delphi. В любом случае кластер с маркерами несёт дополнительную информацию о структуре программного текста, являясь её простейшей моделью и даёт больше возможностей работать с текстом в автоматическом режиме, например, вставлять не только стандартные визуальные и другие объекты, но и стандартные алгоритмы и языковые конструкции.

Все группы разработчиков упомянутых известных продуктов могли бы получить «синергетический» эффект, даже используя только свои продукты, не пересекаясь друг с другом.

Автор специально в примере генерировал текстовые файлы для Delphi, а не для Visual Basic, чтобы подчеркнуть универсальный характер концепции кластерного программирования. Хотя сам бог велел использовать программу  «внутри» Access, в «родных стенах», в макросах и Basic-кодах.

С другой стороны, если систему HabibtgKlaster, созданную сейчас на Access, переложить на Paradox, и, скажем, язык PAL или Delphi (Паскаль) – также получится автономная система, работающая с Delphi и не требующая СУБД Access.

HabibtgKlaster – полезный инструмент сверхструктурного программирования

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

При записи и редактировании комментария текст программы не может быть испорчен даже случайно. При необходимости «закомментировать», а на самом деле – отключить строку программного текста, не надо заходить в поле программного текста, достаточно кликнуть на поле “Off”, придав ему тем самым значение “True”. Для включения строки достаточно ещё раз кликнуть на поле “Off”,  придав ему  значение “False”.

Для лучшего понимания того, надо ли развивать кластерное программирование, зададим себе несколько вопросов.

Вопрос. Спрашивается, зачем программисту всю жизнь смешивать золу и крупу или разные крупы, как это делала злая мачеха в сказках о золушке, а затем каждый раз с умным видом долго отделять «зёрна от плевел», чтобы получать ответы на довольно  простые вопросы?

Ответ. Действительно, это нерационально. Кластеры позволяют хранить идеи и функции в первозданном, распознанном виде, такими, какими они были в голове разработчика в момент реализации, до слияния их с остальной частью программного текста. Вместо длинных и «плоских» программных текстов (на осях x,y)  мы имеем объёмную иерархическую систему из сравнительно небольших кластеров на разных уровнях (по оси z).

В некотором смысле к исходному модулю можно относиться как к exe-модулю. В случае обнаружения ошибок они исправляются не в исходном модуле, а в кластере, а исходный модуль создаётся заново. Разбираться      в работе программы также лучше через кластеры. Правда, исходный модуль, снабжённый комментариями, может быть очень полезным при разработке.

Вопрос. Почему в компиляторах, например, в Delphi, выделяют разные участки текста разными цветами, а комментарии – ещё и курсивом?

Ответ – для большей «читабельности». След, - есть проблема, несмотря на всякие объектные и прочие подходы? Да, есть. И это – проблема необходимости постоянного распознавания кластеров в процессе чтения текста.

Вопрос. Почему программисты во всём мире не любят копаться в чужих программах?

Ответ тот же.

А.Я. Архангельский замечательно пишет о «забытых» на время функциях программы (режимах, действиях) из-за увлечения визуальными объектами и о том, к чему может приводить бессистемность и  такая «забывчивость».

Смотри

А.Я. Архангельский. «Программирование в Delphi. Учебник по классическим версиям Delphi»

Москва, Издательство БИНОМ, 2008

     Часть 2. Методика проектирования приложений

Глава 4. Организация управления приложением

4.1 Технология разработки приложений

Вся первая страница.

Конец ссылки на А.Я. Архангельского.

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

Один – для компьютера (транслятора), без всяких комментариев.

Другой – текстовый -  для программиста, знакомящегося с программой, с обширными комментариями.

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

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

Заключение

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

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

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

Это направление, связанное с частично формализованным описанием всё большего количества объектов и процессов, видимо, будет всегда  идти параллельно фундаментальному моделированию восприятия, пространственного образного мышления и мотивации, так как оно экономнее с точки зрения расходования компьютерных ресурсов и в то же время целесообразно с практической точки зрения.

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

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

22.12.2012, Москва, http://tavis4.narod.ru

Сайт управляется системой uCoz