OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 21:32

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 10:58 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Сергей, я бы раньше не спорил, но у меня есть контрпримеры... Например, разрезая ядро ББ и переходя к микроядерности, я применил модульную архитектуру, с классическими для Оберонов приемами инсталлируемых хуков, а кое-где - и сообщений. И каждый из этих модулей будет легко заменяться как отдельный компонент, - для конкретной платформы или просто различной "заточенности" (как диспетчер памяти - агрессивная политика или мирная). Т.е. налицо все признаки модулей и модульной системы. Но в итоге конкретная версия ядра компонуется статически, т.к. технически никак иначе нельзя..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 11:17 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Тогда чего Модулу назвали Модулой, оказывается модулей-то в ней и нет :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 12:09 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
PGR писал(а):
Тогда чего Модулу назвали Модулой, оказывается модулей-то в ней и нет :)
Тогда думали, что это модули.
Ведь и "новейшее время" в истории назвали так не потому, что новее не будет. ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 12:27 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
А некоторые до сих пор считают си языком программирования. :)
Надо в статье про оберон заменить "направления" -> "учения". :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 14:38 

Зарегистрирован: Среда, 28 Февраль, 2007 00:08
Сообщения: 142
Откуда: Нижний Новгород
Trurl писал(а):
А некоторые до сих пор считают си языком программирования. :)

Правильно считают, если не уточнять, что именно программировать (программы или баги)
Лично мне один знакомый задвинул что JavaScript вообще не является языком программирования высокого уровня.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 14:40 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Илья Ермаков писал(а):
Сергей, я бы раньше не спорил, но у меня есть контрпримеры...

Ну, давайте поспорим. И так, давайте забудем, что модули предназначены для динамической загрузки и выгрузки. В чём же разница между:
Код:
MODULE A;
  IMPORT Log;
BEGIN
  Log.String("Hello, World!")
END A.

и
Код:
static class A
{
  static A ()
  {
    System.Console.Write("Hello, World!");
  }
}

Разницы-то нет!!! Аналогично и ваши микроядра - их можно было оформить (в .Net) как статические классы, ну и при чём тут модули?

В общем, если забыть о динамической загрузке/выгрузке, то разница между модулями и статическими классами отсутствует, т. е. модули не нужны - вполне хватит статических классов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 15:08 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Классы тоже могут динамически загружаться-выгружаться, как в Яве.
В Яве класс вообще эмулирует модуль.
Проблема, во-первых, в том, что при такой эмуляции понятие класса дико семантически перегружено, а во-вторых, теряется много мелких нюансов, например - no paranoia rule. В результате модульные языки на порядок более выразительны архитектурно - вот оно, основное отличие, а не динамическая загрузка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 15:19 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Сергей Губанов писал(а):
В общем, если забыть о динамической загрузке/выгрузке, то разница между модулями и статическими классами отсутствует, т. е. модули не нужны - вполне хватит статических классов.

А так оно и есть!
"Вполне хватит".

Вы пытаетесь охарактеризовать модули с точки зрения их свойств и механизмов. Это только одна сторона. Та же динамическая загрузка-выгрузка классов есть, как я уже сказал, в Java, есть, если память не изменяет, и в Objective C.

Вопрос в различиях концепций, в том, что это разные абстракции, которые по-разному направляют мышление и проектирование.

Какая разница между потоками-семафорами и активными объектами? В том, что вторые позволяют делать что-то особое, чего не позволяют первые? Да нет. И те, и другие позволяют писать приложения с параллельностью, так же, как и модули, и классы - в принципе - позволяют писать приложения с динамической загрузкой компонент. Они (модули по сравнению с классами, активные объекты по сравнению с потоками-семафорами) просто позволяют мыслить по-другому, по-другому абстрагировать задачу, по-другому конструировать систему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 15:36 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Илья Ермаков писал(а):
Та же динамическая загрузка-выгрузка классов есть, как я уже сказал, в Java

Никакой динамической загрузки-выгрузки классов в природе не существует. Классам разрешено друг на друга ссылаться ("импортировать") или вообще быть объявленным один внутри другого. Два циклически ссылающихся друг на друга класса по отдельности загрузить и выгрузить невозможно. Они оба вместе образуют одну единую неделимую сущность - модуль. Так что в Java, как и где угодно (чудес-то не бывает), загрузка/выгрузка осуществляется не для классов, а для модулей даже если они там никак синтаксически не обозначены, а просто подразумеваются (и, в частном случае, могут состоять всего из одного класса).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 15:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Илья Ермаков писал(а):
Вы пытаетесь охарактеризовать модули с точки зрения их свойств и механизмов.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Среда, 13 Июнь, 2007 15:51 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Илья Ермаков писал(а):
Проблема, во-первых, в том, что при такой эмуляции понятие класса дико семантически перегружено, а во-вторых, теряется много мелких нюансов, например - no paranoia rule. В результате модульные языки на порядок более выразительны архитектурно - вот оно, основное отличие, а не динамическая загрузка.

В .Net понятие static class означает примерно то что в Delphi означает unit (нельзя создать экземпляр статического класса, статический класс нельзя расширять, статический класс сам не может быть расширением другого, статический класс не может реализовывать интерфейсы). Разница лишь в том, что в Delphi секция инициализации юнита запускается при старте программы, а секция инициализации статического класса (статический конструктор) запускается при первом к нему обращении (т.е. может никогда не запуститься). Так что архитектурно (в статическом случае) static class от модуля-юнита не отличается. В статическом случае архитектурных различий нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 14 Июнь, 2007 16:12 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Сергей Губанов писал(а):
Нет, я их характеризую с точки зрения задачи которую они решают - динамическое расширение системы. Все остальные задачи можно решать и без модулей.

А чем такие динамические модули отличаются от компонентов?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 14 Июнь, 2007 16:18 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
PGR писал(а):
А чем такие динамические модули отличаются от компонентов?

Компонент, как правило, состоит из нескольких модулей. В Блэкбоксе компонентами являются подсистемы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 14 Июнь, 2007 16:31 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Сергей Губанов писал(а):
PGR писал(а):
А чем такие динамические модули отличаются от компонентов?

Компонент, как правило, состоит из нескольких модулей.

Но может же состоять и из одного...

Сергей Губанов писал(а):
В Блэкбоксе компонентами являются подсистемы.

А что же тогда кластеры? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 14 Июнь, 2007 16:39 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
PGR писал(а):
Сергей Губанов писал(а):
В Блэкбоксе компонентами являются подсистемы.

А что же тогда кластеры? :)

Можно понимать под кластером конкретную совокупность взаимодействующих модулей, закоммутированных каким-либо образом.
Границы кластеров не совпадают с границами компонентов/подсистем. Подсистема - это набор модулей с точки зрения назначения для пользователя, они могут вообще не взаимодействовать внутри подсистемы.
С другой стороны, модули разных подсистем могут динамически закоммутироваться друг с другом и образовать кластер.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 14 Июнь, 2007 16:43 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
ПЕРЕНЕСЕНО МОДЕРАТОРОМ:

Trurl:
Сергей Губанов писал(а):
В общем, если забыть о динамической загрузке/выгрузке, то разница между модулями и статическими классами отсутствует, т. е. модули не нужны - вполне хватит статических классов.

Не так. Статические классы нужны - вполне хватит модулей. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 14 Июнь, 2007 16:51 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Цитата:
Можно понимать под кластером конкретную совокупность взаимодействующих модулей, закоммутированных каким-либо образом.
Границы кластеров не совпадают с границами компонентов/подсистем. Подсистема - это набор модулей с точки зрения назначения для пользователя, они могут вообще не взаимодействовать внутри подсистемы.
С другой стороны, модули разных подсистем могут динамически закоммутироваться друг с другом и образовать кластер.
А когда-то Обероны стремились к простоте...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 14 Июнь, 2007 22:32 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Но модули умели "браться за руки" так или иначе с самого начала :-) Отсюда и появление термина "кластер".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 15 Июнь, 2007 00:10 

Зарегистрирован: Понедельник, 29 Январь, 2007 19:00
Сообщения: 370
Откуда: Украина, Запорожье
Илья Ермаков писал(а):
Но модули умели "браться за руки" так или иначе с самого начала :-) Отсюда и появление термина "кластер".

А что можно почитать о кластерах, когда появился этот термин по отношению к множеству взаимодействующих модулей?

Непонятно, зачем вводить так много понятий: подсистема, компонент, кластер, ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 15 Июнь, 2007 01:03 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Да ничего нельзя почитать... Все это "живая" терминология, которая только формируется.
Компонент - это компонент, общий термин в современном ИТ.
Подсистема - это конкретный способ упорядочения модулей в ББ. Упорядочения для распространения и установки... Однако это всего лишь способ сгруппировать модули, никак не определеяющий их взаимодействие...

Термин "кластер" пробуем применить к группам модулей, образовавшим связь с друг с другом посредством какого-то механизма (статический импорт, динамические разъемамы, шина сообщений...). В конечном счете большим кластером, конечно, является все запущенное приложение, т.к. связи его пронизывают насквозь, но можно четко выделить небольшие сильносвязные кластеры (самая сильная связь - двусторонняя, когда в одну сторону - по импорту, а в обратную - по динамическим разъемам).
Например, Windows, HostWindows, Ports, HostPorts, HostMenus и еще некоторые другие образуют четкий кластер. При этом относятся к разным подсистемам.
Kernel, Files, HostFiles, StdLoader - тоже кластер...

Смысл введения термина "кластерно-модульное" - подчеркнуть ориентированность модульных языков на динамическую коммутацию модулей, а не просто на разделение системы на куски и их хранение в пакетах-"модулях" (которые модулями не являются).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB