Pull to refresh
8
1.7
Send message
Поэтому предлагаю ими научно, а не философски побаловаться в продолжении нашей беседы.

К сожалению, я не готов продолжать разговор в текущем ключе. По философии, как мы ее понимаем, мы просто живем. У каждого свои представления о «прекрасном». Мало кому нужны чужие представления на эту тему, мне тоже.

А к науке, я полагаю, надо относиться либо серьезно, либо никак. Она и так слегка опошлена нынешним Интернетом. Зачем еще более усугублять ситуацию? Я не чувствую себя здесь достаточным профи, чтобы «сказать свое веское слово». Меня больше привлекает обычное программирование, без лишней теории, поскольку что-то путное, кроме общеизвестного, мало, кто может сказать. Как пример, кто ответит на вопрос, как правильно делать «модульное программирование» на С / С++? Или, тоже самое, для «итерационного программирования». Если сам себе не ответишь на эти вопросы, то никто не поможет.

это касается разрабатываемой мной теории алгоритмов

Замечательно, конечно! Но что будет в качестве «выхлопа»? Я еще понимаю, если бы Вы теорему какую-нибудь там доказали, уровня Гёделя, скажем: «Все формальные системы – неполны, а полные – не формальны!» и т.п. Не слишком практично, зато могли бы сказать: «Я памятник себе воздвиг нерукотворный» (А.С. Пушкин).

Но даже если Вы пойдете по пути Дональда Кнута и выпустите свой трехтомник+ алгоритмов: «Искусство программирования», то не факт, что любой найдет там нужный себе алгоритм. Как я не нашел, подходящий мне, даже такой проходной и избитый алгоритм, как внешняя сортировка «естественным слиянием». Поэтому, его пришлось изобретать самому ( emery-emerald.narod.ru/Cpp/2E1562.html ).

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

С уважением
Здравствуйте.

Здравствуйте!

Спасибо Вам за отзыв.

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

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

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

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

А все ли слова в языке должны непременно «отражаться» в какую-то другую «сущность»?

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

Ведь есть слова слабо-«отражающиеся». Ну, та же «затасканная» в этой статье «мнимая единица»? Какие есть ограничения у Вашего «отражения»?

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

Та же «мнимая единица» не локализованная и фиксированная сущность, а некий, вообще говоря, нечеткий отпечаток, точнее абстракция, вроде обычного числа, которая в одних местах (в математике) имеет формальное и однозначное определение, а в других, может наделяться какими угодными свойствами, вплоть до мистических и религиозных. Все зависит от контекста. Для математика, все «единицы»: 1, i, j, k, e4, e5, e6, e7 и т.п., суть базисные ортогональные векторы, соответственно, для действительных чисел, комплексных чисел, кватернионов, чисел Кэли и т.д., в зависимости, от рассматриваемой алгебры, со своими, аксиоматически определяемыми свойствами. В результате получаем различные теоремы, вроде не коммутативности кватернионов, не ассоциативности и наличии делителей нуля у чисел Кэли и т.п. Здесь все четко и понятно, «вопросов у матросов – нет!».

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

Так что дело не в «ограничении отражения», а в вечном и бесконечном разнообразии этого процесса. Что собственно и проявляется для нас как Развитие всего Сущего.

реализатору необходимо знать: Как устроено это «Сущее»? Где и в каких моментах это «Сущее» может развиться? А что такое развиться? И что именно в «Сущем» развивается?

Как устроена Вселенная? Кто Вам с разбегу ответит на этот вопрос? Мы можем только рассчитывать на вечность и бесконечность процесса Познания.

Теоретически, развивается все. Признаками Развития являются: Движение и, как следствие, Время, а также изменение Структуры всего и вся. Правда, скорость изменения Структуры отдельных частей Сущего может быть различной, от практически мгновенной, до бесконечно медленной. Но изменения происходят всегда, везде и во всем. Таким образом, Развиваться, значит, Структурироваться, т.е., при Развитии уменьшается локальный хаос и увеличивается локальный порядок. Однако на глобальном уровне эти процессы носят колебательный характер. Уже упорядоченное может быть вновь разрушено, чтобы дать возможность более глобальному Структурированию и переупорядочиванию на новых принципах и возможностях. По Марксу, Развитие это Движение по Спирали.

