Дима Лихачев (dm_lihachev) wrote,
Дима Лихачев
dm_lihachev

Categories:

Что такое субъектно-ориентированное программирование? 1988-1990

Что такое субъектно-ориентированное программирование? (73 цитаты)
(написано где-то в 88-90х, опубликовано на сидюке «Кто есть кто на компьютерном рынке России» в 90-х)

  1. ...Сама парадигма интегрированного пакета, как конгломерата N разнородных процессоров и N(N-­1) утилит экспорта-импорта, нуждается в ревизии. В статье предлагается использование субъектно-ориентированного механизма для реализации интегрированной среды с принципиально новыми свойствами. Новая универсальная технология программирования позволит радикально усилить функциональную мощность интегрированной среды и не менее радикально упростить пользователю взаимодействие с нею...
  2. ...Это настолько же просто, насколько мощно. Вы на самом деле давно знаете, что это такое, только не знаете как это называется. Если вы хотя бы раз пользовались электронными таблицами, то вам знаком такой принцип - вызов процедур обработки не явно по имени, а при изменении аргументов. Именно этого фундаментального принципа и не хватает объектно-ориентированной технологии программирования, чтобы перестать быть технологией программирования и стать технологией компъютерного моделирования...
  3. Все очень просто: достаточно скрестить объектно-ориентированную технологию с электронными таблицами, чтобы получить фантастические результаты, которых вы себе и представить не могли программируя с помощью традиционного инструментария.
  4. Прежде чем перейдем к конкретным примерам, я в двух словах опишу Субъектный Паскаль, язык, разработанный мною в рамках государственного проекта "СТАРТ" по созданию компъютера пятого поколения. Субъектно-ориентированный Паскаль синтаксически почти не отличается от объектно-ориентированного.
  5. ...Субъект - это объект, потомок некоторого нулевого субъекта Subject, от которого он унаследовал метод Reactive. Обладая этим методом, субъект приобретает замечательное свойство реагировать на присваивание его полям новых значений. Методы субъектов, для отличия от (пассивных) методов объектов, будем называть реакциями...
  6. ...Реакции, связанные с изменившим значение полем субъекта, выполнятся при присваивании, изменят другие поля субъекта и/или других субъектов, что вызовет отработку других реакций.. Такой лавинообразный процесс вычислений управляемых данными будет происходить до тех пор, пока субъект (колония субъектов вашей программы) не достигнет состояния гомеостаза, адекватного внесенному изменению. Таким образом, разница между объектами-с-методами и субъектами-с-реакциями категорическая: методы субъектов обладают некоторой свободой воли от автора программы. Как правило, вы не знаете в какой последовательности они отрабатывают, да вам и не важно это знать так как корректность этого процесса поддерживается самой структурой языка...
  7. Рассмотрим субъект-уравнение F=m*a, состоящий из трех подсубъектов недоопределенных-вещественных (числовых интервалов) и реакций m*a->F, F/m->a, F/a->m. У субъектов-чисел есть свои реакции, которые отслеживают, чтобы присваиваемые числам значения сужали интервал недоопределенности. Если мы теперь доуточним (уточним) F, то доопределятся m и a, поскольку отработают реакции F/m->a и F/a->m.
  8. ...Следовательно, всякий субъект задает отношение между своими подсубъектами. Это отношение может быть вычислительным, как в приведенном примере (похоже на электронную таблицу? только гораздо мощнее так как считает в любую сторону). Табличным (множество кортежей допустимых комбинаций значений полей / подсубъектов). Если мы присваиваем значения некоторым полям, то релевантно уточняются все остальные поля (похоже на реляционную базу данных? только гораздо мощнее так как считает в любую сторону и табличные отношения произвольно комбинируются с любыми другими). Могут определяться временные, пространственные, условные, вероятностные отношения
  9. На самом деле отношение это тот же самый субъект (и синтаксически, и семантически) просто субъект любого уровня удобно представлять или как отношение между своими подсубъектами, складывающееся из их реакций (вид изнутри), или как собственно субъект, своими реакциями участвующий в отношениях верхнего уровня
  10. ...Рассмотрим примеров.
  11. Вы коммерсант, и ваша электронная таблица расчитывает вам налоги и прибыль исходя из ваших цен. А если наоборот? Если вы уже знаете налоги и прибыль, которые вы хотели бы иметь - и вам хотелось бы узнать при каких ценах это достижимо? Сейчас вы - А. долго перебираете цены, подгоняя прибыль к вашему значению; Б. зовете программиста, который напишет вам на СИ, то, что вас не устроит, так как процесс этот совсем не формален. А все почему? Потому что современная электронная таблица неизотропна - она состоит из ячеек исходных и вычисляемых (либо-либо: либо значение, либо формула) (обычно эта неизотропность слева-сверху-вправо-вниз).
  12. Субъектная электронная таблица - изотропна, в ней все ячейки - субъекты, и все формулы - субъекты, отношения между ячейками. И, фиксируя прибыль, вы без проблем получаете диапазоны цен, при которых она достигается. ( в ячейке "прибыль" есть и формула получения прибыли из цен и значение, которое вы зафиксировали. Если все цены известны точно, но вычисленное значение не совпадает с введенным - это противоречие в модели, о чем вам система и скажет. Но если, например, какие-то из цен не определены или определены неточно (диапазонами), то введенное вами значение прибыли "подтолкнет" субъект-формулу, и та сработает в обратную сторону - вычислит цены точно или доуточнит их. Те, в свою очередь, подтолкнут другие формулы, в которых они задействованы. И этот процесс вычислений, управляемых данными, распостранится во все стороны по сети из формул/ячеек и уточнит все значения...
  13. ( эта модель даже более естественна/проста для пользователя-непрограммиста, для которого формула F=m*a - это соотношение между аргументами, а не только процедура получения F из m и a, как мы его - заставляем это понимать ( N.B. и общее замечание на эту тему: существующие электронные таблицы - это паллиатив, смешение стиля модельного, общечеловеческого (желаемое) и процедурно-программистского (доступные средства (типа x=x+1)), который нормальному человеку малоочевиден. Субъектная электронная таблица снимает это противоречие. ( N.N.B. если перечитать предыдущее замечание с заменой двух вхождений термина "электронная таблица" на "база данных", то получим настолько же верное утверждение. См. следующий абзац ) ) )
  14. ...Если у вас есть база данных, то у вас есть и 148 вариантов возможных некорректностей при внесении изменений. У вас от этой комбинаторики пухнет голова, и вы уже склонны предложить пользователю пять жестких и неудобных сценариев вместо той свободы и легкости, которой он от вас ждет. А все почему? Потому что технология программирования, даже объектного, очень мало близка к базе данных, которая не что иное, как модель отношений, существующих в реальном мире. И вы вынуждены натягивать рейтузы на гиппопотама, пока они не лопаются...
  15. ...В субъектной базе данных таких проблем просто нет: вы вносите изменения и субъекты-отношения-таблицы препираются до тех пор, пока не достигнут гомеостаза, адекватного вашим изменениям, или не сообщат вам, что ваши изменения для их взаимоотношений фатальны...
  16. ...Более того, само понятие запроса к БД, запроса к пассивной базе данных - конгломерату неодушевленных таблиц, теряет смысл. Вы живете в рамках прикладной системы, модели (системы табличных уравнений, если вспомнить предыдущий пример), и когда вы изменяете какие-то параметры - активная база, на основании модели и содержимого таблиц изменяет другие параметры. Сколько и каких самозапросов ей для этого придется сделать - этого вы не знаете, будь вы конечный пользователь или разработчик...
  17. ...А теперь рассмотрим такую идею: субъекты-отношения-таблицы - точно такие же субъекты, как и ячейки в вышеописанной субъектной электронной таблице. Вам и авторам программного обеспечения нет больше нужды изобретать FrameWorkи, неочевидные и неполные средства экспорта-импорта, LookUpы для моделироватия микро-базы-данных в электронной таблице, и вычисляемые поля для моделирования микро-электронной-таблицы в базе данных. Отныне вся информация, связанная вычислительными, табличными, временными, пространственными, нечеткими и самыми разными другими отношениями лежит у вас в одном мешке и используется единым субъектным механизмом именно так, как вам это интуитивно кажется естественным и корректным...
  18. ...Вы правите какие-то значения в субъектной-электронной-таблице-базе-данных и все, что из этого можно вычислить - вычисляется, все релевантное из таблиц - достается, из этого опять вычисляется, из вычисленного - запускается инициализация модема, посылается платежка, приходит ответ, на который реагирует субъект-бухгалтерия проводя подсубъекты-проводки туда, куда надо. И для того, чтобы такое "запрограммировать", вам не нужно быть программистом экстра-класса, да и вообще не нужно быть программистом, так как программирование было профессией и искусством в досубъектные времена, когда вы имели одного Исполнителя на две сотни противоречивых и разнородных процессов...
  19. ...Рассмотрим еще примеров:
  20. Пространственные отношения: если окно на экране - субъект, то ему естественно отодвинуться, если его заслонило другое окно. А если субъект - строка, оставшаяся единственной на странице (висячая), то она не успокоится, пока не уплотнит строки на предыдущей странице и не переберется туда. ...
  21. ...Временные отношения: заведите в вашей субъектной-электронной-таблице-базе-данных-издательской-системе-текстовом-процессоре субъекты-работы и свяжите их отношниями-формулами начинается-(не)-раньше-чем-закончится, выполняются-(не)-одновременно и подобными друг с другом, а также отношениями с базами данных помещений, ресурсов, исполнителей - и работы сами собой расположатся в заданном интервале времени, если это возможно. Минимизируйте этот интервал и получите критический путь, минимизируйте ресурсы и получите.. и т.д.
  22. ...А это значит что наша субъектная-электронная-таблица-база-данных-издательская-система-текстовый-процессор без всякого усложнения и введения новых специальных механизмов еще и система календарного планирования. Причем принципиально более мощная, чем существующие. Так, вам ничто не мешает связать работы и через какие-то формулы и/или базы данных, и друг с другом, и с любой другой разнородной, влияющей на планирование информацией. А свяжите такими же отношениями (начинается-не-раньше-чем-закончится, расположены-рядом и т.д.) кусочки текста, ссылки, примечания, главы - и они, по мере того, как вы их будете печатать, сами расположатся в книгу...
  23. ...Грамматически несогласованная субъекты-слова будут конфликтовать друг с другом и требовать вашего внимания. Субъект-термин "активного объекта", который вы исправили на термин "субъекта", отреагирует на ваши действия вопросом, испавляться ли ему во всех вхождениях. Субъект-стиль-абзаца спросит вас о том же, если вы его исправите ( N.B. элементы такого стиля есть и в существующих текстовых процессорах - но пока это эклектичный конгломерат средств, не осознавших еще своего идеологического сродства. Поэтому у каждого из них своя уникальная технология действий и диалога с пользователем - что совсем неудобно ( N.N.B. предыдущее замечание применимо и с заменой "текстовых процессоров" на "базы данных", "сетевые серверы", "экранные интерфейсы" и т.д. Активность, субъективизация всех элементов программного обеспечения, которая не так давно существовала лишь в узкоспециализированных ареалах - искусственный интеллект, имитационное моделирование и подобных - сейчас активно вторгается на мировые рынки коммерческого ПО, но еще не оформилась как единый стиль-технология ( N.N.N.B. Субъектно-ориентированная технология, так же, как и объектно-ориентированная, или стандартный графических интерфейс - это, в первую очередь, единство стиля, единая (пользовательская) модель понятная/естественная/универсальная ) ) )...
  24. ...И сама система с которой вы работаете - субъект. Она не будет все время вам подсовывать главное меню, а будет предугадывать ваши желания так как изменится сама парадигма: вы будете общаться не с ящиком с инструментами-объектами (метафора ООП, pull down menu), а с субъектом...
  25. ...Пространственно-временные отношения: давайте попробуем рисовать мультфильм из субъектов-кривых, субъектов-областей, которых снабдим разными псевдофизическими реакциями (инерционность, жесткость и подобные), отношениями между ними внутри кадра и между кадрами. Что же нам это даст? А вот что. Мы будем рисовать только начальные и конечные кадры для каждого монотонного куска, а промежуточные кадры доуточнятся, так же как цены доопределялись из прибыли в примере с электронной таблицей...
  26. ...Субъектное программирование порождает целый класс принципиально новых игр, но это отдельная большая тема. (2)...
  27. ...Основное, пожалуй, что отличает субъектные игры от существующих: досубъектный разработчик (и игрок!) имел достаточно жесткое ограничение на величину (глубину, адекватность, полноту) игровой модели мира. Самая сложная игра была гораздо проще самого примитивного боевика-книги или фильма. Именно поэтому вам не приходило в голову издать вашу пиратскую биографию, которую вы разыграли в игре Pirates - читать такое невозможно...
  28. ...Субъектная игровая модель мира остается обозримой для игрока, сценариста и разработчика - сколько бы мы ее не усложняли. Разыгрывая из себя пирата в таком мире вы фактически сочиняете исторический роман. И вообще, виртуальная реальность традиционными средствами, это практически невозможно. Слишком велика дистанция между инструментарием и задачей. Сколько-нибудь соответствующие названию продукты в этой области можно разрабатывать только адекватными программными средствами субъектно-ориентированной технологии программирования...
  29. Но вернемся к реальной реальности.
  30. ...Пока субъектно-ориентированного программирования не существует. Не исключено, что его скоро изобретут Borland или Microsoft, и тогда мы сможем им пиратски попользоваться, как всегда....
  31. ...Пока существуют следующие, весьма урезанные и малосвязанные между собой проекции субъектно-ориентированной технологии на конкретные предметные области ( N.B. конечно, перечисленными системами далеко не исчерпывается список программного обеспечения основанного на подобных идеях. Но именно системы Российского научно-исследовательского института искусственного интеллекта могут служить хорошей иллюстрацией применения субъектно-ориентированной технологии программирования в разработке массового ПО, именно как технологии )...
  32. ...Time-Ex - система недоопределенного календарного планирования: * объект вашего планирования (точнее, субъект) - не один из возможных вариантов плана, выделенный по какому-нибудь малоадекватному критерию (время, ресурсы), как это бывает обычно, а вся совокупность, весь континуум возможных вариантов - недоопределеный план; * конкретизируя такой - полиплан вы имеете, по сравнитению с ПЕРТ-подобными планировщиками, принципиально более мощную и адекватную модель. Вы не обязаны иметь формальный критерий оптимизации; у вас есть расширяемое множество отношений между работами; вы не привязаны к одной - линейно-последовательной модели времени; * например, отношения и модели времени для комбинаторного планирования (планирование железно-дорожного, учебного расписания, конвейера с вариантами и проч.)...
  33. Unicalc - решает произвольные системы алгебраических и алгебро-дифференциальных уравнений, неравенств, логических выражений - прообраз субъектной электронной таблицы. Берет любые смеси целых, вещественных, нелинейных, недоопределенных соотношений: * то же самое: вы получаете не одно из решений системы, а весь (дискретный или непрерывный) многомерный спектр решений; * вы имеете модель из переменных, соотношений, полирешения: вам не нужно что-то знать о вычислительных методах, чтобы исследовать вашу систему со всех сторон, вводя/ убирая/ усиливая/ ослабляя соотношения/ ограничения вашей системы, вы тут же видите, как реагирует полирешение - сужается/ расширяется/ сдвигается/ пропадает/ распадается; * этот зверь всеяден: вы сваливаете в один мешок целочисленные уравнения, недоопределенные кусочно-трансцендентные функции, связывете их между собой условными неравенствами, задаете уравнения между производными.. И чем необозримее будет ваша система, тем быстрее (!) она будет считаться. Продается UniCalc как "интеллектуальный решатель математических задач", что несколько сбивает с толку потенциальных пользователей, для которых, как правило, сочетание интеллектуальный + математический, это уже слишком далеко от практической жизни...
  34. ...Обучающие системы вида: UniCalc плюс гипертекст (плюс, но не обязательно, (даже не знаю как назвать, гипервидео?) подсистема визуализации недоопределенного полирешения ( простейший пример: полоса-график недоопределенной функции)). Такого рода обучающая система, система активного обучения-исследования-конструирования, практически в любой области, это принципиально более действенный способ обучения, чем модные нынче мультимедиа системы для закачки знаний с оптического диска. Представьте себе: Физика в Примерах и Задачах (видеолабораторные), Генетическая (Экологическая, Социологическая, Психологическая) Лаборатория, Настоящая Живая Математика (Живая Математика фирмы Apple все-таки не очень живая, так как собирается из пассивных объектов), Двигатель Внутреннего Сгорания (конструктор-САПР) и тому подобное...
  35. ...Субъектная изотропная электронная таблица на базе Unicalc (макетная версия): * позволяет работать не только с точными, но и с недоопределенными / доопределяемыми данными (числа, интервалы, множества и т.д.); * не делит ячейки на входные/выходные - в ячейке могут находиться одновременно и формула и значение (точное или недоопределенное); * формулы работают и в обратную сторону, т.е. могут уточнять аргументы по уточнившемуся значению ячейки-результата; * ячейки могут быть связаны несколькими формулами (в отличие от традиционных ЭТ, где ячейка это или (одно) значение, или (одна) формула). Функционально это тот же UniCalc, просто с более привычным для экономиста-бухгалтера интерфейсом пространственного (бланк/таблица) расположения переменных/соотношений...
  36. ...INFO-Tec - субъектная оболочка над СУБД клана dBASE: * активные таблицы, таблицы-субъекты это - автоматический контроль правильности и целостности данных, работа с неполной/неточной информацией, эффективное выполнение массовых вычислений, совместное редактирование таблиц; * все это получается само собой - из модели, которую разработчику описать не сложнее, чем записать систему уравнений в UniCalc; * фактически это разработка информационно-расчетной прикладной системы в терминах предметной области: INFO-Tec экранирует вас от устройства таблиц, индексов, формулирования запросов, поддержки связей между таблицами, корректности, переноса значений и прочей низкоуровневой СУБД-шной технологии...
  37. ...Существует ряд макетных/домашних версий субъектно-ориентированного расширения Паскаля; компиляторы/интерпретаторы специализированных языков реализующих эту технологию; вычислители (энжины) для эффективной прокрутки больших сетей; макеты САПРов, реализованные по этой технологии и разнообразные специальные системы. Но главное преимущество субъектной технологии, то, что она дает платформу для простого и естественного интегрирования таких разнородных при нынешней технологии программирования механизмов, как электронные таблицы, базы данных, (гипер)текстовые процессоры, экранные интерфейсы, системные, сетевые механизмы и прочее. Главное преимущество в этих системах не реализовано или реализовано частично...
  38. Резюме
  39. ...Субъектно-ориентированная технология программирования (под этим или другим названием, из стен РосНИИ ИИ, или из-за океана) неизбежное и естественное следствие объектно-ориентированного программирования. И достаточно очевидно, что в ближайшие годы она так же прочно войдет в мир компъютерной индустрии, как сейчас это происходит с объектно-ориентированным программированием. Можно, конечно, в это не верить и делать заведомо скоропортящийся программный продукт традиционными средствами, а можно связаться с РосНИИ ИИ и использовать его ноу-хау...
  40. ...Если вы хотите делать программный продукт, конкурентноспособный на мировом рынке, используйте субъектно-ориентированную технологию. Если объектно-ориентированная технология позволяла вам быстрее делать то, что вы делали, то субъектно-ориентированная позволит вам делать такие системы, которые традиционными средствами вы просто не могли бы реализовать...
  41. ...N.B. Замечательным подтверждением моих слов о будущем субъектно-ориентированной технологии программирования может служить недавно появившийся на российском рынке сервер баз данных коллективного доступа InterBase фирмы Borland (кстати, тезка InterBase Российского НИИ ИИ - естественно-языкового интерфейса к БД). Борландовская система - это первая коммерческая СУБД переросшая идеологию объектно-ориентированного программирования и включающая элементы субъектно-ориентированной технологии: программу, как сеть равноправных активных исполнителей (активное ядро), каждый из которых обладает своей моделью мира (фильтры, модели времени (режим оперативной обработки сложных транзакций)), реакциями (механизм триггеров), средствами общения с другими исполнителями (публикация-подписка, взаимный контроль корректности общения (обоюдный контроль завершения транзакции)), и процесс исполнения программы, как взаимодействие исполнителей направленное на достижение гомеостаза, адаптацию к изменениям внешней среды (выделены термины фирмы Borland). Конечно, это не субъектно-ориентированное программирование в полном объеме (макрослой: субъект-сервер, субъект-клиент), но именно употребление активных объектов, субъектов, позволило разработчикам InterBase предложить пользователям такую простую, ясную, гибкую и полную модель. Тем более это впечатляет, что в этой области (коллективный доступ к БД) до применения метафоры активных объектов/субъектов, мы были обречены на работу с системами-монстрами...
  42. Часть вторая: конкретные примеры:
  43. ...Давайте разработаем систему автоматизированного проектирования, например, трансформаторов (реакторов, зверей, лиц, персонажей, ж/д расписаний) и рассмотрим, какие нам для этого потребуются субъекты. Чтобы нашу задачу можно было решить средствами решателя UniCalc, ограничим задачу следующим образом: все M соотношений между N параметрами объекта проектирования - вычислительные, формулы: уравнения, неравенства, логические. То есть разлагаются на простейшие математические 2-, 3-арные отношения: =,#,<,>,+,-,*,/,^,&,|,mod,sin,cos,d/dx,..
  44. Обратите внимание, что это отношения, а не операции. Это субъекты, которые реагируют на изменение каждого из своих аргументов адекватным изменением остальных аргументов.
  45. Итак, наша система из N неизвестных и М соотношений имеет множество решений в N-мерном пространстве параметров. Каждая точка этой N-мерной фигуры - жизнеспособный трансформатор (внешние точки - трансформаторы, которые не могут существовать по законам природы, сформулированные нами в в виде М соотношений).
  46. Спроектировать трансформатор - это просто выбрать одну из точек этой фигуры. А именно, ту, которая удовлетворяет каким-то из К дополнительных соотношений ("..нужен трансформатор 220/110 не тяжелее 300 гр, с Ш-образным сердечником, минимальный по стоимости"). При этом, как правило, система из всех (М+К) соотношений не имеет решений и проектировщик должен определить какие из дополнительных ограничений обязательны, какие можно ослабить или убрать.
  47. Таким образом, субъектное проектирование - это двухэлементный цикл: проектировщик редактирует систему из (М+К') соотношений -- САПР компилирует формулы в колонию субъектов, на колонии прокручивается потоковый процесс (изменение-реакция-изменение-реакция..) и, по достижению гомеостаза, САПР показывает проектировщику получившееся N-мерное множество решений.
  48. Следовательно, проектировщик может, не имея формальных критериев, исследовать систему, экспериментировать с нею и, в результате, стянуть множество решений в нужную ему точку.
  49. На самом деле, не все так просто и красиво: во первых, UniCalc (во всяком случае существующая версия) работает только с интервальными недоопределенными параметрами (н-целыми, н-вещественными, н-логическими), поэтому множество решений он аппроксимирует N-мерным параллелепипедом; во-вторых, этот параллелепипед не для всякой системы стянется вплотную к множеству решений - это в принципе невозможно, можно говорить только о том, что он часто стягивается близко.
  50. N.B. Я мог бы привести много впечатляющих примеров вот один из самых коротких: система { tg(x)^3+ln(sin(x/2)+lg(2*x))-cos(2*y)=0 ; cos(exp(-y))-2*y-0.1*cos(sin(2*x))=-3 } решается UniCalcом за полсекунды на AT286), но самое впечатляющее, по моему, это то, что "программа" поиска этого решения - это и есть эти две строчки (представте себе, на каком инструментарии и во сколько строк вам обойдется этот поиск другими средствами).
  51. ...Устройство субъектов...
  52. ...Итак, рассмотрим, как устроены три субъекта: субъект-целое, недоопределенное-целое, н-целое_меньше_н-целого. Устройство недоопределенного-вещественного и недоопределенного-логического подобно н-целому, а все атомарные математические отношения подобны н-цел<н-цел. Так что, поняв, как работают эти три субъекта, можно представить, каким образом происходят вычисления в системе UniCalc. К тому же эти компактные примеры достаточно ясно демонстрируют основные принципы субъектно-ориентированной технологии...
  53. Во-первых, понятно, что субъект-целое - это не тоже самое, что integer в Паскале. Субъект-целое обладает одной реакцией - если ему присваивают новое значение (и если оно отлично от того, что было) - он активирует все субъекты, элементом которых он является. Такой реакцией обладают все субъекты.
  54. Во-вторых, обратите внимание, что экземпляр субъекта-целого (как и любой другой субъект) может быть элементом (вложен, связан) многих субъектов верхнего уровня. Это существенное отличие: поле a:integer одного объекта не может быть по совместительству и полем b:integer другого объекта. Зачем это нужно: рассмотрим, например, формулу A<B<C (правда в UniCalc (и в Паскале) пришлось бы эту формулу разбить на две A<B; B<C ). Здесь B:субъект-н-целое - это, с одной стороны, элемент субъекта верхнего уровня A<B (н-целое_меньше_н-целого), с другой стороны - элемент субъекта B<C.
  55. В-третьих, активация объемлющих субъектов может быть отложенной. В языке есть способ заморозить потоковое (реактивное) управление и работать обычным способом (например, чтобы присвоить новые значения сразу многим субъектам как-бы-одномоментно и только после всех присваиваний разрешить отработку реакций)...
  56. Для этого субъект-целое должен обладать памятью глубиной один : помнить свое предыдущее значение. Все субъекты UniCalcа имеют память глубиной один (субъекты-вообще могут иметь и большую память). Так что, при разморозке реактивного управления, если старое и новое значения не совпадают, то, во-первых, отрабатывают внутренние реакции (реакции подсубъектов) - которые могут и отменить присваивание, если оно некорректно, во-вторых, если присваивание не отменено, активируются облегающие субъекты...
  57. Запишем наше определение субъекта-целого следующим полуформальным образом:...
  58. ...Но для конструирования недоопределенного-целого нам такое целое не совсем удобно, и мы опишем следующие субъекты: увеличивающееся-целое (точнее: неубывающее-целое) для нижней границы интервала и уменьшающееся-целое для верхней границы:...
  59. ...При помощи такого рода реакций субъекты могут отслеживать корректность присваиваемых им значений и отменять их, если они неприемлемы. И еще один необходимый субъект будет следить за тем, чтобы нижняя граница интервала не стала больше верхней (это случится в том случае, если УниКальку предложить систему не имеющую решений):...
  60. ...Теперь мы готовы определить субъект-недоопределенное-целое, как комбинацию этих трех микросубъектов:...
  61. ...У N_integer вообще нет своих реакций, каждая из трех его реакций спрятана в соответствующем подсубъекте (что, впрочем, необязательно: можно было бы описать N_integer как два s_integer и три реакции). Обратите внимание на способ встраивания подсубъекта Cross_integer. Мы не могли просто вставить его под каким-то именем, так как его поля должны быть отождествлены с полями New подсубъектов Low и Up. Дословно так же, как отождествляются формальные и фактические параметры процедур (параметры-переменные), с той лишь разницей, что в процедуре это связывание временное, а при таком способе встраивания подсубъекта - постоянное...
  62. ...Впрочем, способы синтаксической реализации субъектно-ориентированной технологии программирования - это отдельная большая тема, и сейчас мы в нее углубляться не будем. Тем более, что диалектов языка в РосНИИ ИИ вдвое больше, чем разработчиков - я сам автор пяти или шести...
  63. ...Теперь совсем просто описать субъект-отношение н-целое_меньше_н-целого. Давайте только поймем как оно должно работать: Пусть A< и значения (например, быть на B="[1,9]." B: граница нижняя подтянуться должна A="[1,9]," Из B). границы верхней меньше единицу верхняя а сказать, можем не ничего мы числа меньшего границу нижнюю (про как уточниться должно то уточнить теперь Если вначале>
  64. ...В результате имеем субъект из двух н-целых и двух реакций:...
  65. ...Теперь представьте себе, что ваша система уравнений рассыпается в сеть субъектов, подобных приведенным, и эти субъекты доуточняют друг друга, пока это возможно. Это и есть UniCalc или субъектная электронная таблица. Конечно, это достаточно макетное понимание того, как все происходит: за кадром осталось множество существенных вещей - приоритеты субъектов/реакций; метасубъекты, отсеивающие малоэффективные потоки вычислений; субъекты, реализующие традиционные вычислительные методы типа деления пополам; субъекты уровня компиляции (аналитические преобразования формул); субъекты-редакторы топологии сети; субъекты-массивы и массивы субъектов и т.д....
  66. ...Тем не менее, основа, благодаря которой, UniCalc берет системы из сотен сложных уравнений и за секунды выдает вам все решения - это библиотека из примерно сотни небольших субъектов, подобных приведенным выше...
  67. Субъекты-таблицы
  68. ...Вернемся к нашему САПРу, а точнее к нашим САПРам. Мы можем проектировать самые разные объекты (и субъекты - персонажей киносценария, например), но только, если отношения между их параметрами выразимы аналитически. К сожалению, большинство соотношений между параметрами реальных объектов проектирования не представимы формулами. Даже наш условно-модельный САПР-Трансформатор, это на 4/5 таблицы и номограммы, составленные на основании испытаний серии трансформаторов. Самый универсальный способ описания неаналитических отношений - реляционная таблица, то есть список допустимых комбинаций значений параметров...
  69. ...Давайте рассмотрим, как нам из реляционной таблицы сделать субъект, способный активно участвовать в доуточнении наравне с аналитическими отношениями: Возьмем простейшую таблицу из двух доменов - <номер , число-Фибоначчи> :...
  70. ...Пусть, например, номер доопределился как интервал [4,7]. Этому интервалу - ограничению на первый домен соответствуют четыре кортежа: <4,3>, <5,5>, <6,8>, <7,13>. Из этого множества можно доопределить значение параметра число-Фибоначчи как интервал [3,13] (максимум и минимум второго домена из этих четырех кортежей). В обратную сторону эта таблица отрабатает так же просто: если число-Фибоначчи доопределилось как [4,11], то выполнить такой же запрос: "найти минимум и максимум первого домена для кортежей со значением второго домена >4, <11". Получим уточненное значение номера [5,6] (кстати, доуточнится из таблицы и само число-Фибоначчи - [5,8])...
  71. ...На N-арные таблицы этот способ обобщается без проблем. Таким образом, субъект-таблица так же эффективно способна доуточнять свои аргументы при уточнении одного из них, как и субъект-формула. Наш САПР в процессе поиска решения будет сам формулировать необходимые запросы к таблицам базы данных, обсчитывать и анализировать полученные результаты, запрашивать другие таблицы и т.д. Примерно так устроена система INFO-Tec. Конечно, описаный способ, не единственный для подключения реляционных баз данных к субъектному потоковому вычислителю. Например, система календарного планирования Time-EX оперирует таблицами субъектов (работ и отношений между работами)...
  72. ...* Субъект-домен - очень удобная вещь для отслеживания корректности модификации, корректности ссылок, связывания таблиц, поддержки механизма виртуальных полей (которые, в отличие от вычисляемых, можно редактировать). * Субъект-сервер - это существенное увеличение эффективности сети. * Субъект-поле с глубиной памяти, позволяющей хранить старые значения, начиная с момента запуска самой старой незавершенной транзакции, это возможность всем транзакциям работать одновременно, каждой в своем времени, прозрачно не видя друг друга. И проч. (3)
  73. В этой статье я преследовал пять целей (кроме саморекламы): [1] объяснить что такое субъектно-ориентированное программирование с разных точек зрения - как язык, как технология, как стиль, как средство интеграции, как способ сделать сложное простым, как более приемлемую для человека модель интерфейса, как наиболее вероятное направление развития компъютерной индустрии, как серию систем, которые вы можете купить уже сегодня; [2] наметить основные области, где применение этой технологии может быть наиболее эффективно и наиболее быстро достижимо; [3] убедить вас, что вам эта технология необходима уже сегодня - в виде существующих систем и / или для ваших собственных разработок; ...
Subscribe

  • застенки \\ бомбоубежище, ВЦАН, ВЦСОАН, чердак

    походил вот пощелкал в подвалах ВЦ АН - завалы электрических пишмашинок Ятрань, бомбоубежище класса (эээ.. уже не помню - ну вобщем наверное чтобы в…

  • бухгалтерша. такой вот сюжет - невеселый

    получил вот я довольно давно письмо такое: Порядочная, надежная и преданная близким людям. 27 лет Образование высшее. Детей нет. Без вредных…

  • слова кончились

    т.е. я об чем-то своем девичьем весело трындел, вот хотя бы тут, в ливере - уже лет 5, да? ну или около того - надо б графичек нарисовать - но и так…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments