class,namespace,module,package,library...
От: x-code  
Дата: 25.08.08 07:11
Оценка:
Хочу провести классификацию сабжевых сущностей.
Чем отличаются эти сущности в тех ЯП, где они используются?
class — понятно, он включает все от namespace и дополнительно — возможность порождать объекты.
А если рассмотреть "static class", т.е. класс у которого только статические методы и поля?
Имеет ли смысл аналог конструкторов и деструкторов для глобальных пакетов ("конструктор" вызывается в начале программы один раз если какой-то пакет/библиотека подключается, "деструктор" — аналогично в конце программы)
Какие еще сущности подобного вида существуют, как они соотносятся друг с другом, особенно если рассматривать разные языки программирования? Какие аналоги понятия "namespace" есть в других ЯП?
Re: class,namespace,module,package,library...
От: Кодт Россия  
Дата: 25.08.08 14:54
Оценка:
Здравствуйте, x-code, Вы писали:

XC>Хочу провести классификацию сабжевых сущностей.

XC>Чем отличаются эти сущности в тех ЯП, где они используются?
XC>class — понятно, он включает все от namespace и дополнительно — возможность порождать объекты.

Класс — описывает тип данных (структуру, операции, иерархические связи между суб- и супер-классами).
Модуль — цельный блок взаимосвязанного кода (типов, глобальных объектов, функций).
Библиотека — множество модулей.

Пространство имён — упорядочивает поиск имён.
В принципе, эта сущность может быть пенпердикулярна матрёшке класс-модуль-библиотека (и в С++ так оно и есть; правда, там модулей нет).
Но здравый смысл подсказывает, что не нужно усложнять себе жизнь.

XC>А если рассмотреть "static class", т.е. класс у которого только статические методы и поля?

XC>Имеет ли смысл аналог конструкторов и деструкторов для глобальных пакетов ("конструктор" вызывается в начале программы один раз если какой-то пакет/библиотека подключается, "деструктор" — аналогично в конце программы)

Централизованный код инициализации модуля есть и в VB, и в Паскале.
В С/С++ — как и всё, что сделано в этих языках, инициализация размазывается — и состоит из инициализации глобальных объектов.
Одновременно с этим существует инициализация единиц загрузки (.dll / .so), и в силу того, что писать dll можно на чём угодно, включая ассемблер, — она включает, но не исчерпывается, языко-зависимым кодом.

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

XC>Какие еще сущности подобного вида существуют, как они соотносятся друг с другом, особенно если рассматривать разные языки программирования? Какие аналоги понятия "namespace" есть в других ЯП?


В других — это в каких?
Перекуём баги на фичи!
Re[2]: class,namespace,module,package,library...
От: zverb555  
Дата: 10.10.08 11:22
Оценка:
приветствую!
случайно наткнулся поиском на эту дискуссию, собственно, в моём случае как раз и нужно слегка "усложнить", а точнее чётко провести архитектурную параллель... а именно:

Здравствуйте, Кодт, Вы писали:

К>Класс — описывает тип данных (структуру, операции, иерархические связи между суб- и супер-классами).

К>Модуль — цельный блок взаимосвязанного кода (типов, глобальных объектов, функций).
К>Библиотека — множество модулей.

так вот, что касается понятия Package — насколько грамотно и "политкорректно" утверждать, что Пакет == Модуль (Package == Module) ?

впринципе, ИМХО, эти две сущности (пакет и модуль) есть суть одно и то же, просто некоторые языки суть этой сущности (закреплённой за этими названиями-именами) использую свой синтаксис.

А вы как считаете?
Re[3]: class,namespace,module,package,library...
От: zverb555  
Дата: 10.10.08 11:33
Оценка:
кроме того:
1. насколько грамотно и "политкорректно" утверждать, что Пакет == Модуль (Package == Module) ?
2. если необходимо обеспечить некую иерархическую вложенность пакетных сущностей, как более правильно сказать:
а) есть модуль module1, внутри которого пакет с именем Package1, внутри которого Package2, что формирует namespace module1::Package1::Package2 (некий псевдо-синтаксис)
б) есть пакет Package1, внутри которого модуль с именем Module1, внутри которого Module2, что формирует namespace Package1::Module1::Module2 (некий псевдо-синтаксис)

какой из названий этих сущностей следует использовать для обозначения иерархической вложенности произвольной глубины одних "Пакетов" в другие?

Что первично — Пакет или Модуль? ;)
Re[4]: class,namespace,module,package,library...
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.10.08 04:02
Оценка:
Здравствуйте, zverb555, Вы писали:

Z>кроме того:

Z>1. насколько грамотно и "политкорректно" утверждать, что Пакет == Модуль (Package == Module) ?
Это зависит от контекста.
Традиционно, модуль — это единица инкапсуляции, а пакет — единица деплоймента.
Они вполне себе ортогональны, то есть границы модулей и пакетов никак не связаны между собой.

Тем не менее, в дотнете, к примеру, модуль — это единица загрузки, а в сборку может входить несколько модулей.

Z>2. если необходимо обеспечить некую иерархическую вложенность пакетных сущностей, как более правильно сказать:

Z> а) есть модуль module1, внутри которого пакет с именем Package1, внутри которого Package2, что формирует namespace module1::Package1::Package2 (некий псевдо-синтаксис)
Z> б) есть пакет Package1, внутри которого модуль с именем Module1, внутри которого Module2, что формирует namespace Package1::Module1::Module2 (некий псевдо-синтаксис)
Если не уточнять контекст, то оба утверждения неправильны.

Namespace — это пространство имен, оно вообще ортогональны всему.

Z>какой из названий этих сущностей следует использовать для обозначения иерархической вложенности произвольной глубины одних "Пакетов" в другие?

Вложенность произвольной глубины обычно применяется только к namespace. Пакеты/модули, как правило, не формируют иерархий.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: class,namespace,module,package,library...
От: zverb555  
Дата: 16.10.08 09:46
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Вложенность произвольной глубины обычно применяется только к namespace. Пакеты/модули, как правило, не формируют иерархий.


собственно, как тогда их именовать?

"вложенные" друг в друга "модули" ?
Re[6]: class,namespace,module,package,library...
От: Sinclair Россия https://github.com/evilguest/
Дата: 16.10.08 10:50
Оценка:
Здравствуйте, zverb555, Вы писали:
Z>собственно, как тогда их именовать?
Кого?
Z>"вложенные" друг в друга "модули" ?
Как я уже сказал, "модуль" в широком смысле не участвует в иерархии.
Как правило, в конкретной платформе все термины имеют однозначную трактовку.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: class,namespace,module,package,library...
От: zverb555  
Дата: 16.10.08 13:30
Оценка:
Здравствуйте, Sinclair, Вы писали:

Z>>собственно, как тогда их именовать?

S>Кого?
ок, есть один большой модуль, для этого модуля мы хотим написать два модуля, то есть, как бы под-модули, например:
blog
|____archive
     |________ search

здесь blog — как бы основной модуль, archive — "подмодуль" модуля blog, который реализует БД по управлению постами перенесёнными в архив, и search является "подмодулем" "подмодуля" archive который собственно реализует поиск в архиве

на java, эни будут называется subpackage (archive & search), однако, подобного названия для модулей(submodules), в вычислительной технике, я не встречал, разве что ВИКИ упоминает о подмодулях исключительно как о подмножествах множества в некоторых дисциплинах математического аппарата.

Z>>"вложенные" друг в друга "модули" ?

S>Как я уже сказал, "модуль" в широком смысле не участвует в иерархии.
сорри, ввёл вас в непонятку, из-за неверного использования этого слова, здесь имеется ввиду просто отношение модулей(пакетов, компонент и т.д.), когда один модуль выступает в роли подмодуля другого

собственно, интересует правильные, грамотные названия "подмодулей" согласно рассмотренному выше примеру.


Так же, подскажите пожалуйста, существует ли такое понятие как "подкомпонента"

зы: понимаю... но заморачиваться приходится )

Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.