Glossar 📕
Erläuterung und Verknüpfung von Begriffen rund um Softwaretechnologie
Es ist für Anfänger nicht immer leicht den Überblick über all die relevanten (Fach-)begriffe zur Softwaretechnologie zu behalten. Genau das ist aber sehr wichtig für das Verständnis von Lehrveranstaltungen, Büchern, Dokumentationen etc.! Im Folgenden sind die wichtigsten (nicht Java-spezifischen!) Begriffe alphabetisch sortiert aufgelistet, kurz erläutert und miteinander verknüpft.
🚧 🐌 Dieses Verzeichnis wird wohl für immer work in progress sein!
⚠️ Achtung: Hier sind die Java-spezifischen Themen aus dem eigentlichen Java-Wegweiser nicht noch einmal aufgeführt. Es geht hier um allgemeine Software-Terminologie!
💬 In diesem Stichwort-Verzeichnis geht es außerdem nicht um ulkige Bezeichnungen für Dinge aus der Welt des Programmierens (schade!), sondern um allgemeine Begriffe, die zur Kommunikation über das Programmieren und Quelltext genutzt werden.
🌌 TODO:
...
, …
Legende
👉 Verweis auf einen anderen Begriff in diesem Verzeichnis
🔭 Verweis auf einen Artikel / Abschnitt im Java-Wegweiser
🔗 Verweis auf eine externe Ressource (meist Wikipedia)
Verzeichnis
A · Ä · B · C · D · E · F · G · H · I · J · K · L · M · N · O · Ö · P · Q · R · S · T · U · Ü · V · W · X · Y · Z
A
Abstraktion
Trennung von Konzept und Umsetzung (👉 Implementation).
Algorithmus
Abfolge von aufeinanderfolgenden Einzelschritten zur Lösung eines Problems; siehe auch 🔗 Algorithmus.
Anweisung
Siehe 👉 Statement (eng.) oder Instruktion (unüblich)
API
Kurz für Application Programming Interface (deu.: Anwendungsprogrammierschnittstelle). Eine Schnittstelle zur Anbindung an Anwendungen auf Quelltext-Ebene (nicht Binärcode). Siehe auch 🔗 Programmierschnittstelle.
Arbeitsspeicher
Der Speicher eines Computers, der die gerade laufenden Programme und verwendeten Daten enthält. Auch: Hauptspeicher bzw. eng. (main) memory oder RAM (Random Access Memory).
Argument
Siehe 👉 Parameter
Attribut
Ein einem Objekt zugeordnetes Merkmal bzw. Eigenschaft. Wird oft als anderes Wort für 👉 Instanszvariable genutzt.
Ausdruck
Eine Kombination aus Variablen, Literals, Konstanten, Operatoren und Rückgabewerten von Methoden. Ein Ausdruck ergibt als ganzes einen Wert. Z.B. hat der Ausdruck 2 < 9
den Wert true
und der Ausdruck (4 - Math.max(15, 46)) * ( 1 + 1 == 1 ? 1 : -1)
den Wert 42
.
Aussage
👉 Ausdruck mit einem 👉 Wahrheitswert, etwa 2 == 7
(hat üblicherweise den Wert false
). Auch: Englisch für 👉 Statement (aber als deutsche Entsprechung dafür eher unüblich im Programmier-Kontext).
Ä
…
B
Bezeichner
Von dem/der Programmierer*in frei (aber gut) gewählter Name für eine 🔭 Klasse, eine 🔭 Methode oder eine 🔭 Variable.
Bug
Fehler in einem Computerprogramm.
C
Code
Englisch für 👉 Quelltext; auch: Ein System zum Umwandeln von Informationen.
compile-time
(Zum) Zeitpunkt der Kompilierung des Quellcodes. Siehe zum Vergleich: 👉 run-time.
Compiler
Computerprogramm, das den Quelltext einer Programmiersprache in Maschinencode übersetzt, der von einem Computer ausgeführt werden kann. Im Falle von Java ist das 🔭 Bytecode, der von der 🔭 JVM ausgeführt werden kann. Siehe auch: 🔗 Compiler.
Control flow
Englisch für 👉 Kontrollfluss.
CPU
Central Processing Unit. Siehe auch 🔗 Prozessor
D
Datenklasse
Eine Klasse ohne eigene Logik / Funktionalität. Für gewöhnlich umfasst eine Datenklasse nur 👉Instanzvariablen und ggf. 🔭 Getter und Setter. Auch: POJO.
Datenstrom
Fortlaufender “Fluss” von Daten, der geschrieben, gelesen, umgelenkt und be-/verarbeitet werden kann. Datensätze in einem Datenstrom werden einer nach dem anderen verarbeitet - es ist kein freier Zugriff auf beliebige Datensätze möglich. Eng.: (data)stream. Siehe auch 👉 Standard-Datenströme und 🔗 Datenstrom.
Datenstruktur
Objekt zur Speicherung und Verwaltung von Daten bzw. Referenzen auf Daten oder weitere Objekte. Siehe auch 🔗 hier und 🔭 hier.
Datentyp
Siehe 🔭 Datentypen.
Debugger
Eine Software (oft eine Komponente einer 👉 IDE), die als Werkzeug für das 👉 Debugging verwendet wird.
Debugging
Das Auffinden und Beheben von 👉 Bugs. Dazu kann ein 👉 Debugger genutzt werden, muss aber nicht. Siehe auch 🔗hier.
Deklaration
Die Deklaration einer 🔭 articles/Variable besteht aus der Angabe ihres 🔭 Datentyps und ihres Namens (Variablenname), etwa int thisIsAnInteger
.
Deployment
Der Vorgang des Installierens einer Software auf dem Zielsystem. Auch: Auslieferung oder 🔗 Softwareverteilung.
Design Pattern
Englisch für 👉 Entwurfsmuster.
E
Endlosschleife
🔭 Schleife oder 🔭 Rekursion, die durch fehlende oder nicht erreichbare Abbruchbedingung (oder immer wahre Ausführungsbedingung) nie beendet wird und letztendlich zu einem Programmabsturz führt. Siehe auch 🔗 Endlosschleife.
Entwurfsmuster
Wiederverwendbare, bewährte (Architektur-)Vorlagen zur Lösung üblicher Probleme. Siehe auch 🔗 Entwurfsmuster.
Exit-Code
Auch: Exit-Status, Return Code oder Rückgabestatus. Ein numerischer Wert, den ein Programm zurückgibt, wenn es sich beendet (oder beendet wird). Dabei steht 0
üblicherweise für ein reguläres (fehlerfreies) Programm-Ende, andere Werte für unterschiedliche Programm-Abbrüche durch Fehler. Siehe auch 🔗 Return Code
Expression
Englisch für 👉 Ausdruck.
F
Funktion
Ein 👉 Code-Block, der über einen Namen (👉 Bezeichner) angesprochen und ausgeführt werden kann. Es ist ggf. möglich/nötig, der Funktion 👉 Parameter zu übergeben. Außerdem können Funktionen am Ende ihrer Ausführung Daten 🔗 zurückgeben. Siehe auch: 🔭 Methode.
G
Getter
Siehe 🔭 Getter und Setter.
GUI
Graphical User Interface (deu.: grafische Benutzeroberfläche); eine grafische, nicht 👉 Kommandozeilen-basierte Benutzerschnittstelle eines Programmes.
Gültigkeitsbereich
Der Gültigkeitsbereich eines 👉 Bezeichners (Methodenname, Variablenname, etc.) ist der Bereich im 👉 Quelltext, von dem aus der Zugriff auf diesen Bezeichner möglich ist; auch: 👉 Scope.
H
Hard Coding
Das Verwenden von expliziten Werten (mittels 👉 Literals) direkt im Quelltext. Von Hard Coding (auch: etwas ist hard-coded) sprcht man etwa, wenn der Pfad zu einer Datei, die Zugangsdaten zu einer Datenbank o.ä. direkt in den Quelltext geschrieben werden statt sie z.B: aus einer Konfigurationsdatei zu laden, sie von User abzufragen oder aus einer sonstigen externen Quelle abzuleiten. Siehe auch: 🔗 Hard Coding.
Hauptspeicher
Siehe 👉 Arbeitsspeicher.
high-level
Sich auf einer hohen (👉 Abstraktions-)Ebene befindend. Beschreibt z.B. Code, der durch die Verwendung einer entsprechenden 👉 Programmbibliothek, die technische Details 👉 kapselt, sehr einfach lesbar und semantisch verständlich ist. Gegenteil von 👉 low-level.
I
IDE
Integrated Development Environment (dt.: Integrierte Entwicklungsumgebung). Siehe auch 🔭 Eclipse IDE.
Implementierung
Das Umsetzen (oder “Einbauen”) eines geplanten Konzeptes oder einer Spezifikation als Software (also in Quellcode). Beispiel: Implementieren eines 👉 Interfaces oder eines neuen Programm-Features. Siehe auch 🔗 Implementierung.
Index
Ein 🔭 Integer größer oder gleich 0
, der auf ein Element in einem 🔭 Array oder einer ähnlichen linearen 🔭 Datenstruktur verweist; auch: Eine 🔗 spezielle Datenstruktur zur Nutzung in einer Suchmaschine.
Instanz
Siehe 🔭 OOP-Einführung bzw. 🔭 Klassen und Objekte.
Instanzvariable
Siehe 🔭 Arten von Variablen.
Instruktion
👉 Statement oder Anweisung; englisch.: instruction.
Interface
Englisch für 👉 Schnittstelle. Im Kontext von OOP siehe auch 🔭 Interfaces.
J
…
K
Kapselung
Verbergen von Daten, Informationen oder Programmlogik vor (ungeregeltem) Zugriff von “außen”. Auch wichtiges Mittel zur Erstellung von aufgeräumtem, wartbarem Quellcode. Siehe auch 🔗 Datenkapselung (Programmierung) und (speziell mit Bezug auf 🔭 OOP) 🔗 Datenkapselung im objektorientierten Paradigma.
Klasse
Siehe 🔭 OOP-Einführung bzw. 🔭 Klassen und Objekte.
Klassenvariable
Siehe 🔭 Arten von Variablen.
Kommandozeile
Komplexität
Konzept zur Abschätzung des Ressourcenaufwandes zur 👉 algorithmischen Behandlung bestimmter Probleme. — 🔗 Wikipedia
Konsole
Kontrollfluss
Die Steuerung des Ablaufs eine Programmes. Für den Kontrollfluss werden 🔭 Konditionale und 🔭 Schleifen genutzt, die das Programm abhängig von festgelegten 👉 Bedingungen steuern.
L
Laufzeit
(1.) Zeitraum, in dem ein Programm läuft bzw. ausgeführt wird; (2.) 👉 Performanz eines 👉 Algorithmus oder sonstigen Programmteils. Siehe auch 🔗 Laufzeit (Informatik).
Library
Kurz und Englisch für 👉 Programmbibliothek.
Listener
Begriff aus dem Kontext des 🔗 Listener - 👉 Entwurfsmusters, der ein Objekt beschreibt, das auf bestimmte Ereignisse reagiert.
Literal
Ausdruck, der zur direkten Darstellung eines Wertes (numerischer Wert, String, Array, …) genutzt wird. Mit Literals werden Werte 👉 “hard coded” in den Quelltext geschrieben. Siehe auch: 🔗 Literal.
Lokale Variable
Siehe 🔭 Arten von Variablen.
low-level
Sich auf einer niedrigen (👉 Abstraktions-) Ebene befindend. Beschreibt z.B. Code, der ohne den Einsatz von Frameworks o.ä. arbeitet oder maschinennahe Programme wie Treiber. Gegenteil von 👉 high-level.
M
Member
Englisch für Mitglied; Überbegriff für 👉 Attribute und 👉 Methoden einer 👉 Klasse.
Memory
Meist kurz für main memory (Englisch für 👉 Arbeitsspeicher).
Methode
Eine 👉 Funktion, die ein 👉 Member einer 👉 Klasse ist. Siehe auch: 🔭 Methoden.
Multiprocessing
👉 Multitasking auf mehreren 🔗 CPUs.
Multitasking
Die Fähigkeit einer einzelnen 🔗 CPU, mehr als eine Aufgabe gleichzeitig zu bearbeiten. Dies funktioniert, indem das Betriebssystem verschiedenen Tasks nach und nach Rechenzeit zuteilt.
Multithreading
Das Ausführen mehrerer 👉 Threads in einem 👉 Prozess.
N
Nullwert
Auch NULL oder NIL. Ein Zustandswert, der die Abwesenheit eines Wertes kennzeichnet. Es wird mit diesem Wert also ausgedrückt, dass kein Wert vorhanden ist. In Java: null
.
O
Objekt
Eine 👉 Instanz einer 🔭 Klasse; siehe auch 🔭 Klassen und Objekte.
Objekt-Gleichheit
Die Gleichheit (eng. equality) zweier 👉 Objekte ist gegeben, wenn diese sich in Hinsicht auf alle (oder bestimmte festgelegte) 👉 Eigenschaften gleichen.
Objekt-Identität
Die Identität (eng. identity) zweier 👉 Objekte ist gegeben, wenn diese überhaupt nicht zwei Objekte sind, sondern nur eines. Und zwar das selbe (an der selben Stelle im 👉 Arbeitsspeicher).
Operation
Verarbeitungsschritt in einem Software-Programm. Siehe auch 🔗Operation.
Ö
…
P
Parameter
Bei der Ausführung an ein Programm oder eine 🔭 Methode übergebene Daten; auch: 👉 Argument.
Performance
Englisch für 👉 Performanz.
Performanz
Eigenschaft eines Programmes oder Programmteils, viel oder wenig Rechenzeit in Anspruch zu nehmen (seltener benutzt im Kontext von Speicherbedarf). Siehe auch 👉 teuer.
POJO
Plain Old Java Object - oft umgangssprachlich für eine 👉 Datenklasse in Java.
Polymorphie
Konzept in der objektorientierten Programmierung: Ein 👉 Bezeichner (🔭 Variable) kann Objekte unterschiedlichen 👉 Datentyps referenzieren. Dabei hat der Bezeichner einen gleichen oder höherwertigen Datentyp, als das referenzierte Objekt. Beispiel: SpecialUser su = new SpecialUser(); User u = su;
Siehe auch 🔗 Polymorphie.
Programmbibliothek
Sammlung von Programmbestandteilen, die in anderen Programmen verwendet werden können. Dies geschieht über die Benutzung der 👉 API der entsprechenden Bibliothek. Siehe auch 🔗 Programmbibliothek.
Prozess
Ein laufendes Programm im Kontext eines Computersystems. Siehe auch: 👉 Thread.
Q
Quelltext
Das, was ein/e Programmierer*in schreibt, um eine Software zu programmieren; auch: 👉 Code.
R
Race Condition
Ursache für sehr schwer auffindbare 👉 Bugs. Entsteht, wenn das Ergebnis einer 👉 Operation vom zeitlichen Ablauf zweier einzelner anderer Operationen abhängt (z.B. zwei 🔭 Threads, die auf die selbe Variable zugreifen). Siehe auch 🔗 Wettlaufsituation.
Refactoring
Verbesserung der Struktur des 👉 Quelltextes eines Programms, ohne dessen Verhalten zu verändern.
Referenz
Verweis auf einen Wert (🔭 primitiver Wert oder 🔭 Pointer auf ein 🔭 Objekt), etwa eine 🔭 Variable, oder ein 👉 Index eines 🔭 Arrays.
run-time
(Während der) Ausführung eines Programmes (also während der 👉 Runtime). Siehe zum Vergleich: 👉 compile-time.
Runtime
Englisch für 👉 Laufzeit.
S
Schnittstelle
Genormte oder mindestens genau beschriebene logische Berührungspunkte von (Software-) Systemen. Siehe auch 🔭 Interfaces.
Scope
Englisch für 👉 Gültigkeitsbereich.
Setter
Siehe 🔭 Getter und Setter.
Standard-Datenströme
Drei Datenströme (👉 Stdout, 👉 Stdin und 👉 Stderr) zur Daten Ein-/Ausgabe zwischen einem Programm und dem Betriebssystem bzw. der Umgebung, in der das Programm ausgeführt wird. Siehe auch 🔗 Standard-Datenströme.
Statement
Eigentlich englisch für “Aussage”, im Programmier-Kontext sind aber unterschiedliche Dinge damit gemeint. In Java gibt es drei verschiedene Arten von Statements: Expression Statements (siehe 👉 Ausdruck), Declaration Statements (siehe 👉 Deklaration) und Control-flow statements (siehe 👉 Kontrollfluss).
Stderr
Error-Datenstrom der 👉 Standard-Datenströme. Kurz für Standard Error.
Stdin
Eingabe-Datenstrom der 👉 Standard-Datenströme. Kurz für Standard Input.
Stdout
Ausgabe-Datenstrom der 👉 Standard-Datenströme. Kurz für Standard Output.
Stream
Englisch für 👉 Datenstrom.
Syntactic sugar
👉 Syntax-Feature einer Programmierprache, mit dem eine bestimmte Anweisung (ö.ä.) einfacher oder leichter lesbar formuliert werden kann. Siehe auch 🔗 Syntactic sugar.
Syntax
System zur Formung gültiger (Quell-)Texte aus dem Zeichenvorrat einer Sprache. Siehe auch 🔗 Syntax.
T
Terminal
Test
Im Kontext der Softwaretechnologie: Testet eine Software auf Funktionalität und Qualität. Niedrigste Stufe sind 👉 Unit Tests (oder: Komponententests), die einzelne Komponenten / Einheiten der Software testen. Für Erläuterungen zu weiteren Arten von Tests auf höheren Ebenen siehe auch 🔗 Softwaretest.
teuer
Als “teuer” wird umgangssprachlich eine Operation bezeichnet, die vergleichsweise viel Rechenleistung und/oder Speicher kostet. Siehe auch 👉 Laufzeit und 👉 Performanz.
Thread
Ein Ausführungsstrang in einem Computerprogramm. Threads sind Teil eines 👉 Prozesses. Auch: Leichtgewichtiger Prozess; siehe auch: 🔗 Thread.
U
Unit Test
👉 Software-Test zum testen einzelner Programm-Komponenten.
Ü
Überladen
Siehe 🔭 Methoden ⇒ Überladen von Methoden.
Überschreiben
Siehe 🔭 Vererbung-I-Grundlagen ⇒ Überschreiben von Methoden.
V
…
W
Wahrheitswert
Wert einer 👉Aussage. Kann (im Programmier-Kontext) true
oder false
sein und ist somit vom 🔭 Datentyp boolean
(bzw. Boolean
).
Wrapper
Programm-Einheit (z.B. eine Klasse oder eine ganze Library), die als 👉 abstrahierende Zwischenschicht um eine komplexere Logik (👉 low-level) gebaut ist. In Java auch: Die Klassen Boolean
, Integer
, Double
, […], die als komplexe “Verpackung” um die primitiven Datentypen fungieren.
X
…
Y
…
Z
Zuweisung
👉 Operation, bei der einer 🔭 Variable (oder einer Speicherstelle eines 🔭 Arrays) ein Wert zugewiesen wird (mittels des Zuweisungsoperators =
).