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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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


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

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

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

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


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

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

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

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

<<<... | 1556—1547 | 1546—1537 | 1536—1527 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 472


№ 1546   09-01-2007 23:55 Ответить на это сообщение Ответить на это сообщение с цитированием
2 Илья Ермаков
Немного не "в тему", но не могу удержаться.
Почитал материалы на metasystems.ru по Оберон-технологиям, статьи Дейкстры и т.д. Получил огромное удовольствие, особенно от "Дейкстры". Такое впечатление, что он это вчера написал :) Особенно, про то "промывание мозгов", которое происходит в информатике и программировании. Про Обероны у него ни слова, но такое впечатление, что их "дух" присутствует в каждой строке. Спасибо за публикацию.



№ 1545   09-01-2007 14:34 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1543« (pepper)
___________________________
Причем тут шаблоны? Каким образом логика этапа компиляции может быть применена для выбора варианта действий в зависимости от динамического типа переменной?
typeid Вам тоже мало поможет... switch по нему сделаете? И что же дальше?
Если сообщение будет иметь расширенный тип, то typeid будет другим, и switch с typeid типа-предка его не обработает, в отличие от WITH в Обероне.
Только dynamic_cast и годится.

Приведите "более элегантный" пример эквивалентный по своей логике - двойная виртуализация по (TYP(object), TYP(message)) на этапе выполнения? Если все типы уже существуют на этапе компиляции, то есть красивый способ, предложенный в книге Дж. Элджера "С++ for real programmers" - двойная передача, когда сначала выявляется динамический тип второго параметра вызовом obj->Handle(msg), а затем идет "обратная подача" msg->Handle(obj), т.е. индексирование идет неявно по двум v-таблицам. Однако требуется описывать декартово произведение виртуальных функциий в обоих типах. Расширить систему на этапе выполнения принципиально невозможно. Ничего другого, лучшего "дубового WITH", Вам не придумать.

Про LPARAM/WPARAM молчу. Кто-то тут воевал за "адекватные структуры данных". Если INTEGER вместо перечислений не катит, то чем катит INTEGER вместо RECORD? :-)

Кстати, об Элджере. Два года книжку эту с полки не брал. Читал еще до знакомства с Оберонами. Открыл сегодня - увидел касательно архитектуры ООП те же идеи, что я описал в своей статье про Обероны: гомоморфные иерархии классов, "инкапсулируйте классы-расширения - это признак хорошо продуманной архитектуры" и т.п. Так что и в С++ приходим к тем же ограничениям, только долгим путем через такое место, через которое ходить особо не хочется... :-) И навязать эти ограничения начинающим самоуверенным самоучкам крайне сложно, потому что "язык позволяет, свободу программисту, никаких ограничений"...


№ 1544   09-01-2007 14:18 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1543« (pepper)
___________________________

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

Что касается жабы и шарпа, то там можно использовать int + массив заранее распределенных сообщений (хотя есть подозрение, что в шарпе есть более подходящие средства).


Хотя int не учтет случаи наследования сообщений и вообще некошерен. В таком случае оберон может дать фору жабе/C# в случае описанного свитча по типам сообщения. Но хотелось бы услышать мнение эксперта в этих языках.


№ 1543   09-01-2007 09:15 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1542« (Илья Ермаков)
___________________________

Во-первых, система GUI-сообщений в Оберонах построена на сообщениях, размещаемых в стеке, как и писал Сергей. Читайте мою статью по архитектуре, ссылка была ранее.


Ну если речь идет только лишь о самих сообщениях, то я не вижу здесь каких-то открытий. Виндовые LPARAM и WPARAM тоже все из себя "статические" и "обощенные" ;) Причем работают в старом добром C ;) В C++ помимо тормозного dynamic_cast есть шаблоны и typeid, так что до такого дубового свитча по типам дело, как правило, не доходит (ищутся более элегантные решения). Что касается жабы и шарпа, то там можно использовать int + массив заранее распределенных сообщений (хотя есть подозрение, что в шарпе есть более подходящие средства).


№ 1542   09-01-2007 08:24 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1536« (pepper)
___________________________
Во-первых, система GUI-сообщений в Оберонах построена на сообщениях, размещаемых в стеке, как и писал Сергей. Читайте мою статью по архитектуре, ссылка была ранее.
Естественно, сделать очередь из стековых или статических сообщений невозможно, но зачем? Если действительно нужно, то чем плоха динамика?
В последней русской версии ББ мы предоставили спец. средство - Mem.Heap, которое предоставляет буферизацию для этих целей. Преимущество перед обычной неуправлямой кучей все равно остается - утечки памяти невозможны. Если забудем вернуть объект в буфер, его подберет обычный сборщик.


№ 1541   09-01-2007 08:08 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1540« (pepper)
___________________________
Тяжко с вами, pepper...


№ 1540   09-01-2007 07:27 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1539« (Владимир Лось)
___________________________


В случае с Си++ (в общем случае) ничего не решит всех проблем с утечками.


В общем случае не решит. В частном случае, проблема с утечками может быть решена и без GC.


Это достаточно общая проблема для языков с GC.
?


GC не овобождает полностью от проблем с утечками. Просто утечки становятся более другие. Здесь пролетала ссылка с разъяснениями применительно к Java.


№ 1539   09-01-2007 06:47 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1526« (pepper)
___________________________
Речь шла не о выборе GC vs ручное управление памятью. Наивно полагать, что использование упоминавшийся реализации GC для C/C++ решит все проблемы с утечками, тем более в таких запущенных случаях как у вас в конторе.
Речь о моей конторе вообще не шла.
В случае с Си++ (в общем случае) ничего не решит всех проблем с утечками.

Это достаточно общая проблема для языков с GC.
?

Первый раз я о ней услышал применительно к Java и ее GUI. Сейчас точно не помню что именно там было, но GC отказывался подчищать обработчики менюшек или чего-то в этом роде. Причем речь не шла о банальных циклических ссылках (с ними GC справляется на ура).
А, ну так, примерно так я и думал, когда говорил, чего примерно ожидаю услышать...

Изначально вопрос возник как попытка выяснить преимущество для этой задачи оберона. Кольцевой буфер можно и на C наколбасить.
Какой задачи?
И какое отношение она имеет к конкретному языку ОберонХХХ?
А кто, находясь в здравом уме, будет "насильничать" над менеджером памяти, постоянно выделяя и возвращая системе блоки памяти при динамическом обслуживании клиентов при message passing-е???????

Когда речь идет о C++, независимо от используемой ОС, все проблемы с ручным управлением памятью решаются через смарт-поинтеры. Соответственно ни о каких  free/delete речь не идет.
Какой вы оптимист. Ваш оптимизм оправдан, когда всё управление ресурсами зависит только от вашей подсистемы. В обероне потому управление памятью и вынесено на уровень операционной системы, что иначе, вы надёжную систему ни с какими смарт-поинтерами (и прочими заклинаниями) не построите, если даже самый лучший механизм работает на уровне отдельного приложения!


№ 1538   09-01-2007 06:45 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1535« (Сергей Губанов)
___________________________


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


На моей практике часто возникает необходимость в процессе обработки одного сообщение добавить в очередь другое. Как "обобщённая транспортная шина передачи сообщений в оберонах" позволяет этого избежать?


2) Из объектов сообщений невозможно образовать очередь.


Вот и мне тоже так казалось.


№ 1537   09-01-2007 06:38 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 1534« (RBV)
___________________________


Дорогой pepper, вы не излечимы. Вам нравится "более крутые" языки программирования?
Используйте на здоровье! А нам вот нравится мыслить категориями Оберонов. Работаем вот и не жалуемся, что нам того и сего не хватает.


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


<<<... | 1556—1547 | 1546—1537 | 1536—1527 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 472


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

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

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

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

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

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