Namespace
Im Computer, a Namespace ist eine Reihe von Zeichen (Namen), die verwendet werden, um Objekte verschiedener Art zu identifizieren und zu beziehen. Ein Namespace sorgt dafür identifiziert.
Namespaces werden üblicherweise als Hierarchien strukturiert, um die Wiederverwendung von Namen in verschiedenen Kontexten zu ermöglichen. Betrachten Sie als Analogie ein System von Benennung von Menschen wo jede Person einen gegebenen Namen hat, sowie einen Familiennamen, der mit ihren Verwandten geteilt wird. Wenn die Vornamen der Familienmitglieder nur innerhalb jeder Familie eindeutig sind, kann jede Person durch die Kombination aus Vorname und Familienname eindeutig identifiziert werden. Es gibt nur einen Jane Doe, obwohl es viele Janes geben kann. Innerhalb des Namespace der DOE -Familie genügt nur "Jane", diese Person eindeutig zu bezeichnen, während der vollständige Name im "globalen" Namespace aller Menschen verwendet werden muss.
Prominente Beispiele für Namespaces umfassen Dateisysteme, die Dateien Namen zuweisen.[1] Etwas Programmiersprachen organisieren ihre Variablen und Unterroutinen in Namespaces.[2][3][4] Computernetzwerke und verteilte Systeme Ressourcen wie Computer, Drucker, Namen zuweisen, Websitesund Remotedateien. Betriebssysteme Kann Kernelressourcen durch isolierte Namespaces verteilt, um die Virtualisierung zu unterstützen Behälter.
Ähnlich, Hierarchische Dateisysteme Organisieren Sie Dateien in Verzeichnissen. Jedes Verzeichnis ist ein separater Namespace, so dass die Verzeichnisse "Buchstaben" und "Rechnungen" möglicherweise eine Datei "to_jane" enthalten.
Im ComputerprogrammierungNamespaces werden in der Regel zum Zweck der Gruppierung von Symbolen und Kennungen in Bezug auf eine bestimmte Funktionalität und zur Vermeidung verwendet Nennen Sie Kollisionen zwischen mehreren Kennungen, die denselben Namen teilen.
In der Vernetzung, die Domainnamensystem organisiert Websites (und andere Ressourcen) in Hierarchische Namespaces.
Nennen Sie Konflikte
Elementnamen werden vom Entwickler definiert. Dies führt häufig zu einem Konflikt beim Versuch, XML -Dokumente aus verschiedenen XML -Anwendungen zu mischen.
Dieser XML trägt HTML -Tabelle Information:
Äpfel Orangen
Dieser XML enthält Informationen über a Tisch (d. H. Ein Möbelstück):
Afrikanischer Couchtisch 80 120
Wenn diese XML -Fragmente zusammengefügt würden, würde es einen Namenskonflikt geben. Beide enthalten a
Element, aber die Elemente haben unterschiedliche Inhalte und Bedeutung....
Ein XML -Parser wird nicht wissen, wie man mit diesen Unterschieden umgeht.
Lösung über Präfix
Name Konflikte in XML können mit einem Namenspräfix leicht vermieden werden.
Der folgende XML unterscheidet zwischen Informationen über die HTML -Tabelle und Möbel, indem "H" und "F" zu Beginn der Elemente vorangestellt wird.
Äpfel Orangen Afrikanischer Couchtisch 80 120
Benennungssystem
Ein Name in einem Namespace besteht aus einem Namespace -Namen und einem lokalen Namen.[5][6] Der Namespace -Name wird normalerweise als angewendet Präfix zum lokalen Namen.
Im Augmented Backus -Naur -Form:
Name = <Namespace Name> Separator <Lokaler Name>
Wenn lokale Namen von sich selbst verwendet werden, Namensauflösung wird verwendet, um zu entscheiden, auf welchen (falls vorhanden) ein bestimmter Name durch einen bestimmten lokalen Namen angedeutet wird.
Beispiele
Kontext | Name | Namespace -Name | Lokaler Name |
---|---|---|---|
Weg | /home/user/readme.txt | /Home/Benutzer (Verzeichnis) | Readme.txt (Dateiname) |
Domainname | www.example.com | Beispiel.com (Domain -Name) | www (Leaf -Domain -Name) |
C ++ | std :: Array | STD (C ++ Namespace) | Array (Struktur) |
UN/Locode | US NYC | USA (Land oder Territorium) | NYC (Ort) |
Xml | xmlns: xhtml = "http://www.w3.org/1999/xhtml" | XHTML (zuvor deklarierter XML -Namespace xhtml = "http://www.w3.org/1999/xhtml")) | Körper (Element) |
Perl | $ Dbi :: erstr | $ Dbi (Perl -Modul) | Erstr (Variable) |
Java | java.util.date | Java.util (Java -Namespace) | Datum (Klasse) |
Einheitlicher Ressourcenname (URNE) | URN: NBN: FI-FE19991055 | Urne: NBN (Nationale Bibliographiezahlen) | FI-FE19991055 |
System handhaben | 10.1000/182 | 10 (Behörde für die Namensbehörde) | 1000/182 (lokaler Namen verarbeiten) |
Digital Objektkennung | 10.1000/182 | 10.1000 (Verlag) | 182 (Veröffentlichung) |
MAC-Adresse | 01-23-45-67-89-AB | 01-23-45 (organisatorisch eindeutige Kennung) | 67-89-AB (NIC-spezifische) |
PCI -ID | 1234 ABCD | 1234 (Lieferanten -ID) | ABCD (Geräte -ID) |
USB VID/PID | 2341 003f[7] | 2341 (Lieferanten -ID) | 003F (Produkt -ID) |
Sparql | DBR: Sydney | DBR (zuvor deklarierte Ontologie, z. B. durch Angabe @prefix DBR: <http://dbpedia.org/resource/>)) | Sydney |
Delegation
Die Delegation der Verantwortlichkeiten zwischen Parteien ist in realen Anwendungen wie der Struktur des World Wide Web wichtig. Die Namespaces ermöglichen die Delegation der Identifikatorzuweisung an mehrere Namensgüter, die Organisationen ausstellen und gleichzeitig die globale Einzigartigkeit beibehalten.[8] Ein zentraler Registrierungsbehörde registriert die Zugewiesene Namespace -Namen zugewiesen. Jeder Namespace -Name wird einer Organisation zugeordnet, die anschließend für die Zuordnung von Namen in ihrem zugewiesenen Namespace verantwortlich ist. Diese Organisation kann ein Name sein, der eine Organisation ausstellt, die Weisen Sie die Namen zu sich selbst oder ein anderer Registrierungsbehörde die weitere Teile ihres Namespace an verschiedene Organisationen delegiert.
Hierarchie
Ein Namensschema, das die Subdelegation von Namespaces an Dritte ermöglicht, ist a Hierarchischer Namespace.
Eine Hierarchie ist rekursiv, wenn die Syntax für die Namespace -Namen für jede Unterverdauerung gleich ist. Ein Beispiel für eine rekursive Hierarchie ist die Domainnamensystem.
Ein Beispiel für eine nicht rezisive Hierarchie sind Einheitlicher Ressourcenname repräsentieren an Internet zugewiesene Zahlen Autorität (IANA) Nummer.
Registrierung | Registrator | Beispielkennung | Namespace -Name | Namespace |
---|---|---|---|---|
Einheitlicher Ressourcenname (URNE) | Internet zugewiesene Zahlen Autorität | URN: ISBN: 978-3-16-148410-0 | Urne | Formeller Urn -Namespace |
Formeller Urn -Namespace | Internet zugewiesene Zahlen Autorität | URN: ISBN: 978-3-16-148410-0 | ISBN | Internationale Standardbuchnummern als einheitliche Ressourcennamen |
Internationale Artikelnummer (EAN) | GS1 | 978-3-16-148410-0 | 978 | Buchland |
Internationale Standardbuchnummer (ISBN) | Internationale ISBN -Agentur | 3-16-148410-x | 3 | deutschsprachige Länder |
Deutscher Verlagscode | Agentur für BuchmarktStandards | 3-16-148410-x | 16 | Mohr Siebeck |
Namespace gegen Scope
Ein Namespace -Name kann einen Kontext liefern (Umfang in Informatik) zu einem Namen, und die Begriffe werden manchmal austauschbar verwendet. Der Kontext eines Namens kann jedoch auch durch andere Faktoren bereitgestellt werden, wie z. B. der Ort, an dem er auftritt, oder die Syntax des Namens.
Ohne Namespace | Mit einem Namespace | |
---|---|---|
Lokaler Bereich | Fahrzeugregistrierungsplatte | Dateisystem Hierarchie Standard |
Globaler Umfang | Universell eindeutige Kennung | Domainnamensystem |
In Programmiersprachen
Für viele Programmiersprachen ist der Namespace ein Kontext für ihre Kennungen. In einem Betriebssystem ist ein Beispiel für den Namespace ein Verzeichnis. Jeder Name in einem Verzeichnis identifiziert eindeutig eine Datei oder einen Unterverzeichnis.[9]
In der Regel können Namen in einem Namespace nicht mehr als eine Bedeutung haben; Das heißt, verschiedene Bedeutungen können denselben Namen nicht im gleichen Namenspace teilen. Ein Namespace wird auch als a genannt KontextDa der gleiche Name in verschiedenen Namespaces unterschiedliche Bedeutungen haben kann, werden jeweils für seinen Namespace geeignet.
Im Folgenden finden Sie weitere Merkmale von Namespaces:
- Namen im Namespace können sowohl Objekte als auch darstellen Konzepte, sei der Namespace a natürliche oder ethnische Sprache, a konstruierte Sprache, das Fachsprache eines Berufs, a Dialekt, a Soziolektoder eine künstliche Sprache (z. B. a Programmiersprache).
- In dem Java -Programmiersprache, Identifikatoren, die in Namespaces erscheinen, haben einen kurzen (lokalen) Namen und einen eindeutigen langen "qualifizierten" Namen für die Verwendung außerhalb des Namespace.
- Einige Compiler (für Sprachen wie wie C ++) Kombinieren Sie Namespaces und Namen für den internen Gebrauch im Compiler in einem Prozess genannt Nennen Sie Mangling.
Neben der oben beschriebenen abstrakten Sprachnutzung verfügen einige Sprachen unter anderem über ein bestimmtes Schlüsselwort, das für die explizite Namespace -Kontrolle verwendet wird. Unten finden Sie ein Beispiel für einen Namespace in C ++:
#enthalten // So bringt man einen Namen in den aktuellen Bereich. In diesem Fall ist es // sie in den globalen Umfang bringen. Verwendung std::Cout; Verwendung std::Endl; Namespace Box1 { int Box_side = 4; } Namespace Box2 { int Box_side = 12; } int hauptsächlich() { int Box_side = 42; Cout << Box1::Box_side << Endl; // Ausgänge 4. Cout << Box2::Box_side << Endl; // Ausgänge 12. Cout << Box_side << Endl; // Ausgänge 42. }
Überlegungen zur Computerwissenschaft
Ein Namespace in Informatik (manchmal auch als a genannt Namensumfang) ist ein abstrakter Container oder eine Umgebung, die für eine logische Gruppierung von Unique erstellt wurde Kennungen oder Symbole (d. h. Namen). Ein in einem Namespace definierter Bezeichner ist nur mit diesem Namespace zugeordnet. Die gleiche Kennung kann unabhängig in mehreren Namespaces definiert werden. Das heißt, eine in einem Namespace definierte Kennung kann dieselbe Bedeutung haben oder nicht wie dieselbe Kennung, die in einem anderen Namespace definiert ist. Sprachen, die Namespaces unterstützen, geben die Regeln an, die bestimmen, zu welchem Namespace eine Kennung (nicht seine Definition) gehört.[10]
Dieses Konzept kann mit einer Analogie dargestellt werden. Stellen Sie sich vor, dass zwei Unternehmen, X und Y, jeweils ID -Nummern ihren Mitarbeitern zuweisen. X sollte nicht zwei Mitarbeiter mit der gleichen ID -Nummer und ebenfalls für y haben; Es ist jedoch kein Problem, dass dieselbe ID -Nummer bei beiden Unternehmen verwendet wird. Wenn Bill beispielsweise für Unternehmen X und Jane für Unternehmen Y arbeitet, ist es für jeden von ihnen kein Problem, Mitarbeiter Nr. 123 zu sein. In dieser Analogie ist die ID -Nummer die Kennung und das Unternehmen dient als Namespace. Es verursacht keine Probleme für denselben Kennung, eine andere Person in jedem Namespace zu identifizieren.
In großen Computerprogramme oder Dokumente Es ist üblich, Hunderte oder Tausende von Kennungen zu haben. Namespaces (oder eine ähnliche Technik, siehe Namenspaces emulieren) Bieten Sie einen Mechanismus zum Verstecken lokaler Kennungen. Sie bieten ein Mittel, um logisch verwandte Kennungen in entsprechende Namespaces zu gruppieren, wodurch das System mehr wird modular.
Datenspeichergeräte und viele modern Programmiersprachen Namenspaces unterstützen. Speichergeräte verwenden Verzeichnisse (oder Ordner) als Namespaces. Auf diese Weise können zwei Dateien mit demselben Namen auf dem Gerät gespeichert werden, solange sie in verschiedenen Verzeichnissen gespeichert werden. In einigen Programmiersprachen (z. C ++, Python), Die Kennungen, die Namenspaces benennen, sind selbst mit einem umschließenden Namespace verbunden. Somit können in diesen Sprachen Namespaces nisten und einen Namespace bilden Baum. An der Wurzel dieses Baumes steht der Unbenannte globaler Namespace.
Verwendung in gemeinsamen Sprachen
C
Es ist möglich, anonyme Strukturen als Namespaces in zu verwenden C seit C99.
// Helper.c statisch int _hinzufügen(int a, int b) { Rückkehr a + b; } Const Struktur { doppelt Pi; int (*hinzufügen) (int, int); } Helfer = { 3.14, _hinzufügen }; // Helper.h Const Struktur { doppelt Pi; int (*hinzufügen) (int, int); } Helfer; // Haupt c #enthalten #enthalten "Helper.h" int hauptsächlich() { printf("3 + 2 = %d\n", Helfer.hinzufügen(3, 2)); printf("pi ist %f\n", Helfer.Pi); }
C ++
Im C ++Ein Namespace wird mit einem Namespace -Block definiert.[11]
Namespace ABC { int Bar; }
Innerhalb dieses Blocks können Identifikatoren genau so verwendet werden, wie sie deklariert werden. Außerhalb dieses Blocks muss der Namespace -Spezifizierer vorangestellt werden. Zum Beispiel außerhalb von Namespace ABC
, Bar
muss geschrieben werden ABC :: Bar
zugegriffen werden. C ++ enthält ein anderes Konstrukt, das diese Ausführlichkeit unnötig macht. Durch Hinzufügen der Linie
Verwendung Namespace ABC;
zu einem Stück Code das Präfix ABC::
wird nicht mehr benötigt.
Identifikatoren, die in einem Namespace nicht explizit deklariert werden, gelten als im globalen Namespace.
int Foo;
Diese Kennungen können genau so verwendet werden, wie sie deklariert werden, oder, da der globale Namespace unbenannt ist, der Namespace -Spezifizierer ::
kann vorangestellt werden. Zum Beispiel, Foo
kann auch geschrieben werden :: Foo
.
Die Namespace -Auflösung in C ++ ist hierarchisch. Dies bedeutet, dass innerhalb des hypothetischen Namespace Essen :: Suppe
, die Kennung Hähnchen
bezieht sich auf Essen :: Suppe :: Hühnchen
. Wenn Essen :: Suppe :: Hühnchen
existiert nicht, es bezieht sich dann darauf Essen :: Hühnchen
. Wenn weder Essen :: Suppe :: Hühnchen
Noch Essen :: Hühnchen
existieren, Hähnchen
bezieht sich auf ::Hähnchen
, eine Kennung im globalen Namespace.
Namespaces in C ++ werden am häufigsten verwendet, um zu vermeiden Benennung von Kollisionen. Obwohl Namespaces im jüngsten C ++ - Code ausgiebig verwendet werden, verwendet die meisten älteren Code diese Einrichtung nicht, da er in frühen Sprachversionen nicht existierte. Zum Beispiel das gesamte C ++ Standardbibliothek ist innerhalb des Innens definiert Namespace std
Aber vor der Standardisierung befanden sich viele Komponenten ursprünglich im globalen Namespace. Ein Programmierer kann die einfügen Verwendung
Richtlinie zur Umgehung der Namespace -Auflösung und die Rückwärtskompatibilität mit älterem Code, der erwartet, dass alle Kennungen im globalen Namespace liegen. Allerdings die Verwendung der Verwendung
Richtlinie aus anderen Gründen als Rückwärtskompatibilität (z. B. Bequemlichkeit) gilt als gegen gute Codepraktiken.
Java
Im JavaDie Idee eines Namespace ist in verkörpert Java -Pakete. Der gesamte Code gehört zu einem Paket, obwohl dieses Paket nicht explizit benannt werden muss. Der Code aus anderen Paketen wird zugegriffen, indem der Paketname beispielsweise vor dem entsprechenden Kennung vorangestellt wird Klassenzeichenfolge
in Paket Java.lang
kann als bezeichnet werden Java.lang.String
(Dies ist als die bekannt Vollqualifizierter Klassenname). Wie C ++ bietet Java ein Konstrukt an, das es unnötig macht, den Paketnamen (importieren
). Bestimmte Merkmale (wie z. Betrachtung) Erfordern der Programmierer, den voll qualifizierten Namen zu verwenden.
Im Gegensatz zu C ++ sind die Namespaces in Java nicht hierarchisch, was die Syntax der Sprache betrifft. Pakete werden jedoch hierarchische Weise benannt. Zum Beispiel alle Pakete beginnen mit Java
sind ein Teil der Java -Plattform- Das Paket Java.lang
Enthält Klassenkern der Sprache und enthält und java.lang.reflect
Enthält Kernklassen, die sich speziell auf die Reflexion beziehen.
In Java (und Ada, C#und andere), Namespaces/Pakete exprimieren semantische Codekategorien. Zum Beispiel in C#,, Namespace -System
Enthält Code, das vom System bereitgestellt wurde (das .NET Framework). Wie spezifisch diese Kategorien sind und wie tief die Hierarchien von Sprache zu Sprache unterscheiden.
Funktion und Klasse Bereiche kann als implizite Namespaces angesehen werden, die untrennbar mit Sichtbarkeit, Zugänglichkeit und verbunden sind Objektlebensdauer.
C#
Namespaces werden stark in C# Sprache verwendet. Alle .NET -Framework -Klassen sind in Namespaces organisiert, um klarer verwendet zu werden und Chaos zu vermeiden. Darüber hinaus werden benutzerdefinierte Namespaces von Programmierern ausgiebig verwendet, um ihre Arbeit zu organisieren und zu vermeiden Benennung von Kollisionen. Bei Bezug auf eine Klasse sollte man entweder ihren voll qualifizierten Namen angeben, was den Namespace gefolgt vom Klassennamen.
System.Konsole.Schreiben("Hallo Welt!"); int i = System.Konvertieren.Toint32("123");
oder fügen Sie a hinzu Verwendung Aussage. Dies beseitigt die Notwendigkeit, den vollständigen Namen aller Klassen in diesem Namespace zu erwähnen.
Verwendung System; Konsole.Schreiben("Hallo Welt!"); int i = Konvertieren.Toint32("123");
In den obigen Beispielen,, System ist ein Namespace und Konsole und Konvertieren sind Klassen innerhalb definiert innerhalb System.
Python
Im Python, Namespaces werden durch die einzelnen Module definiert, und da Module in hierarchischen Paketen enthalten sein können, sind die Namespaces auch hierarchisch.[12][13] Im Allgemeinen, wenn ein Modul importiert wird, werden die im Modul definierten Namen über den Namespace dieses Moduls definiert und werden mit dem voll qualifizierten Namen aus den aufrufenden Modulen zugegriffen.
# Angenommen, Modulea definiert zwei Funktionen: func1 () und func2 () und eine Klasse: Klasse1 importieren Modulea Modulea.func1() Modulea.func2() a = Modulea.Klasse 1()
Das von ... Import ...
Die Anweisung kann verwendet werden, um die relevanten Namen direkt in den Namespace des Aufrufmoduls einzufügen. Ohne den qualifizierten Namen kann diese Namen aus dem aufrufenden Modul zugegriffen werden:
# Angenommen, Modulea definiert zwei Funktionen: func1 () und func2 () und eine Klasse: Klasse1 aus Modulea importieren func1 func1() func2() # Dies wird als undefinierter Name fehlschlagen, ebenso wie der vollständige Name modulea.func2 () a = Klasse 1() # Dies wird als undefinierter Name fehlschlagen, ebenso wie der vollständige Name modulea.class1 ()
Da dies direkt Namen (ohne Qualifikation) importiert, kann es vorhandene Namen ohne Warnungen überschreiben.
Eine besondere Form der Aussage ist von ... import *
Welche Namen importiert alle in dem benannten Paket direkt im Namespace des Aufrufmoduls. Die Verwendung dieser Importform, obwohl sie innerhalb der Sprache unterstützt wird, wird im Allgemeinen entmutigt, da sie den Namespace des aufrufenden Moduls verschmutzt und bereits definierte Namen bei Namensklagen überschrieben werden.[14]
Python unterstützt auch import x as y
Um einen Alias oder einen alternativen Namen für die Verwendung des Aufrufmoduls anzugeben:
importieren Numpy wie np a = np.Arange(1000)
XML -Namespace
Im XmlDie XML -Namespace -Spezifikation ermöglicht die Namen von Elementen und Attributen in einem XML -Dokument, ähnlich der Rolle von Namespaces in Programmiersprachen. Mithilfe von XML -Namespaces können XML -Dokumente Element- oder Attributnamen aus mehr als einem XML -Vokabular enthalten.
Php
Namespaces wurden in eingeführt Php ab Version 5.3 ab. Die Benennung der Kollision von Klassen, Funktionen und Variablen kann vermieden werden. Im PhpEin Namespace wird mit einem Namespace -Block definiert.
# Datei phpstar/foobar.php Namespace Phpstar; Klasse Foobar { Öffentlichkeit Funktion Foo(): Leere { Echo "Hallo Welt, von Funktion Foo"; } Öffentlichkeit Funktion Bar(): Leere { Echo "Hallo Welt, aus Funktionsleiste"; } }
Wir können auf einen Php -Namespace mit den folgenden verschiedenen Arten verweisen:
# Datei index.php # Die Datei eingeben enthalten "phpstar/foobar.php"; # Option 1: Direkt den Klassennamen mit dem Namespace direkt vorfixieren $ obj_foobar = Neu \ phpstar \ foobar(); # Option 2: Importieren Sie den Namespace verwenden phpstar \ foobar; $ obj_foobar = Neu Foobar(); # Option 2A: Import & Alias den Namespace verwenden phpstar \ foobar wie FB; $ obj_foobar = Neu FB(); # Zugang zu den Eigenschaften und Methoden mit regelmäßiger Weise $ obj_foobar->Foo(); $ obj_foobar->Bar();
Namenspaces emulieren
In Programmiersprachen ohne Sprachunterstützung für Namespaces können Namespaces in gewissem Maße durch Verwendung eines emuliert werden Identifikator -Namenskonvention. Zum Beispiel, C Bibliotheken wie libpng Verwenden Sie häufig ein festes Präfix für alle Funktionen und Variablen, die Teil ihrer exponierten Schnittstelle sind. Libpng enthält Identifikatoren wie:
png_create_write_struct png_get_signature png_read_row png_set_invalid
Dies Namenskonvention liefert eine angemessene Gewissheit, dass die Kennungen sind einzigartig und können daher in größeren Programmen ohne verwendet werden Benennung von Kollisionen.[15] Ebenso viele Pakete ursprünglich geschrieben in Forran (z.B., Blas, Lapack) Reservieren Sie die ersten Briefe des Namens einer Funktion, um anzuzeigen, zu welcher Gruppe sie gehört.
Diese Technik hat mehrere Nachteile:
- Es skaliert nicht gut auf verschachtelte Namespaces. Identifikatoren werden zu übermäßig, seit alle Verwendungen der Kennungen sein müssen Voller Namespace-qualifiziert.
- Einzelpersonen oder Organisationen können inkonsistente Namenskonventionen verwenden und möglicherweise unerwünschte Verschleierung einführen.
- Verbindliche oder "abfragebasierte" Operationen auf Gruppen von Identifikatoren, basierend auf den Namespaces, in denen sie deklariert werden, werden unhandlich oder unbemerklich gemacht.
- In Sprachen mit eingeschränkter Bekennungslänge begrenzt die Verwendung von Präfixen die Anzahl der Zeichen, die verwendet werden können, um zu identifizieren, was die Funktion tut. Dies ist ein besonderes Problem für Pakete, die ursprünglich geschrieben wurden in Forran 77, die nur 6 Zeichen pro Kennung bot. Zum Beispiel der Name des Blas Funktion
DGEMM
Die Funktion gibt an, dass sie mit doppelten Präzisionsnummern ("D") und allgemeinen Matrizen ("GE") arbeitet, und nur die letzten beiden Zeichen zeigen, was sie tatsächlich tut: Matrix-Matrix-Multiplikation ("MM").
Es gibt mehrere Vorteile:
- Um Namen in Quellcode-Dateien zu finden, sind keine speziellen Softwaretools erforderlich. Ein einfaches Programm wie Grep reicht aus.
- Es gibt keinen Namespace -Namenskonflikte.
- Es besteht keine Notwendigkeit eines Namens und daher keine potenziellen Inkompatibilitätsprobleme.
Siehe auch
- 11-stellig Lieferort PLZ
- Binomischen Nomenklatur (Gattungspunkte in Biologie)
- Chemische Nomenklatur
- Dewey -Dezimalklassifizierung
- Digital Objektkennung
- Domainnamensystem
- Identität (objektorientierte Programmierung)
- Klassifizierung der Bibliothek des Kongresses
- Sternkataloge und astronomische Namenskonventionen
- XML -Namespace
- Argumentabhängige Namensuche
Verweise
- ^ Adya, Atul; Bolosky, William; Castro, Miguel; Cermak, Gerald; Chaiken, Ronnie; Douceur, John; Howell, Jon; Lorch, Jacob; Theimer, Marvin; Witttenhofer, Roger (2002). FarSite: Föderierte, verfügbare und zuverlässige Speicher für eine unvollständig vertrauenswürdige Umgebung (PDF). Proc. Usenix Symp. Über Betriebssystemdesign und -implementierung. Archiviert von das Original (PDF) Am 2010-07-28.
Das von einem Dateisystem festgelegte primäre Konstrukt ist ein hierarchischer Namespace, der das logische Repository für Dateien ist.
- ^ "C# FAQ: Was ist ein Namespace". C# Online -Netz. Archiviert von das Original Am 2013-10-20. Abgerufen 2010-02-23.
Ein Namespace ist nichts anderes als eine Gruppe von Versammlungen, Klassen oder Typen. Ein Namespace fungiert als Container - wie ein Festplattenordner - für Klassen, die in Gruppen organisiert sind, die normalerweise auf Funktionen basieren. C# Namespace -Syntax ermöglicht die Verschachtelung der Namespaces.
- ^ "Ein Überblick über Namespaces in PHP". PHP -Handbuch.
Was sind Namespaces? In der breitesten Definition sind Namespaces eine Möglichkeit, Elemente zu verkörpern. Dies kann an vielen Stellen als abstraktes Konzept angesehen werden. In allen Betriebssystemverzeichnissen dienen beispielsweise gruppenbezogene Dateien und fungieren als Namespace für die darin enthaltenen Dateien.
- ^ "Erstellen und Verwenden von Paketen". Java -Dokumentation. Orakel.
Ein Paket ist eine Gruppierung verwandter Typen, die Zugriffsschutz und Namensraummanagement bieten. Beachten Sie, dass sich Typen auf Klassen, Schnittstellen, Aufzählungen und Annotationstypen beziehen. Aufzählungen und Annotationstypen sind spezielle Arten von Klassen bzw. Schnittstellen, sodass in dieser Lektion häufig Typen einfach als Klassen und Schnittstellen bezeichnet werden.
- ^ XML Core Working Group (8. Dezember 2009). "Namespaces in XML 1.0 (dritte Ausgabe)". W3c. Abgerufen 2012-03-30.
- ^ Moats, Ryan (Mai 1997). "Syntax". Urnensyntax. Ietf. p. 1 Sek. 2. doi:10.17487/rfc2141. RFC 2141. Abgerufen 2012-03-30.
- ^ Stephen J. Gowdy."Liste der USB -IDs". 2013.
- ^ Sollins & Massinter (Dezember 1994). "Anforderungen für funktionale Funktionen". Funktionale Anforderungen für einheitliche Ressourcennamen. Ietf. p. 3. Sek. 2. doi:10.17487/rfc1731. RFC 1731. Abgerufen 2012-03-30.
- ^ "C# FAQ: Was ist ein Namespace". C# Online -Netz. Archiviert von das Original am 20. Oktober 2013. Abgerufen 2010-02-23.
Zum Beispiel [unter Fenster] Verwenden Sie den system.IO-Namespace, um auf die Klassen und Mitglieder des integrierten Eingangs-Outputs (E/A) zuzugreifen. Wenn Sie auf Webklassen und Mitglieder zugreifen, verwenden Sie den Namespace des Systems.web.
- ^ "Ein Namespace ist" eine logische Gruppierung der in einem Programm verwendeten Namen ".". Webopedia.com. 10. April 2002. Abgerufen 2011-07-26.
- ^ "Namespaces ermöglichen es, Entitäten wie Klassen, Objekte und Funktionen unter einem Namen zu gruppieren.". Cplusplus.com. Abgerufen 2011-07-26.
- ^ "6. Module". Das Python -Tutorial. Python Software Foundation. Abgerufen 25. Oktober 2010.
- ^ "Python Scopes und Namespaces". Docs.python.org. Abgerufen 2011-07-26.
- ^ https://docs.python.org/3/tutorial/modules.html "Im Allgemeinen wird die Praxis des Imports * aus einem Modul oder Paket verpönt."
- ^ Danny Kalev. "Warum ich Namespaces hasse". Archiviert vom Original am 2016-07-09.
{{}}
: CS1 Wartung: Bot: Original -URL -Status unbekannt (Link)