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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  14:12[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

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

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

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


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

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

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

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

<<<... | 1676—1667 | 1666—1657 | 1656—1647 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 460


№ 1666   11-01-2007 06:07 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1639« (Владимир Лось)
___________________________

Ответ на »сообщение 1637« (Илья Ермаков)
___________________________
"Проверка" была от меня


Не многие поняли о чем речь... :)


№ 1665   11-01-2007 05:37 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1661« (pepper)
___________________________

Ответ на »сообщение 1648« (Владимир Лось)
___________________________

А ведь вся эта писанина была бы не нужна при детальной типизации. Т.е., если бы для terminalId использовался диапазонный тип, а для type - перечислимый тип.


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


№ 1664   11-01-2007 03:29 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1650« (Сергей Губанов)
___________________________

Ответ на »сообщение 1644« (Илья Ермаков)

В стеке же сборщик в ББ работает консервативно и по целым тоже "привяжет" объект.

Не понял. А если у меня на стеке полно всяких целых чисел, значения которых случайно совпадают с адресами каких-то объектов, то эти объекты никогда не будут удалены?

Да, именно так. Сборка мусора на стеке в целях быстродействия в Оберонах ведется консервативно. Более того, существуют два режима сборки (константа Kernel.strictStackSweep). Если строгая сборка, то якорем является целое, указывающее на начало блока памяти объекта. При нестрогой сборке целое является якорем, даже если оно указывает на середину объекта. Для многопоточной среды приходится включать нестрогую сборку, т.к. один из потоков может выполнять процедуру с VAR-параметром, который указывает на одно из полей динамического объекта, и такой VAR-параметр мы также должны считать якорем, иначе последствия будут печальны :-)


№ 1663   11-01-2007 03:24 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1645« (AVC)
___________________________

Ответ на »сообщение 1644« (Илья Ермаков)
___________________________

Ответ на »сообщение 1638« (Владимир Лось)
___________________________
В том и дело, что через w сборщик мусора не проследит ссылку, т.к. она - целое, а не указатель. В этом и смысл слабой ссылки, что она не является якорем. Сборщик мусора зануляет все слабые ссылки, объекты которых не доступны по указателям.


Вот это мне и непонятно (может, я "туплю"): как сборщик мусора обнуляет все слабые ссылки, если он их не может проследить?

Речь идет о новом ядре АББ, в нем сборщик мусора - умеет это делать :-)
Я же уже писал - в ядре есть список всех созданных слабых ссылок и их адресов. После фазы маркировки доступности сборщик проверяет слабые ссылки на предмет промаркированности их целевых объектов. Те слабые ссылки, объекты которых более недоступны, зачищаются.


№ 1662   11-01-2007 03:08 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1657« (Антон Григорьев)
___________________________

Только что коллега выкопал где-то в интернете: "Программа на С подобна гороскопу. По расположению звездочек в ней программист пытается определить что произойдет".


:)
Класс!
 AVC


№ 1661   11-01-2007 03:01 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1648« (Владимир Лось)
___________________________

Ползучая гидра пробирается даже в девственно чистые ряды самого правильного языка всех времён и народов:о)))
http://www.eventhelix.com/RealtimeMantra/Object_Oriented/design_by_contract.htm


Этот "Design by Contract Framework" был еще в MFC в прошлом веке, пользуйся - не хочу. Причем сама M$ пользовалась вовсю (чего не скажешь, например, о борланде в VCL).

Ладно. Смотрим пример использования и первое что видим:

  Status AddTerminal(int terminalId, int type)
  {
      // Checking Preconditions
      REQUIRE(terminalId < MAX_TERMINAL_ID);
      REQUIRE(type >= TERMINAL_TYPE_RANGE_MIN && type <= TERMINAL_TYPE_RANGE_MAX);



А ведь вся эта писанина была бы не нужна при детальной типизации. Т.е., если бы для terminalId использовался диапазонный тип, а для type - перечислимый тип.


№ 1660   11-01-2007 02:56 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1655« (pepper)
___________________________

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

>>Это просто компромисс, позволяющий сочетать надежность и эффективность.

А если у мена стеке мегабайтный массив?


Страдать и терпеть, наверное. Не совать в стек всякую гадость. :)
В принципе, в любой Оберон-системе достаточно информации для восстановления полной информации о переменных на стеке.
Например, она используется посмертным отладчиком, если случился трап. (См. хотя бы обработку трапа в ББ.)
Но задействовать ее постоянно (держать загруженной в память), видимо, нерационально.
Конечно, не исключаю, что ради массива-рекордсмена (да еще если его несколько раз передать в качестве параметра по значению) можно и расстараться. :)
 AVC


№ 1659   11-01-2007 02:48 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1651« (AVC)

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

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


№ 1658   11-01-2007 02:47 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1651« (AVC)
___________________________


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


Что ж там за команды такие были, которые могли работать без сборки мусора?


№ 1657   11-01-2007 02:46 Ответить на это сообщение Ответить на это сообщение с цитированием
Только что коллега выкопал где-то в интернете: "Программа на С подобна гороскопу. По расположению звездочек в ней программист пытается определить что произойдет".


<<<... | 1676—1667 | 1666—1657 | 1656—1647 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 460


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

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

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

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

Перейти на конкретную страницу по номеру
  
Время на сайте: 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» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

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