【发布时间】:2010-09-02 21:37:32
【问题描述】:
我一直在研究不同语言如何管理源代码的组织。似乎大多数现代语言都使用某种形式的命名抽象容器。它的名称和实现方式因一种语言而异,但归根结底是一种编程结构,可以超越文件边界对相关代码进行分组。
在 Java 和 .NET 语言中,它被用作组织依赖项的基础(您包含/导入类所属的命名空间/包,而不是定义它的文件)。而 C++ 仅使用它来避免名称冲突。
我很好奇是谁首先提出了这个想法,什么时候提出的。还有第一个实现它的语言是什么?
【问题讨论】:
-
您仍在混淆模块和命名空间。 C++ 使用命名空间来避免名称冲突,并使用其他方法来创建模块。命名空间和模块是不同的。
-
正如您所指出的,术语模块不能被严格定义,因为它的定义因一种语言而异。
-
当我说“没有严格的定义”时,我的意思是它不一定只是一个文件或一个类;它可能是一组文件或一组类,或者每个文件可能有多个模块。但是无论你怎么看,一个模块都是一个代码分组单元,而不是一个名称分组单元。
标签: language-agnostic namespaces module packages