OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Ноябрь, 2019 19:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 97 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 19:15 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9158
Откуда: Россия, Орёл
В задаче треды вторичны, первична логика событий. Для "сложных многотредовых", отдельно продумываемая, например, в виде сети Петри. И только потом логика отображается на конкретные примитивы параллелизма. В которых "тредов" может, представьте, вообще не быть.

Трактуйте как отдельное событие успешный доступ к дискете. Предусмотрите в том случае, если это событие не состоялось в течение n-го времени, некоторые альтернативные действия. И уже потом "нагрузите" выполнение действий и обработку событий на разные треды.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 19:31 

Зарегистрирован: Вторник, 01 Январь, 2008 16:19
Сообщения: 35
Цитата:
Трактуйте как отдельное событие успешный доступ к дискете.

не усложняйте людям жизнь, она итак трудная.
в наиболее последовательной концепции событий, событие это нечто, привязанное ко времени его порождения, и имеющее некие специфические свойства...примерно так.
от события совершенно не требуется, что оно ОБЯЗАТЕЛЬНО должно произойти.
таким образом, факт упешности входа в эксклюзивный участок, тоже вовсе не обязателен. более того...он вполне вероятен, если внутри участка сидит враждебный тред, просто вошедший в слип или бесконечный цикл.
причем, если вы хотите жить во враждебном окружении, то должны понимать, что в ЛЮБОМ месте, где возможен вражеский код(если вы хотите иметь стабильную и защищенную систему), вас запросто "застрянут". враг напишет вирус такой. :shock:
и вместо простого таймаута, реализуемого в полпинка, вы хотите, чтобы я разложил систему в некие сети петри? какие еще петри, если я например пишу системный софт, который будут юзать треды пользователей, что еще не написаны? я вообще не знаю, кто и как будет вызывать мой код. и с кем он будет взаимодействовать. как я вам вашу сеть тут нарисую???


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 19:35 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9158
Откуда: Россия, Орёл
merk писал(а):
и вместо простого таймаута, реализуемого в полпинка, вы хотите, чтобы я разложил систему в некие сети петри?

Не надо её "раскладывать". Надо её из них (или из другой формальной модели) "складывать". Это всё равно, что заявить "вместо бегания взад-вперёд по тексту вы хотите, чтоб я разложил парсер в некие конечные автоматы и регулярные выражения".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 19:46 

Зарегистрирован: Вторник, 01 Январь, 2008 16:19
Сообщения: 35
Цитата:
Надо её из них (или из другой формальной модели) "складывать".

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 19:49 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9158
Откуда: Россия, Орёл
merk писал(а):
вот такую систему вы предлагаете для разработчиков?
ниизя.

Замечание ясно, спасибо, учтём :-)

Обращаю Ваше внимание, что Active BlackBox, о котором идёт речь - только эксперимент. Бета. Релиза не будет, т.к. пошли уже другим путём. Основанным на сообщениях.

P.S. Явных тредов тоже, видимо, не будет. "Лучший тред - мёртвый тред". Сколько тредов и как будут обрабатывать асинхронные сообщения - пусть библиотека решает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 21:54 

Зарегистрирован: Вторник, 01 Январь, 2008 16:19
Сообщения: 35
похоже вы хотите сделать нечто вроде мессаг-классов, с приделанными к ним тем или иным способом обрабочиками? а потом запускать обработчики в раздельных тредах?
где теория?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 22:19 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9158
Откуда: Россия, Орёл
Я понимаю Ваше замечание.

Можно вспомнить слова Джефа Элджера:
"Реальный мир это проблема. Почему мы должны в точности имитировать его?"
В конце концов, успех решения задач в науке/технике сильно зависит от того, насколько успешно удастся поэтапно абстрагироваться от проблемных нюансов...
Хотя на реальный, физический мир ориентироваться, конечно, стоит. Главное иметь чувство меры.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 22:33 

Зарегистрирован: Вторник, 01 Январь, 2008 16:19
Сообщения: 35
как вы верно заметили проблемы породило не ооп, а его неправильное использование. возможно. однако без примеров этого неправильного использования это высказывание скорее риторическое.
какую неразбериху может породить концепция - предметы-все, актеры-ничто, боюсь трудно и представить. ну например.
некто, фигурально выражаясь, должен открыть бутылку шампанского, выпить ее и выбросить на помойку. в концепции что я придерживаюсь, это будет актер - "некто", что берет разделяемый предмет - бутылка, проверяет, что оно - шампанское, вызывает булеву функцию бутылки - открыть(), потом подставляет обьект бутылка в свою функцию выпить(бутылка), потом отправляет обьект бутылка, с признаком "пустая" в очередь разделяемому обьекту "помойка".
Зашибись!
читается как песня, пишется как стих. никаких наворотов.

а в вашей концепции????
есть мессага - бутылка и приделанные к ней обработчики??? это какие? у бутылки обрабочик - выпить? вопрос - кто а кто пьяным будет? обработчик - выкинуть в помойку?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 22:46 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9158
Откуда: Россия, Орёл
merk писал(а):
а в вашей концепции????
есть мессага - бутылка и приделанные к ней обработчики??? это какие? у бутылки обрабочик - выпить? вопрос - кто а кто пьяным будет? обработчик - выкинуть в помойку?