Хороший пример, СССР. Был Супер Монолит, но был подвергнут разрушению. Не будем давать сейчас моральных оценок, хорошо это или плохо. С одной стороны эта была Трагедия и Кризис, а, с другой, новые возможности для России, которые она бы иначе никогда не реализовала бы. Как писал Гёте в «Фаусте»: «Я – часть той силы, что вечно хочет зла и вечно совершает благо.»

Так что, другими словами, Развиваться, значит Изменяться. В масштабах Вселенной, однозначно, в сторону уменьшения энтропии, то бишь, увеличения Структурированности и Порядка. Я бы еще добавил Гармонии и Красоты.

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

С благодарностью и уважением

Взаимно!
mishin05.livejournal.com

Читайте, на собственный страх и риск!
А какая теория верна?

Вы ведь ничего не предложите взамен, верно?

В Интернете валом теорий физиков – альтернативщиков. Например, неверная теория гравитации, теория движения Луны и много чего еще. Но в Космос не летает только ленивый, а на Луну прилуняются «не только лишь все».

Начали строить БАК! – Катастрофа, конец света! – Почему? – Потому, что физика неправильная. – А где «правильная»? – Вот, показывают какие-то школьные формулы и ни одного уравнения состояния. – Ну, да «впечатляет», слов нет.

Из последних новостей. На Конте опубликован цикл статей про очередной 1024-й «Конец Света», точнее, «полуконец», мол, какая-то часть выживет. Речь идет о «Кувырке», когда полюса Земли поменяются местами. Мол, в силу этого был прошлый Потоп, гибель прошлой Цивилизации, остатки которой начали свою Историю с Каменного Века.

В качестве доказательства приводят действия властей. АЭС, сносят на равнинах, строят в горах. «Зеленная энергетика», смысл которой – постапокалипсический, потом, в отсутствии технологий, пригодится. Столица в Бразилии. Была Рио-де-Женейро, высота над уровнем моря (океана) – 5 метров. Сейчас город Бразилио, высоко в горах, в глубине джунглей. Денег туда зарыто немерено, зато высота – более километра. Пустые города-миллионики в Китае – та же песня. Мигранты, их вышибают с их земли, которая будет безопасна во время нового Потопа, и отправляют в места, которые ждет незавидная судьба (Франция, Германия, в этой связи понятно отношение к французским генералам, который обеспокоились судьбой страны, не понимают, наивные, что «так надо»). У нас появилась плавучая атомная электростанция в Арктике, которая станет самым безопасным местом «потом», как и Антарктика. Когда не станет технологий, у нас они останутся. В этой связи обратите внимание на информацию про сохранения семян, биоматериалов, и даже важнейшего цифрового кода в Северных морских хранилищах.

Убедительно? Как бы да! Но я не верю. Разводят людей на бабосы гениальные мошенники, Остап Бендер отдыхает и нервно курит в сторонке. Почему, долго объяснять, решайте сами.

Но, что удивительно, всегда полагал, что «неправильная» у нас только современная физика. Но, оказывается, есть уникум, который почему-то тусуется на ЖЖ, а не на dxdy.ru. Вот он утверждает, что «неправильная» еще и математика. Жесть! Городские сумасшедшие в Интернете это покруче «Фауста» Гёте будет :).
Знаменитое уравнение Шредингера математически близко к обычному уравнению диффузии. Главное отличие в том, что время становится мнимым, то есть происходит поворот Вика. Это означает, что классическое и квантовое частично связаны поворотом на 90 градусов в комплексной плоскости (умножением на мнимую единицу). Уравнение Шредингера задается:

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

