Модули vs namespace's [closed]


#1

Чем пространства имён лучше модулей?


#2

Встречный вопрос - чем using namespace std похоже на модули? Еще хотите? “Чем пиво лучше женщин?” (с) - классика жанра


#3

Пространства имён - это термин, относящийся к динамическим библиотекам, а не модулям.


#4

В язык внедрено ключевое слово namespace для описания пространств имён, {$includenamespace Name} - для их подключения. Только зачем?


#5

Потому что делается. Но пока не реализовали. как было задумано.


#6

Вы объясните мне, чем такие пространства имён превзойдут модули? Меня интересует в частности возможность объединения нескольких файлов в одно пространство имён. В C# - это можно. Если в интерпретации разработчиков PascalABC.Net пространства имён не будут иметь этой возможности, то какое у них преимущество перед модулями?


#7

Это пусть сэнсэй объясняет, Серёга-сан.


#8

Вас понял. Буду ждать уважаемого, как Вы выразились, сенсея.


#9

Он отчаянно бился за их поддержку, если правильно помню. Хотя, на самом деле, никто и не возражал.

Будут. Для того и делается. Но пока что-то там не получилось еще.


#10

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


#11

Скорее, объединять их без нудного перечисления uses. В языках семейства С именно эта необходимость постоянно думать (и указывать) что где лежит, больше всего ярости вызывает у начинающих. Да и не только у начинающих, и не только в С.


#12

Ну я тоже чуточку добавил :wink:

Вы упорно пытаетесь сравнить две абсолютно разные вещи. Неймспейсы предназначены для группировки имён в динамических библиотеках. При чём здесь модули?


#13

Модули, по сути, тоже некие контейнеры, которые используются для группировки имён. Но, как Вы правильно заметили, не для динамический библиотек. Хотя, добавление пространств имён можно рассматривать с той точки зрения, что в обучении на начальном этапе будут рассматриваться модули, на более позднем - пространства имён, тем самым обеспечивая плавный переход на C#. Является ли это одной из тех целей, которые преследуют разработчики, разрабатывая пространства имён?


#14

Вот Вы сами на свой вопрос и ответили. Модули, кстати, имеют абсолютно иной формат, нежели dll, и являются структурной единицей конкретно Паскаля.


#15

Здесь налицо какая-то путаница. Пространство имен - это область программы, где не может быть одного имени для обозначения двух разных сущностей (кроме перегруженных функций)

Есть пространство имен модуля, функции, класса, лямбды. Сейчас мы обсуждаем всего-то явные пространства имен.

Модуль - единица кода, пространство имен - нет.

Пространства имен не призваны заменить модули. ibond делал их скорее чтобы было как в C#. Я вот их противник - это лишняя сущность. И - у нас они имеют недостатки - нельзя одно пространство имен в разных файлах.

Кроме того, пространства имен диссонируют с модулями.


#16

Почему же? А как порядок в dll организовать?


#17

Возможно, меня подводит память (она у меня вообще далека от идеала), но по моему было так:

  • Был задан тут вопрос когда то давно - как сделать чтоб класс был в пространстве имён.
  • @ibond ответил type namespace1.namespace2.t1=class, но это не работало и я сразу написал ему это в ответ.
  • Через некоторое время я каким то образом (вроде из issue на гитхабе) узнал о том что @ibond делает неймспейсы.
  • Был так же какой то спор о их надобности, но я не помню чтоб я так уж яростно их защищал как говорит @RAlex. Хотя я был за.

Как и сказал @Gleb - неймспейсы нужны чтоб лучше упорядочивать библиотеки. Если использовать одни только модули - имена могут быть Module1.t1, Module1.t2, Module1.t3 и т.п., то есть только 1 уровень вложенности. И кроме того, всё из модулей паскаль суёт в основное пространство имён. А неймспейсы подключаются по желанию.


#18

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


#19

.dll=библиотека (потому что объявляется как library). Я только про них и говорил, прочитайте внимательно))


#20

Да нет, Вы там и про модули говорили.