Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  02:25[Войти] | [Зарегистрироваться]
Обсуждение темы:
Component Pascal и среда разработки BlackBox

Здравствуйте!
Начал изучать новый язык программирования Component Pascal
http://www.oberon.ch/
http://www.inr.ac.ru/~info21/
http://www.uni-vologda.ac.ru/oberon/
Но нигде не нашел рускоязычного сайта, на котором был бы форум посвященный этому языку.
Наверняка среди посетителей этого сайта есть специалисты по языку Component Pascal и среде BlackBox.
А посему, перейду сразу к делу. У меня есть вопрос про сборщик мусора в BlackBox. Может быть кто-нибудь сможет объяснить что нужно сделать чтобы он заработал?
Я имею в виду следующую простейшую тестовую програмку:

MODULE  sgTest003;
IMPORT  StdLog;

PROCEDURE   Проверка*;
  TYPE A = POINTER TO ARRAY 10000000 OF INTEGER;
  VAR a: A;
BEGIN
  StdLog.String(" Создаю "); StdLog.Ln();
  NEW(a);    (* В этом месте я вижу через Windows Task Manager  как BlackBox забрал
память*)
  StdLog.String(" Выхожу из области видимости "); StdLog.Ln();
  a := NIL; (* Я думаю, что сборщик мусора должен активизироваться в этом месте *)
END Do;
(* В этом месте я ожидаю, что BlackBox отдаст память обратно в распоряжение Windows
XP*)

BEGIN
END  sgTest003.
Вызываю процедуру Проверка посредством кликания мышью на
(Коммандер)sgTest003.Проверка
и наблюдаю через Task Manager за памятью. BlackBox ее только забирает и назад не отдает.
Даже если я выгружу модуль Dev ---> Unload, все равно BlackBox не вернет память обратно в распоряжение Windows XP. Память возвращается только когда я выключаю сам BlackBox 1.4 Shareware Edition.
Кто-нибудь понимает в чем дело?

С уважением,

 Сергей Губанов

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 117 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 87—78 | 77—68 | 67—58 | ...>>>
Всего сообщений в теме: 117; страниц: 12; текущая страница: 5


№ 77   08-06-2006 01:06 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 74« (AVC)
___________________________

Адреса процедур также хранятся в местах, доступных сборщику мусора.


№ 76   08-06-2006 01:01 Ответить на это сообщение Ответить на это сообщение с цитированием
сообщение от модератора

Ответ на »сообщение 67« (info21)
___________________________

Призыв к модератору: вырубать подобные посты независимо от остального содержания. Если человеку есть, что сказать, пусть постится еще раз.


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


№ 75   08-06-2006 00:50 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 64« (info21)
___________________________


Достаточно не использовать процедурные переменные. Тогда корректная выгрузка модулей не сложнее сбора мусора.


Не уверен, что это так просто.
Кажется, когда-то (уже давно) я проводил соответствующий эксперимент, и мне удалось довести BlackBox до глюка.
Но мысль интересная, ведь в Обероне-2 и КП именно в дескрипторе типа пересекаются модульная и объектная структуры, а их несовпадение, ИМХО, и является основной причиной опасности выгрузки модулей.
 AVC


№ 74   08-06-2006 00:38 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 72« (Trurl)
___________________________

Ответ на »сообщение 64« (info21)
___________________________
>>> Достаточно не использовать процедурные переменные. Тогда корректная выгрузка модулей не сложнее сбора мусора.

Процедурные переменные в этом плане ничем не отличаются от методов.


Кажется, все же, не совсем так.
Адреса методов в Обероне-2 и КП хранятся в дескрипторе типа, а он, в свою очередь, размещается (или может размещаться) в куче и доступен через указатель type tag.
Т.е. как раз сборщик мусора и может (хотя бы теоретически) "накласть вето" на опасную выгрузку модуля.
Надо еще раз это обдумать, но, похоже, что уважаемый info21 в принципе прав.
 AVC


№ 73   08-06-2006 00:17 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 62« (Takun)
___________________________


Кажется, так и было.
Я имел в виду, что задействовали, в общем, тот же механизм: Oberon.Call etc.


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


Я долго мучился, никак не мог вспомнить, откуда у меня всплыл этот Oberon.Call... :)
Наконец вспомнил -- из упражнения к 12-й главе книги Вирта и Рейзера "Программирование на Обероне" (1992). (Упражнение 12.12.)
Там рассматривается сохранение/восстановление графических объектов с помощью (специфических для каждой фигуры) процедур Store/Load, вызываемых с помощью Oberon.Call.
Отсюда, видимо, у меня и отложилось в памяти, что используются сходные механизмы.
А то я уже было подумал, что у меня глюк... :)
Как бы то ни было, немного сам себя запутав, я хотел сказать, что и для вызова команды, и для сохранения/восстановления составного документа в Обероне необходимы метапрограммные механизмы.
ИМХО, это требуется для поддержания неограниченной расширяемости.
(Еще одна возможная сфера их применения -- обработка исключений.)
 AVC


№ 72   07-06-2006 23:53 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 64« (info21)
___________________________
>>> Достаточно не использовать процедурные переменные. Тогда корректная выгрузка модулей не сложнее сбора мусора.

Процедурные переменные в этом плане ничем не отличаются от методов.


№ 71   07-06-2006 16:43 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 69« (Руслан Богатырев)
___________________________

ОС UNIX практически невозможно написать на языке SETL. Думаю, можно назвать еще не менее дюжины языков, на которых это также нельзя сделать.

По этой ссылке (http://www.99-bottles-of-beer.net/) легко найти пару десятков языков, на которых нормальный человек даже Hello World! не напишет. :)


№ 70   07-06-2006 16:03 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 59« (Takun)
___________________________

Где я вам другой возьму? :(

Значит, будем ждать, когда откроют.


№ 69   07-06-2006 16:01 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 45« (Takun)
___________________________

В этом смысле UNIX можно написать на любом языке, но не на любом языке можно написать ОС Оберон.

Классический Оберон в определенном смысле эквивалентен языку Си. Со всеми вытекающими отсюда последствиями. ОС UNIX практически невозможно написать на языке SETL. Думаю, можно назвать еще не менее дюжины языков, на которых это также нельзя сделать.


№ 68   07-06-2006 15:56 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 67« (info21)
___________________________

Призыв к модератору: вырубать подобные посты независимо от остального содержания. Если человеку есть, что сказать, пусть постится еще раз.

Уважаемый info21 ну никак не уймется. Однако, мое терпение в общем-то не беспредельное.


<<<... | 87—78 | 77—68 | 67—58 | ...>>>
Всего сообщений в теме: 117; страниц: 12; текущая страница: 5


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

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

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

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

Яндекс цитирования