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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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


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

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

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

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


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

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

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

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

<<<... | 1236—1227 | 1226—1217 | 1216—1207 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 504


№ 1226   12-12-2006 02:37 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1225« (Mirage)
___________________________
На потоках, а на чем еще? :-) Написать свой менеджер нитей в пользовательском режиме - невозможно.
А вот семафоры для синхронизации и AWAIT реализованы быстрые, пользовательского режима, работают в 12 раз быстрее системных.


№ 1225   12-12-2006 00:26 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1218« (Илья Ермаков)
___________________________

На данный момент решена задача создания многопоточной версии BlackBox. Считанные дни остались до публикации нами расширения Active BlackBox - с поддержкой активных процедур, активных объектов и некоторых других интересных вещей. Функциональность Active Oberon реализована в полной мере, без изменения языка, и с некоторыми дополнительными преимуществами.

Ух ты, это как в BlueBottle? Круто!
А как оно реализовано под Windows? Через потоки?


№ 1224   11-12-2006 07:47 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1223« (Сергей Губанов)
___________________________

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

Kernel.Unload(Kernel.ThisMod("ИмяМодуля"));

Kernel.ThisMod - загрузит модуль если он ещё не был загружен ранее. Если мы хотим модуль выгрузить, то загружать его перед этим, видимо, не стоит.

IMPORT Kernel;
...
Kernel.Unload(Kernel.ThisLoadedMod("ИмяМодуля"));
...

refcnt проверять не надо - это уже делает ThisLoadedMod.


№ 1223   11-12-2006 07:06 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1221« (Илья Ермаков)

Kernel.Unload(Kernel.ThisMod("ИмяМодуля"));

Kernel.ThisMod - загрузит модуль если он ещё не был загружен ранее. Если мы хотим модуль выгрузить, то загружать его перед этим, видимо, не стоит.


№ 1222   11-12-2006 07:01 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1220« (Maximus)

Не могу найти, каким образом можно выгрузить модуль непосредственно из программы (и можно ли это сделать вообще). В режиме командной строки понятно - DevDebug.Unload или DevDebug.UnloadThis модуль. А вот в самой процедуре как? UnloadThis в форме UnloadThis(выгружаемый модуль) не работает. Подскажите, кто знает.


Как-то так:

...VAR string: ARRAY OF CHAR...


VAR mod: Kernel.Module;
BEGIN
mod := Kernel.ThisLoadedMod(SHORT(string$));
IF mod # NIL THEN
  IF mod.refcnt = 0 THEN
    Kernel.UnloadMod(mod);
    IF mod.refcnt < 0 THEN
      Log.String("... Модуль был выгружен.")
    ELSE
      Log.String("... Выгрузка, почему-то, не произошла...")
    END
  ELSIF mod.refcnt > 0 THEN
    Log.String("... Модуль нельзя выгружать! Его сейчас используют другие модули.")
  ELSE
    Log.String("... Модуль уже был выгружен ранее.")
  END 
ELSE
  Log.String("... А этот модуль и не был загружен, выгружать нечего...")
END





№ 1221   11-12-2006 06:53 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1220« (Maximus)
___________________________

Не могу найти, каким образом можно выгрузить модуль непосредственно из программы (и можно ли это сделать вообще). В режиме командной строки понятно - DevDebug.Unload или DevDebug.UnloadThis модуль. А вот в самой процедуре как? UnloadThis в форме UnloadThis(выгружаемый модуль) не работает. Подскажите, кто знает.


IMPORT Kernel;
...
Kernel.Unload(Kernel.ThisMod("ИмяМодуля"));
...


№ 1220   11-12-2006 06:03 Ответить на это сообщение Ответить на это сообщение с цитированием
Не могу найти, каким образом можно выгрузить модуль непосредственно из программы (и можно ли это сделать вообще). В режиме командной строки понятно - DevDebug.Unload или DevDebug.UnloadThis модуль. А вот в самой процедуре как? UnloadThis в форме UnloadThis(выгружаемый модуль) не работает. Подскажите, кто знает.



