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.: Anwendungs­programmier­schnittstelle). 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

Siehe 🔗 hier und 🔗 hier.

Komplexität

Konzept zur Abschätzung des Ressourcenaufwandes zur 👉 algorithmischen Behandlung bestimmter Probleme. — 🔗 Wikipedia

Konsole

Siehe 🔗 hier und 🔗 hier.

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

Siehe 🔗 hier und 🔗 hier.

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 =).