Нет, Вы неверно поняли. Есть "автономный объект", назовём так. У него есть обработчик, с селектором по типу сообщений. Когда объекту посылают сообщение (obj.Call(msg), где Call - не переопределяемый метод, описанный в библиотеке. В Обероне можно запретить переопределять методы в типах-расширениях.), то рано или поздно (потому что в середине может происходить что угодно, действовать прозрачно какие-то механизмы, например, распределённости) какой-то системный поток (программиста, использующего библиотеку, не интересует - какой) вызовет Handler этого объекта, передав ему сообщение и его состояние как VAR-параметры. Объект оператором WITH разбирает тип сообшения, обрабатывает его, меняя своё состояние и посылая какие-то другие сообщения. И возвращает управление.
Если же объект должен действовать постоянно, то он обрабатывает какое-то спец. системное сообщение, и может не возвращать управление из своего обработчика.

Эти "автономные объекты" и выполняют роль актёров. А пассивные объекты скрыты внутри, они не разделяются (т.к. доступ к своему состоянию имеет только сам актёр и только во время обработки конкретного сообщения, а сообщения могут передавать только данные по копированию, либо динамические immutable strcutures - а на чтение данные можно безопасно разделять сколько угодно).

Т.е. никаких разделяемых на запись данных. Уж сколько раз убеждались все, что это зло... Тем более в компонентной системе, в которой, как Вы справедливо замечали, заранее неизвестно, сколько и каких активностей будет дейстовать. Разделяемым данным место в пассивных хранилищах на периферии системы (что-то типа баз данных, только в оперативной памяти. Ну и, конечно, в обычных полноценных БД).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 22:51 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9158
Откуда: Россия, Орёл
В принципе, концептуально-то не предлагается ничего нового. Практически это и есть концепция актёров, идущая из Эрланга. С отсутствием разделяемых данных и взаимодействием/синхронизацией только через сообщения. Плюс разрешается клиент-серверное сообщение (в режиме рандеву Ады).

Задача только качественно, безопасно и эффективно реализовать это на библиотечном уровне. В сочетании с безопасной и масштабируемой объектной моделью. Т.е. вылизать и сделать просто и компактно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 23:09 

Зарегистрирован: Вторник, 01 Январь, 2008 16:19
Сообщения: 35
понял...а то одни мои знакомые несколько лет назад, наворочали нечто о чем я говорил. данные все! - а обработчики сбоку прилеплены. я сразу им и указал чем это кончится - неадекватностью предметной области.
ну так и случилось. программировать на такой системе в реальности невозможно.
а их опыт видимо почерпывался из систем вроде абстракций оконных интерфейсов борланда и прочих товарищей, где быстренько слепил обьект гуи, реализовал ему предопределенные обработчики и оно уже работает. но это специальные задачи ж, елки палки.

итак актеры у вас есть, только взаимодействие между ними делается с помощью сообщений. совершенно между прочим обычная парадигма реализации мультитредовых систем.
опять же - в нормальной мультредовости есть не только таймаут ;), но и постулируется что треды взаимодействуют промеж собой исключительно через мессаги. и у базового класса тред есть внутренняя очередь мессаг, которая наследуется любым классом потомком. и функция - put(message) есть у каждого треда. прямой аналог вашего call. сам же тред берет мессагу из своей очереди функцией get базвого класса CThread. а потом например через вариант вроде case, интерпретирует ея.
товарищи. это все типо известно.
однако! треды могут взаимно использовать разделяемые обьекты и иметь приватные. ежли у вас есть таймауты, дедлоков не будет. поскольку таймаут проявится в чрезмерном, по мнению треда(актера), ожидании какого-то события, и если актер решает, что ожидание затянулось, он ругается и пытается выкрутиться из ситуации.
от так. 8)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Вторник, 01 Январь, 2008 23:34 

Зарегистрирован: Вторник, 01 Январь, 2008 16:19
Сообщения: 35
кстати если у вас допускается удаленное взаимодействие через мессаги, вы должны иметь глобальную в пределах вашей, фактически adhoc сети, уникальную идентификацию ваших экземпляров автономных обьектов.
например есть два наладонника, общающихся по радиоканалу. ну например двое пытаются играть в шахматы.
какие варианты возможны
одно из устройств выключено - не включалось,
плохая радиовидимость,
сели внезапно внутри сеанса, батарейки,
помехи по эфиру,
соперник вышел из программы.
это как минимум.
система должна не просто позволять находить нужный экземпляр автономного обьекта на удаленном устройстве, но и успешно преодолевать эти проблемы.