Ну, да ладно! Это все интерпретации. В свое время, даже Маркс жаловался, что многие понимают марксизм лучше его самого. Как в анекдоте: «– Кто такой Карл Маркс? – Экономист! – Как наша тётя Соня? – Нет, что ты! Тёня Соня – старший экономист!!!».

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

«Общее уравнение Шредингера (УрШ) можно рассматривать как квадратное уравнение относительно постоянной Планка h. Решаем его, получаем формально два корня. Но постоянная Планка то одна, поэтому либо дискриминант квадратного уравнения равен нулю, либо у постоянной Планка есть второе фундаментальное значение. Оба случая интересны. В первом варианте получаем из одного уравнения два, что упрощает решение и анализ УрШа. А, во втором, делаем научное «открытие», постоянная Планка имеет два разных значения. Ура, товарищи! Куда обращаться за Нобелевской Премией? :)»
Возраст разный бывает — мне уже 60

Самое время заняться изучением иностранного языка. Это продлевает жизнь.
И статья не нужна! Информационный вирус…
Слово — это объект в пространстве...

Не уверен! Слово это отражение…

Отражение одной сущности на другую. Сам процесс отражения это результат развития всего Сущего. Где тут находится Человек, Компьютер, Сознание, Искусственный Интеллект и т.п., вопрос уже другой.

Вы становитесь на скользкий путь философствования. А Философия ныне в огромном концептуальном Кризисе. Тем более что «философия это не наука, а всего лишь мировоззрение».

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

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

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

«Одна программа эмулирует случайное блуждание группы точек в прямоугольнике. А другая, на основе этого процесса, генерирует речь, типа, футбольного комментатора. Вроде: Синяя точка № 7 налетела на красную точку № 2 в центре поля. Которую тут же атаковали две точки. Одна из своих, синяя точка № 3, а другая, красная точка № 11, от противника. Седьмая синяя, от полученного удара, улетела в левый угол красных...». Как видим, при всей примитивности, этот искусственный комментарий может содержать элементы осмысленности, с которым можно работать (в смысле его улучшения). Главное здесь, это генерация «смысла» на основе отражения независимого процесса.
Это все, конечно, красиво сказано. Но, как насчет вопросов по концепции программированию? Что могут сказать «теории Computer Science» относительно модульного программирования? Верно! – Ничего! Или, в лучшем случае, ограничится общими словами.

Поэтому, в собственном, реальном проекте, скажем, на С / С++, нужно самому изобретать велосипед модульного и итерационного программирования. Или делать монолиты, как в большинстве опенсорса, которые еще переварить надо из-за их монструозности.

В общем, как реклама для студентов сойдет, но практическая ценность статьи – минимальна…
И что там трудоёмкого? Берём и клепаем интерфейс за интерфейсом

Не, ну если делать «вообще», да еще с помощью ATL, то, как бы обозримо. А если «конкретно», для взаимодействия, в данном случае, двух произвольных разнородных программ, то, наверняка, возникнут «нюансы».
У вас часть кода на Аде, часть кода ещё на чём-то. Чем их сопрягать собираетесь?

Есть два подхода. Первый, вы используете существующие СОМ-сервера для своих целей. Здесь все плохо, использовать особо нечего, по разным причинам. Хотя могут быть какие-то вынужденные варианты, типа драйверов оборудования от производителей, но это не столько разработка, сколько работа с уже готовым ПО. А, второй, это когда вы используете СОМ с нуля для каких-то своих целей, типа приведенного вами примера. Тут ведь нет стандартного решения, правда?

А уж, какую интеграцию вы придумаете для разнородных продуктов, это уже отдельный разговор. СОМ здесь не единственный вариант, причем, чужими серверами воспользоваться маловероятно, а свои делать трудоемко. Когда мне надо было делать транскрибацию видео, то я взял две программы, видео проигрыватель и Эксел, установил их в смежных окнах, и написал скрипт на AHK, который обеспечивал согласованные команды для обеих программ и вполне успешно получил то, что мне было нужно. Да, это решение на скорую руку, но рабочее. Хотя для серьезной работы лучше найти или сделать специализированный продукт.

