Definition und Zweck:
Ein Namespace (Namensraum) ist ein Programmierkonzept, das dazu dient, Namen von Variablen, Funktionen, Klassen oder anderen Programmobjekten in logische Gruppen zu organisieren, um Namenskonflikte zu vermeiden. Insbesondere in großen und komplexen Softwareprojekten, in denen Code von verschiedenen Entwicklern oder aus verschiedenen Bibliotheken stammt, ist es wahrscheinlich, dass identische Namen für unterschiedliche Zwecke verwendet werden.
Ein Namespace schafft einen isolierten Geltungsbereich für Namen. Ein Name, der in einem Namespace deklariert ist, ist von einem identischen Namen in einem anderen Namespace getrennt.
Beispiel:
Stellen Sie sich vor, Sie haben eine Funktion namens „StartMotor“ in zwei verschiedenen Bibliotheken. Ohne Namespaces würde es zu einem Namenskonflikt kommen. Mit Namespaces könnten Sie auf `BibliothekA.StartMotor()` und `BibliothekB.StartMotor()` zugreifen.
Relevanz in der SPS-Programmierung:
In modernen SPS-Programmiersprachen und -Umgebungen (z.B. in Strukturierter Text – ST, oder bei objektorientierten Konzepten) werden Namespaces verwendet, um:
- Namenskonflikte zu vermeiden: Wenn mehrere Funktionsbausteine oder Bibliotheken denselben Variablennamen oder Funktionsnamen verwenden.
- Code zu strukturieren: Verwandte Variablen und Funktionen können in logischen Namensräumen gruppiert werden, was die Übersichtlichkeit verbessert.
- Wiederverwendbarkeit zu fördern: Bibliotheken können einfacher in verschiedene Projekte integriert werden, ohne dass Namenskonflikte befürchtet werden müssen.
- Lesbarkeit: Macht den Code klarer, da die Herkunft einer Variable oder Funktion sofort erkennbar ist.
Hersteller wie Siemens (mit ihren Namespaces für Bibliotheken) oder CODESYS (mit der Organisation von Bausteinen) nutzen dieses Prinzip, um die Komplexität großer Projekte zu beherrschen.
Vorteile:
- Reduziert Namenskonflikte.
- Verbessert die Code-Organisation und -Struktur.
- Erhöht die Lesbarkeit und Wartbarkeit von Programmen.
- Erleichtert die Zusammenarbeit in Teams.
- Unterstützt die Entwicklung großer, komplexer Automatisierungsprojekte.
→ Siehe auch: Variable, Datentyp, Funktionsbaustein (FB), SPS-Programmierung, Bibliotheksverwaltung

