OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 27 Апрель, 2024 16:51

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Компоненты и библиотеки
СообщениеДобавлено: Понедельник, 06 Март, 2023 14:48 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1167
предисловие: может, это уже обсуждалось, а моё поиск-фу плохое, тогда ткните, пожалуйста.

заметил тут за собой, что в процессе обсуждений не всегда делаю разницу между понятием «компонент» и «библиотека». а разница есть, и довольно важная, как мне кажется.

библиотека — это набор полезных вещей, предназначеных для активного повторного использования. а компонент — это чёрный ящик, который используется для комбинаторного построения конечной системы.

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

в качестве примера можно взять TextModels и TextMappers: это скорее библиотеки — для «длинных строк» и простого их парзинга. и они используются в BBCB повсеместно, никого такая зависимость особо не напрягает. а вот TextControllers и TextViews уже скорее компоненты, которые вместе реализуют кубик «редактор текста» — используя библиотеки для «длинных строк».

это я к чему: мой StdStdCFrames, например, состоит из двух частей: из библиотеки кишочков (guts), и компонента контролов. объединять их в один модуль я считаю не очень правильным: на самом деле в guts надо вместо этого добавить стандартный механизм фабрик, и оставить библиотекой. как минимум это позволит менять реализацию кишочков при помощи привычных для среды механизмов. (оставим сейчас в стороне то, что CFrames сами по себе хак.)

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

фрэймы и порты, кстати, тоже скорее библиотеки, а не компоненты.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компоненты и библиотеки
СообщениеДобавлено: Понедельник, 06 Март, 2023 17:04 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Эта тема (компонентов) постоянно обсуждается (в том числе на конференции и Днях Оберона). Но она настолько размазана по пространству, что точно указать контекст сложно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компоненты и библиотеки
СообщениеДобавлено: Понедельник, 06 Март, 2023 17:49 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3778
Клеменс Шиперски главным образом определяет разницу между библиотекой и компонентом по отношению к пользователю.

Цитата:
Most objects have no meaning to clients who are not programmers. Class libraries and frameworks are typical developer tools and require highly trained and qualified programmers for their proper use. It is appropriate that component construction is left to persons of such standing. However, for components to be successful, composition and integration – that is, component assembly must not generally be confined to such a relatively small elite group.


Цитата:
Большинство объектов не имеют значения для клиентов, не являющихся программистами. Библиотеки классов и фреймворки являются типичными инструментами разработчика, и для их надлежащего использования требуются хорошо обученные и квалифицированные программисты. Уместно, чтобы строительство компонентов было оставлено лицам с таким положением. Однако для того, чтобы компоненты были успешными, состав и интеграция, то есть сборка компонентов, как правило, не должны ограничиваться такой относительно небольшой элитной группой.


Szyperski C., Gruntz D., Murer S. Component software: beyond object-oriented programming. 2nd ed. London: Addison-Wesley, 2003. 589 p.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компоненты и библиотеки
СообщениеДобавлено: Понедельник, 06 Март, 2023 17:54 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1167
вот да, я смутно помню, что где-то встречал обсуждения в этом духе (или около), но тоже не нарыл. решил попробовать отдельную тему сделать, может взлетит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компоненты и библиотеки
СообщениеДобавлено: Понедельник, 06 Март, 2023 17:58 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1167
Иван Денисов писал(а):
Клеменс Шиперски главным образом определяет разницу между библиотекой и компонентом по отношению к пользователю.
вот да, у меня в голове что-то похожее на это крутится. отсюда получается желание герметичности компонентов — чтобы пользователь не парил мозг, собирая себе нужные конфигурации из кубиков. ведь в принципе компонентная среда (BBCB, Oberon) на самом высоком уровне выглядит как конструктор, детальки которого склеиваются инспектором и скриптовым языком. просто скриптовый язык в этом случае тоже оберон — который в силу простоты вполне для такой задачи подходит, пользователю не надо учить стопицот нюансов языка, чтобы простые склеечки и даже несложные алгоритмы на нём писать.

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

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