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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

На базарной площади довольно часто можно слышать высказывания об Обероне. Мне кажется, что на базарной площади пора появиться ветке об этой системе и языке, что-то вроде "Мысли об Обероне". Что это такое, перспективы этой системы, что полезного можно извлечь из него для программирования на Дельфи (например) и др.

Ivan

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

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

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


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


Ссылки по теме "Оберон" и "Компонентный паскаль"



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


Смотрите также обсуждения:
Free Pascal, Oberon, BlackBox
  • Разработка препроцессора gpre для delphi\freepascal.
  • Component Pascal и среда разработки BlackBox
  • FreePascal: реальная альтернатива или OpenSource — блажь?

  • <<<... | 4521—4512 | 4511—4502 | 4501—4492 | ...>>>
    Всего сообщений в теме: 4531; страниц: 454; текущая страница: 3


    № 4511   23-02-2006 04:44 Ответить на это сообщение Ответить на это сообщение с цитированием
    Еще одно место обсуждения Оберона.

    http://www.codecomments.com/Oberon/


    № 4510   22-02-2006 13:04 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 4507« (captain cobalt)

    Капитан, OBJECT в АО ДАЛЕКО не "аналог" void* в Си/Си++.

    В Си/Си++ - это просто некий указатель на всё равно что. Изначально никакой "нагрузки" на уровне системы он не несёт.
    В АО OBJECT - "нагруженный" изначальными свойствами "механизьм" для поддержки ООП в языке и системе.
    Да, он является "чистым" ссылочным типом, но использовать его в качестве аргумента функции не имеет смысла и не правильно: на OBJECT кончается "системный логический слой". Да вы знаете, что OBJECT - предок всех объектов. Но,и - только. После этого про само существование OBJECT как типа забудьте. Он просто - часть того механизма, которым обладает данная система, что бы вы смогли реализовывать ваше ООП-представление в ней. Не больше! "Настоящие" (корневые, родовые, абстрактные) типы - вот тот "материал", которго вы должны касаться. Забудьте про само существование OBJECT & (POINTER TO)RECORD END! Попробуйте так к этому относиться в своих проектах и они будут намного надёжнее и правильней разработаны.


    № 4509   22-02-2006 12:28 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 4507« (captain cobalt)
    ___________________________
    Objects.Object # OBJECT в том понимании, которое вы стараетесь здесь отстоять...

    если предусмотрена обработка только одного типа, почему именно этот тип не заявлен для аргумента?
    Немного не "въезжаю"...
    Какой "один тип"? OBJECT или те случаи, что я приводил?
    Если OBJECT, мы уже выяснили, что таких функций с такими аргументами (в подсистемах) просто не существуют в природе. Если корневые объекты-"родоначальники" - то, таки - да - сплошь и рядом... Собственно, "родовые" обработчики именно так и строятся...

    Тогда попытка запихнуть в аргумент непотребство могла бы проверяться во время компиляции?
    В Проверке нет смысла. Мы обявляем РОДОВОЙ тип обработчика. "Разбор типа" (конкретизация решения на реакцию в обработчике) реализуется в потомках...


    № 4508   22-02-2006 08:20 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 4507« (captain cobalt)
    Теперь осталось отгадать одну загадку...?

    Разгадка: динамическая расширяемость системы. Старые модули не надо будет каждый раз  перекомпилировать при появлении новых типов сообщений. Старые обработчики просто будут игнорировать неизвестные им сообщения.


    № 4507   22-02-2006 07:00 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 4506« (Владимир Лось)
    ___________________________
    В исходниках Оберона, того который "Ten Years After", уйма аргументов типа Objects.Object

    Заметьте, что АРГУМЕНТЫ в приведённых вами функциях, являются именно такого типа, корневых классов. Это сделано просто исходя из того, что ДРУГИЕ типы сущностей не предусмотрены для анализа и обработки.

    Теперь осталось отгадать одну загадку: если предусмотрена обработка только одного типа, почему именно этот тип не заявлен для аргумента? Тогда попытка запихнуть в аргумент непотребство могла бы проверяться во время компиляции?


    № 4506   21-02-2006 05:51 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 4504« (captain cobalt)
    ___________________________
    Получилось несколько раньше ответить... :о)

    Я кажется понял, в чём у вас проблема.
    На мой взгляд, вы путаете абстрактный тип-родоначальник отдельного (под)дерева в лесу иерархий классов в какой-либо предметной области и абстрактный тип OBJECT, как НОСИТЕЛЬ реализации одного из аспектов ООП в языке.

    Ведь посмотрите, даже в приведённых вами примерах, НЕТ чистого использования OBJECT или RECORD END. Я поэтому и удивился и засомневался (даже "пробежался" по январским  исходникам ББ – думал, что-то поменялось... :о) ), когда вы сказали, что в АО это "сплошь и рядом". Нет там этого. Да, в принципе, - и БЫТЬ НЕ МОЖЕТ. Потому, что в этом просто НЕТ СМЫСЛА С ТОЧКИ ЗРЕНИЯ ГРАМОТНОЙ РАЗРАБОТКИ АРХИТЕКТУР КОНКРЕТНЫХ СИСТЕМ (ПРИЛОЖЕНИЙ).

    В каждом из ваших примеров, приведён АБСТРАКТНЫЙ (может быть КОРНЕВОЙ) КЛАСС каждой из иерархий. Именно в этом классе ЗАЯВЛЕНЫ некие функциональности. Но их реализация сделана в потомках. Данный же корневой класс – явно выделенный "ярлык", "название", "способ обозначения принадлежности ко множеству"... В нём даже не обязательно что-то должно определяться.
    Заметьте, что АРГУМЕНТЫ в приведённых вами функциях, являются именно такого типа, корневых классов. Это сделано просто исходя из того, что ДРУГИЕ типы сущностей не предусмотрены для анализа и обработки. Сами эти процедуры – являются обычно заявленными для некоего ОБОБЩЁННОГО способа работы с ОБОБЩЁННЫМ типом. Именно с данным типом, а не с каким-то иным. А вот конкретизация того, как обращаются к переданному в эти процедуры экземпляру (или что от него требуют), происходит или в потомках, или в таких же по сигнатуре процедурах...


    № 4505   21-02-2006 01:25 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 4504« (captain cobalt)
    ___________________________
    Уважаемый коллега,
    из вашего постинга, я вижу, что процесс зашёл слишком далеко и слишком "не в ту степь", и просто "парой слов" тут не "отбрешешься"... :о) Ближайшими часами-днями, я ОБЯЗАТЕЛЬНО отвечу на ваш постинг.


    № 4504   20-02-2006 05:24 Ответить на это сообщение Ответить на это сообщение с цитированием
    Строку приведите, пжлст. Именно, что вот так вот прямо и было написано буквами.

    О том что абстрактные объекты - "это хорошо". Цитата из "Project Oberon":
    A. Ten Years After: From Objects to Components
    In practice, the design of the Oberon runtime model as described in Chapters 3, 4 and 5 proved to be basically flawless and sustainable. However, later developments gradually revealed some unused potential. The main shortcoming was the absence of a generic object type that would serve as an abstract root of the entire Oberon object hierarchy. As a remedy, we later added a module called Objects and two abstract types Object and Library, from that we then derived some previously independent types via type extension. Figure A.1 depicts the resulting type hierarchy. This simple extension of the Oberon kernel had an amazingly beneficial effect, and it allowed us to develop a substantial evolution of the original Oberon system, including
    • A generic persistence mechanism for objects
    • A generalized notion of text as sequence of arbitrary objects
    • A fully hierarchic component framework
    • An advanced graphical user interface (GUI) called Gadgets


    О том что такое OBJECT "и с чем его едят". Цитата из диссера Мюллера:
    The built-in type OBJECT is the implied base type of all objects. A variable of this type can store a reference to any object instance. It is usually used in combination with type tests and type guards, to implement generic object operations.

    Вы меня, канечна за назойливость извините, не покажите ли примерчик? с указанием, из какого файла это взято... Что бы именно примерно так:

    Вот:

    MODULE AosProcessors;
    ...
    TYPE
    ...
    Message* = POINTER TO RECORD END;
    ...
    END AosProcessors.


    MODULE AosMemCache;

    IMPORT ..., AosProcessors;
    ...
    TYPE
    SetCacheMessage = POINTER TO RECORD (AosProcessors.Message)
    physAdr, size, type: LONGINT;
    res: ARRAY AosBoot.MaxCPU OF LONGINT
    END;
    ...
    PROCEDURE HandleSetCacheProperties(id: LONGINT; VAR state: AosInterrupts.State; msg: AosProcessors.Message);
    BEGIN
    WITH msg: SetCacheMessage DO
    ...
    LocalSetCacheProperties(msg.physAdr, msg.size, msg.type, msg.res[id])
    END
    END HandleSetCacheProperties;
    ...
    END AosMemCache.



    "Именно примерно так" ? (с)


    № 4503   20-02-2006 03:11 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 4502« (captain cobalt)
    ___________________________
    Кому и из каких источников известно? :о)
    Любому из материалов проекта Bluebottle/Active Oberon. ;)

    Строку приведите, пжлст. Именно, что вот так вот прямо и было написано буквами.
    Запишите на будущее... :о)
    Это лишнее. ;)

    Ну, мало ли... :о)
    Говоря строго, тип OBJECT – НЕ указатель.
    Тогда так: OBJECT - это ссылочный тип данных.

    Теплее... :о)
    И он - совсем НЕ указатель на ПРОИЗВОЛЬНЫЙ тип...
    И совместим с любым другим произвольным объявленным через OBJECT объектным типом.

    Ну слава Богу, значит всё-таки не ПРОИЗВОЛЬНЫЙ... Вы уточняйте вот так всегда, а то по контексту вы сначала за объектную "фривольницу" пишете и сразу вот так вот про OBJECT...
    Вы меня пугаете ещё больше! Это шо ж, вы все аргументы-объекты в функциях (процедурах) объявляете как OBJECT, а потом, после приведения/проверки, начинаете им пользоваться? :о)
    Далеко не все.
    И не только аргументы, но и результаты и модульные переменные и локальные переменные процедур.
    И не только OBJECT но и RECORD END
    И не в "голом" виде а символьным синонимом для типа.
    Кроме шуток, именно таких приёмчиков сколько угодно в официальном коде: имеется аргумент и ему тут же делается WITH.

    Вы меня, канечна за назойливость извините, не покажите ли примерчик? с указанием, из какого файла это взято... Что бы именно примерно так:

    any_var: OBJECT;
    ...
    any_var := ... Или как аргумент функции...
    ...
    WITH any_var: TAnyType DO
    ...
    ?
    Ну надо же выяснить "маленькие неясности". ;)
    Ничё себе "маленькие"!


    № 4502   20-02-2006 02:36 Ответить на это сообщение Ответить на это сообщение с цитированием
    Кому и из каких источников известно? :о)

    Любому из материалов проекта Bluebottle/Active Oberon. ;)

    Запишите на будущее... :о)

    Это лишнее. ;)

    Говоря строго, тип OBJECT – НЕ указатель.

    Тогда так: OBJECT - это ссылочный тип данных.

    И он - совсем НЕ указатель на ПРОИЗВОЛЬНЫЙ тип...

    И совместим с любым другим произвольным объявленным через OBJECT объектным типом.

    Вы меня пугаете ещё больше! Это шо ж, вы все аргументы-объекты в функциях (процедурах) объявляете как OBJECT, а потом, после приведения/проверки, начинаете им пользоваться? :о)

    Далеко не все.

    И не только аргументы, но и результаты и модульные переменные и локальные переменные процедур.

    И не только OBJECT но и RECORD END

    И не в "голом" виде а символьным синонимом для типа.

    Кроме шуток, именно таких приёмчиков сколько угодно в официальном коде: имеется аргумент и ему тут же делается WITH. Причём в большинстве случаев только с одним вариантом. Фактически, таким образом имитируется ENUM, которого в Обероне нет, а SET "жирно будет".

    Вы знаете, я что-то начинают терять убеждённость в необходимости дальнейшего обсуждения...

    Ну надо же выяснить "маленькие неясности". ;)


    <<<... | 4521—4512 | 4511—4502 | 4501—4492 | ...>>>
    Всего сообщений в теме: 4531; страниц: 454; текущая страница: 3




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

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

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

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

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