№ 1219   11-12-2006 05:56 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1212« (Сергей Перовский)
___________________________

Ответ на »сообщение 1211« (Илья Ермаков)
___________________________
>>>Просто среды разработки Оберонов, даже работая поверх другой ОС, являются мини-операционными системами.
Это я понимаю...
Я не понимаю, что это даст мне, как прикладному программисту.

Хорошо, оставим пока в покое динамическую загрузку и компонентность саму по себе.
Принципы архитектуры, обкатанные в Оберон-системах, позволяют строить ПО из четко выделенных кубиков и компактных шин-интерфейсов между ними. Придерживаясь этих принципов, мы можем легко развивать систему, реконфигурировать ее переделкой отдельных деталей и подключением новых. Динамическая загрузка же позволяет это делать прямо на лету.
Могу привести и самый что ни на есть пример "что это даст прикладному программисту".
Реальная ситуация из практики: демонстрация почти готовой системы (складской учет) клиенту. Клиент говорит: все прекрасно, все нравится, только вот эту большую форму ввода разбить бы на пять маленьких, последовательно открывающихся, потому что у оператора глаза уставать будут за рабочий день по большому окошку бегать. С точки зрения клиента это совсем мелочь. С точки зрения Дельфи-программиста это означает замену одного модуля+dfm на пять новых модулей+dfm, и простым ctrl-v здесь не обойдешься, работы может быть часа на полтора-два. С точки зрения BlackBox-программиста задача сводится к разрезанию одного составного документа на 5 отдельных, которые продолжают взаимодействовать с теми же программным модулем, динамически устанавливая с ним связи (сам модуль ни сном ни духом не знает о том, какой GUI на него навешен, его дело - предоставить переменные-контакты для подключения любых составных документов-форм). Код не переписываем, даже не открываем и не перекомпилируем. Работа сводится к манипуляциям с мышкой в течении 5 минут, которые делаются прямо при клиенте в соответствии с его капризами. Все.
5 минут или полтора часа - не преимущество ли? Все это основано на динамической загрузке модулей и удачной архитектуре BlackBox Framework. И на отказе в СИСТЕМНЫХ библиотеках от глубоких иерархий наследования.


№ 1218   11-12-2006 03:54 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1216« (Как слышно? Приём!)
___________________________
На данный момент решена задача создания многопоточной версии BlackBox. Считанные дни остались до публикации нами расширения Active BlackBox - с поддержкой активных процедур, активных объектов и некоторых других интересных вещей. Функциональность Active Oberon реализована в полной мере, без изменения языка, и с некоторыми дополнительными преимуществами.

Следующая задача - поддержка распределенных вычислений, модели распределенного взаимодействия объектов, объектной базы данных. Это будет выполняться под конкретный проект, на котором и будет испытано. Идей по этому поводу много, но работы пока не начинались, т.к. до создания многопоточной среды писать на Блэкбоксе серверные приложения было невозможно.


№ 1217   11-12-2006 03:52 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1213« (Как слышно? Приём!)
___________________________
>>>Ну-ка, постройте иерархию (дерево) "камень-ножницы-бумага".
Камень-ножницы-бумага это скорее всего не классы, а значения.
А если и классы, то никак не являющиеся наследниками друг друга, а имеющие общий прототип.
И ничего тут сложного нет.
В наследовании идет речь об уровнях абстракции. А Вы приводите пример с сущностями очевидно одного уровня.
Кенгуру со стингером - классика жанра. Нужен был прототип движущегося объекта, а создали сразу солдата, не задумываясь о дальнейшем расширении системы. Вот и наследовали кенгуру (когда потребовалось) от солдата. И получили объект, сначала убегающий от вертолета, а потом его обстреливающий.


<<<... | 1236—1227 | 1226—1217 | 1216—1207 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 504


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

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

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

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

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

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