как например написать текст программы начала диалога между автономными обьектами или его возобновления?
тут call(message) не обойдешься, поскольку даже непонятно у кого этот call вызвать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Среда, 02 Январь, 2008 00:04 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1438
merk писал(а):
опять же - в нормальной мультредовости есть не только таймаут ;), но и постулируется что треды взаимодействуют промеж собой исключительно через мессаги. и у базового класса тред есть внутренняя очередь мессаг, которая наследуется любым классом потомком. и функция - put(message) есть у каждого треда. прямой аналог вашего call. сам же тред берет мессагу из своей очереди функцией get базвого класса CThread. а потом например через вариант вроде case, интерпретирует ея.
товарищи. это все типо известно.
однако! треды могут взаимно использовать разделяемые обьекты и иметь приватные. ежли у вас есть таймауты, дедлоков не будет. поскольку таймаут проявится в чрезмерном, по мнению треда(актера), ожидании какого-то события, и если актер решает, что ожидание затянулось, он ругается и пытается выкрутиться из ситуации.
от так. 8)


Очередь сообщений САМА ПО СЕБЕ, как часть архитектуры, СМЫСЛА и ПОЛЕЗНОСТИ НЕ ИМЕЕТ.
Откуда реализация многозадачности знает весь набор нюансов логики взаимодействия в прикладных системах?
Достаточно иметь возможность несинхронно уведомить объект-сервер о наступлении (срабатывании) какого-то события.
В системах а-ля Активный Оберон синхронное взаимодействия с очередями реализуется системной очередью блокированных, на ожидании исполнения какого условия в AWAIT, потоков. Этого вполне хватает!
Условие же асинхронного общения потоков - что-то интересное из песни об архитектурных решениях...

ПО сути дела моменты взаимодействия "потоков" - это моменты передачи данных и - НИЧЕГО БОЛЕЕ! В системах с явным выделением механизма обмена с помощью сообщений (например, QNX или Minix3) ничего больше и нет (и не нужно!): ни мьютексов, ни чего-то ещё! Только блокировки на актах обмена сообщениями...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Среда, 02 Январь, 2008 01:00 

Зарегистрирован: Вторник, 01 Январь, 2008 16:19
Сообщения: 35
Цитата:
Очередь сообщений САМА ПО СЕБЕ, как часть архитектуры, СМЫСЛА и ПОЛЕЗНОСТИ НЕ ИМЕЕТ.

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

Цитата:
Условие же асинхронного общения потоков - что-то интересное из песни об архитектурных решениях...

что я слышу?
потоки принципиально могут общаться только асинхронно. в том смысле, что поток А совершенно не должен предполагать в какой точке своего кода находится поток Б.
если поток А передает данные Б, он просто кладет в почтовый ящик(см выше), той или иной реализации, данные, и сваливает, извините. и нет никакой гарантии, когда поток Б их получит. НУ НИКАКОЙ. когда поток Б захочет эти данные, тогда и получит. Все остальные предположения о работе потоков неверны.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Среда, 02 Январь, 2008 01:25 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9158
Откуда: Россия, Орёл
merk писал(а):
кстати, а как послать широковещательную мессагу в ваших концепциях.

Завести спец. объект - шину. Все желающие получать широковещ. сообщ-я объекты на шине себя регистрируют. Все желающие посылать - посылают, шина ретранслирует всем зарегистрировавшимся.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Среда, 02 Январь, 2008 01:31 

Зарегистрирован: Вторник, 01 Январь, 2008 16:19
Сообщения: 35
Цитата:
Завести спец. объект - шину. Все желающие получать широковещ. сообщ-я объекты на шине себя регистрируют. Все желающие посылать - посылают, шина ретранслирует всем зарегистрировавшимся.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Среда, 02 Январь, 2008 01:35 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9158
Откуда: Россия, Орёл
В нашем случае сообщения будут передаваться по ссылке. Можно запретить изменение сообщения, передавая его IN-параметром...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Среда, 02 Январь, 2008 01:44 

Зарегистрирован: Вторник, 01 Январь, 2008 16:19
Сообщения: 35
Цитата:
В нашем случае сообщения будут передаваться по ссылке. Можно запретить изменение сообщения, передавая его IN-параметром...

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Воскресенье, 10 Февраль, 2008 23:09 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9158
Откуда: Россия, Орёл
По неоднократным просьбам,
Beta-версия Active BlackBox опубликована в открытых исходниках.

Напоминаю ещё раз, что её развития не будет (разработки пошли другим путём).
Предоставляется "как есть".
Однако является годной к применению, для тех, кому сильно нужна многопоточность...

(модератор) удалена устаревшая/неработающая ссылка


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Active BlackBox 1.5 beta
СообщениеДобавлено: Среда, 21 Май, 2008 13:13 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 233
Оказывается существует проект High-Performance Computing for Oberon, с целью использовать SIMD-инструкции, MultiCores и кластеры в Active Oberon.

При этом испольнгются расширения Active Oberon (автор Felix Friedrich, например A Mathematical Programming Language Extension for Multilinear Algebra) с синтаксисом типа

Код:
VAR A: ARRAY [*,*] OF LONGREAL;


В связи с этим вопрос: возможно ли использовать Active BlackBox для компиляции кода Matrix Library Modules использующего подобные расширения?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 97 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB