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" есть в других ЯП?


В других — это в каких?
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.