Was ist der Unterschied zwischen "Paket" und "Modul"
Verwende ich Java, wo wir nur Pakete. Ich weiß, es gibt andere Programmiersprachen, die auch Module.
Was ist der Unterschied?
Dank
InformationsquelleAutor der Frage OscarRyz | 2010-09-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist schwer zu vergleichen, Semantik der leere. (Welche anderen Sprachen haben Sie zu bedeuten???) Ein "Modul" könnte man Analog zu einer Java-Klasse oder ein Java-Paket oder etwas ganz anderes, je nachdem, eine andere Sprache. In der Regel, da "Module" eher von prozeduralen Sprachen, ich würde tendieren zu sagen, Java-Klasse, aber ich denke, die Zeile ist sehr fuzzy-an diesem Punkt und man könnte argumentieren, Paket ziemlich überzeugend.
InformationsquelleAutor der Antwort T.J. Crowder
instanceofTom Kommentar genagelt - Unterschiedliche Sprachen haben unterschiedliche Definitionen von package und Modul. Deshalb gibt es keine Sprache, die agnostische Antwort auf diese Frage.
Werde ich zu beantworten versuchen, es aus der Perspektive der einige der Sprachen, die ich kenne:
Java: Es hat ein Konzept der
package
s, die sind im Grunde nur ein Mechanismus für die Organisation von Java-Klassen, interfaces usw. in namespaces. Sie erfordern eine hierarchische Struktur.package
s haben keine erste-Klasse-status. Es mag auch erwähnenswert sein, dasssuperpackage
s vorgeschlagen, für Java 7 werden auch manchmal alsmodule
s.Modula:
module
s, gleiche Konzept, Javapackage
s. Benötigen keine hierarchische Struktur.C#:
namespaces
gleichen dem Konzept der Java -package
s. Benötigen keine hierarchische Struktur.C++:
namespaces
Wie der name schon sagt, diese sind einfach nur Namensräume. Benötigen keine hierarchische Struktur.Haskell:
module
s, gleiche Konzept, Javapackage
s.Scala:
package
s in Scala sind die gleichen wiepackage
s in Java, außer dass Sie nicht hierarchische Strukturen. Ein paar weitere Einschränkungen, wie eine öffentliche Klasse pro Datei haben auch gelockert wurde.object
s in Scala sind auch Module genannt, und Sie genießen auch die erste-Klasse-status.F#:
namespaces
in F# sind die gleichen wie C#namespace
s. Nebennamespace
s, F# hat auchmodules
die umgesetzt werden, auf CLR-Ebene .NET-Klassen mit statischen Methoden. Sie sind nicht first-class-entities.InformationsquelleAutor der Antwort missingfaktor
Scheint es, dass, wie die anderen Antworten Stand, ist der Begriff der Modul variiert von einer Sprache zur anderen, manche sogar ohne es (aber eine entsprechende Pendant).
Jedoch, es scheint, dass heutzutage Module ist mehr ein Konzept und bezieht sich auf einen Satz von Quellcode-Dateien, die geteilt werden können, unabhängig. Dieser definition folgend, Java jar Dateien sind keine Module enthalten bytecode kompilierten Dateien (.class-Dateien). Ein Modul-system die Einhaltung dieser definition ist eine Einführung in Java 9 (finden Sie in diesem Artikel) und ist vorhanden in anderen Sprachen, Modul oder Paket-Manager, die oft direkt Benennung der Module Pakete (Gehen lang/go-tool, Python/pip, PHP/Komponist...), wo Paket in der Regel sind Module verpackt.
InformationsquelleAutor der Antwort Josuah Aron
Paket ist eher ein C++ - namespace als ein Modul. Ein Modul ist eher an einer umschließenden Klasse als ein Paket.
InformationsquelleAutor der Antwort EJP