На базарной площади довольно часто можно слышать высказывания об
Обероне. Мне кажется, что на базарной площади пора появиться ветке об
этой системе и языке, что-то вроде "Мысли об Обероне". Что это такое, перспективы
этой системы, что
полезного можно извлечь из него для программирования на Дельфи
(например) и др.
Ivan
Всего в теме 4531 сообщение
Ссылки по теме "Оберон" и "Компонентный паскаль"
Отслеживать это обсуждение
- Free Pascal, Oberon, BlackBox
- Разработка препроцессора gpre для delphi\freepascal.
- Component Pascal и среда разработки BlackBox
- FreePascal: реальная альтернатива или OpenSource — блажь?
№ 4391 03-02-2006 14:26 | |
Ответ на »сообщение 4390« (Good Knight)
___________________________
Вот именно про "отдельные" стеки процессов и вопрос.
"... меня терзают смутные подозрения..."
Извините, но – встречный вопрос (с простой пролетарской прямотой): "А – на фига?"
Вопрос вызван тем, что всю дорогу народ пытался наоборот как можно лучше разделить подобные вещи... Собсна и сами активные объекты – попытка (и – ОЧЕНЬ удачная, что бы там товарищ Мейер не говорил в своей книгище) спрятать сущности ОСи, за фасадом объектов. Причём непросто за фасадом. Активные объекты а ля Active Oberon – это не жалкие потуги-нагромождения, типа того же Шмидтовского ACE, сделать очередные навороченные обёртки над упомянутыми сущностями. Тут надо и подходы к проектированию менять-с.
1. Забудьте про слово "процесс" или "поток". Нетути их.
2. Забудьте про "критические секции (участки кода)". Воспринимайте эксклюзивные блоки НЕ как зоны "монопольного доступа потоком (процессом) к данным объекта", А – КАК участки вычислений над элементами объекта, в которых вы гарантируете цельность и непротиворечивость состояния частей объекта.
Вот поэтому мне и не понятно, почему вы стараетесь достучаться до данных "в другом процессе". Если это дело рассматривать относительно реализации многозадачности в Active Oberon, то упоминание "другого процесса", автоматически подразумевает "другой (активный) объект". То есть вы, по вашим требованиям, стараетесь совершить второй (по классификации Лося :о) ) смертный грех – роетесь в данных объекта, минуя набор специально определённых для таких обращений, интерфейсных функций класса...
№ 4390 03-02-2006 13:52 | |
Вот именно про "отдельные" стеки процессов и вопрос.
№ 4389 03-02-2006 13:38 | |
Ответ на »сообщение 4387« (Good Knight)
___________________________
Ага! Так значит может? А каким образом? Можно пример кода? Никак не могу придумать.
Дык, вы это и так "автоматом" постоянно делаете...
MODULE M0;
VAR array*: ARRAY 16 OF CHAR; (* НА СТЕКЕ, ОДНАКО-СЬ... *)
END M0.
MODULE M1;
IMPORT M0;
BEGIN
...
M0.array[i] := 5;
...
END M1;
:о)))
Чтоб именно в стеке.
Именно – в стеке! :о)
А не просто в сегменте стека.
Прочитал... "Много думал..."(с) :о)
Никогда не видел, что бы стек вызовов на х86 эмулировали в сегменте данных или кода... :о)
И именно в другом стеке. А не в этом же.
Требование "другости" удовлетворяется "автоматом". Сами подумайте: модуль может быть импортирован в кучу других модулей и его переменные могут быть использованы каждым модулем из этой "кучи". А я уже сказал, что локальные данные модуля располагаются в стеке. Значит стеки просто обязаны быть "разными"...
Ещё раз повторюсь: в bluebottle все сегментные регистры установлены на одинаковые виртуальные адреса. И все регистры, имеющие отношение к преобразованию виртуальных адресов в физические настроены одинаково. То есть мы имеем общее адресное пространство.
ЗЫ На каждый активный объект, есна, выделяется ещё свой "отдельный" стек...
№ 4388 03-02-2006 13:11 | |
№ 4387 03-02-2006 13:09 | |
Ага! Так значит может?
А каким образом? Можно пример кода? Никак не могу придумать.
Чтоб именно в стеке. А не просто в сегменте стека.
И именно в другом стеке. А не в этом же.
№ 4386 03-02-2006 12:23 | |
Ответ на »сообщение 4381« и »сообщение 4379« (Good Knight)
___________________________
А вот ещё вопрос про Active Oberon.
Может ли случиться так, что в стеке одного процесса окажется ссылка на переменную в стеке другого процесса?
А как насчёт передачи локальной переменной в качестве аргумента по ссылке?
А что такого? Пока эта переменная действительно в стеке, почему бы и нет?
Или я не совсем вопрос понял... :о)
Для меня, например было некоторым моральным шоком, что локальные переменные модулей тоже в сегменте стека размещаются... Но, в принципе – какая разница? Регистры ведь, настроены так, что всё это (все сегменты) на одни и те же физические адреса отображается...
№ 4385 03-02-2006 09:06 | |
Ответ на »сообщение 4384« ()
___________________________
Бае системс - это впк их ...
Зачем им нападобился Оберон - неизвестно.
кое-что известно.
BAE Systems, Edinburgh
– “How to fit a 200 m radar dish into a plane”
– Synthetic Radar Aperture Research
– Rapid algorithm design
See Robert Campbell’s presentation
http://ftkachov.home.cern.ch/ftkachov/programme.html
№ 4384 03-02-2006 08:56 | |
Бае системс - это впк их ...
Зачем им нападобился Оберон - неизвестно. Сообщение не подписано
№ 4383 03-02-2006 01:45 | |
№ 4382 03-02-2006 01:40 | |
Ответ на »сообщение 4381« (Good Knight)
А как насчёт передачи локальной переменной в качестве аргумента по ссылке?
Ссылка передаётся как параметр вызова метода другого объекта, но поток-то при этом не меняется - вызов метода происходит в рамках первого потока.
Отслеживать это обсуждение
Дополнительная навигация: |
|