Разновидности COM встречаются и под Mac OS. Ну не реестр там, по-другому было. Для Linux я видел и в p7zip автономный COM, и VirtualBox XPCOM с возможностью RPC.

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

Что касается использования реестра (именно это главная причина неприязни к СОМ), то это нужно не пользователю, а ИТ гигантам, которые рассматривают Интернет и персональные компьютеры как элементы своей собственной глобальной операционной системы, к которой именно монополисты имеют максимальный доступ, а не формальные владельцы компьютеров, ноутбуков, смартфонов и т.п.
Я лично сторонник работы с интерактивным звуком, плюс использование метода «запоминание руками». Сейчас работаю над новой версией программы, старый прототип которой можно посмотреть на scholium.webservis.ru. Также интересно создание обучающих видео роликов с двуязычными субтитрами, повторами и паузами. Примеры моих экспериментов можно глянуть на my.mail.ru/mail/emmerald/video/_myvideo. Как то это кажется более современным подходом.
Я занимаюсь «разработкой под Windows», но не работаю с технологическим и торговым оборудованием. Как по мне это не разработка, а обслуживание чужих девайсов. Естественно, раз технология существует, то у нее есть применение. Другое дело, что для собственных, достаточно интересных проектов, применения COM я не вижу.

Уже приводил пример с FoxPro9r.dll / FoxPro9t.dll. Это «интересные» COM сервера, но попробуйте поработайте с ними независимо! А вот с SQLite.c / SQLite.h – пожалуйста, проблем нет. И так во всем. А работа с чужим оборудованием, в своих проектах, как-то не греет, хотя, согласен, если за это платят деньги, то может быть полезной. Но, я как раз не это имел в виду. Больше пользы я вижу в опенсорсе, WTL, например. Да, есть еще ATL, для работы с COM’ом, но применения ему я пока, для себя, не нашел.
Это, мягко говоря, занятие нетривиальное.

Не более «нетривиальное», чем «Обратная разработка программного обеспечения», как пишет автор статьи. Вот посмотрите декомпиляцию бинарного кода для простейших программ: erfaren.narod.ru/index.htm. По моему, проще смотреть исходные тексты Windows, найти которые может быть трудно, но можно.

Микрософт офис.

И что вы собираетесь с ним делать, в рамках темы статьи?
А Direct-X?

Ну, как бы понятно, что M$ изобрела эту технологию для себя. Сама и использует, причем много где. Вот только обычному программисту от этого профита не очень много. Гораздо более эффективен старый добрый опенсорс.

Я лично много раз пытался найти хороший COM сервер, чтобы использовать в собственных проектах. Но все, что доступно, оказалось так себе. Например, в Visual FoxPro отличный движок БД, но ужасный интерфейс. Сами длл-ки этого движка это COM сервера. Казалось бы, бери и работай, тем более, что компилируемые в VFP exe-шники, тоже используют эти сервера. Но нет, открытые интерфейсы вполне себе закрыты, поскольку по ним нет никакой конкретики. Может быть, там нужные GUID'ы секретные или еще что, но достучаться до реальных функций почти невозможно. У меня были кое-какие успехи, но на реальный проект я так и не вышел. В итоге, пришел к выводу, что гораздо более эффективней использовать SQLite тем более, что его можно внедрять в 64-битные приложения.

Другой пример, мультимедиа (плюс веб-броузеры, pdf-ридеры и тому подобное). Да, как бы можно, в своем окне, вывести несжатый avi-ролик, но что-то серьезное фиг кто даст. Мол, покупайте коммерческую версию. Однако, зачем это надо, если есть опенсорсный FFplay.c, который я прекрасно внедрил в собственный проект. Причем, никаких ограничений на кодеки и все такое. И так во всем. Тот же Direct-X тоже. Есть неплохие, более удобные альтернативы, для разных целей.
Статья ни о чем. Ни пользы, ни смысла, всем этим заниматься, никакого. Полезных примеров тоже нет. Если вы готовы реверсить бинарный код Windows, особенно в части довольно старой технологии (судя по картинке, 1999 год – последний), то не проще ли найти в Интернете ранее утекшие туда исходники WinNT, Win2003 Server и WinXPsp1? Там все прочитаете открытым текстом.

А есть еще бинарно совместимая с Windows открытая и свободная операционная система ReactOS. Смотрите ее сколько угодно, зачем еще декомпилировать бинарный код и восстанавливать его на Си (соответствующим плагином IdaPro)? Конечно, вы этого не говорили, но это следует из вашей логики.

Я не знаю ни одного реально практического примера, где была бы полезной технология COM. Вот фирма «1С» обожала эту технологию, пока не стала портировать свой продукт под Linux. А все, что есть на эту тему в Интернете – отстой. Поэтому, самый лучший COM, это программирование собственного виртуального интерфейса, для собственных целей, безо всяких GUID'ов и реестров…
Почему монолит, разделённый на сервисы, остаётся монолитом? Потому что во всех его сервисах используется единая кодовая база.

Так давайте поговорим, сначала, о модульности «кодовой базы», а потом о ее масштабировании.

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

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

Но, что мешает созданию модулей? Думаю, это сильная связь между программными компонентами. Которая заключается в трех вещах:

1. Общие (глобальные) переменные.
2. Общее меню.
3. Регистрация и создание компонентов, а также их обработка в главном цикле сообщений приложения.

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

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

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

Относительно, «48 демотиваторов». Почему бы их не заменить одним мотиватором?: «Учиться, учиться и еще раз учиться!», как говорил дедушка Ленин (у которого есть вполне дельные мысли).

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

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

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

Как говориться, безвыходных ситуаций не существует, даже если тебя съели. Как минимум, всегда есть три выхода… :)
моя мысль — отдать максимальное количество сил при проектировании и конструировании программного обеспечения, чтобы потом при дальнейшей поддержке приложения не отдать максимальное количество нервных клеток.

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

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

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

Как я уже заметил, даже кажущиеся относительно независимые части приложения имеют, на самом деле, сильную связь. Разорвать которую, иначе говоря, распараллелить используемую программную модель, достаточно сложно. Но, пока, интересно. Тем более что в век потоков, субъядер и многопроцессорным систем этим сам Бог велел заниматься. Кстати, как вы управляете потоками в своем приложении?

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

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

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

WinAPI либо WTL / ATL на С++, это, в принципе, все, что мне надо. Но чтобы реализовывать там паттерны (идеи, в моем понимании), нужно понимать протоколы работы функций и компонент WinAPI, т.е., знать документацию, типа MSDN.

Вот я и споткнулся там, на «правильном» протоколе удаления дочернего окна. Документация говорит, что, в дочернем окне надо использовать вызовы: «DestroyWindow(hWnd); break;», при сообщении WM_CLOSE, и вызовы: «PostQuitMessage(0); break;», при сообщении WM_DESTROY. Но это-то как раз и приводит к краху при выходе из приложения, при открытом дочернем окне. Но если его вручную закрыть, то программа, потом, завершается нормально.

Естественно, использовал уже различные мыслимые и немыслимые варианты, как со стороны главного окна, так и со стороны «плагина». Тем более что я могу отслеживать все сообщения, и дочернего окна, и его родителя. Но все упирается в отсутствие механизма «хорошего» удаления окна (созданного в dll), во всех случаях. Иногда срабатывает и обычный способ, но не всегда.

Сейчас пытаюсь анализировать опенсорс с поддержкой плагинов. Естественно, есть какой-то нюанс, который я пока не понимаю. Но сама идея бинарной модульности для целей разработки и тестирования приложений с последующей сборкой «монолитного» проекта скриптом на Питоне, достаточно интересна. Однако, Дьявол, как всегда кроется в деталях… :)

Information

Rating
1,500-th
Registered
Activity