b Glossar | cdemy

Lexikon

Glossar

Erklärung der Einträge

*Einträge beginnen mit dem jeweiligen Namen. Dahinter (in der Klammer) eine Übersetzung des Begriffes. Fachwörter, die in Englisch geläufiger sind als auf Deutsch, werden auf Englisch in das Glossar aufgenommen und die Übersetzung auf Deutsch erfolgt in der Klammer (D: XXX). Ist der Begriff auf deutsch unseres Erachtens verbreitet genug, erfolgt eine englische Übersetzung in der Klammer (E: XXX). Unterschiede nur hinsichtlich Groß/Kleinschreibung etc. werden ignoriert. Sind die englische und die deutsche Version gleich, dann wird nur (~) notiert. Wenn ein Wort so verbreitet ist in seiner englischen Form, dass es zwar eine deutsche Übersetzung gäbe, aber diese nicht wirklich geläufig sein muss, dann wird keine Übersetzung angegeben (und somit die Verwendung des englischen Wortes angeregt). Handelt es sich um ein Verb, erfolgt generell Kleinschreibung, bei Nomen Großschreibung (auch im Englischen, wo es die Unterscheidung ja eigentlich nicht gibt). Verweise auf andere Glossar-Einträge sind in *kursiver* Schrift dargestellt.*

A

  • Abstrakte Fabrik (E: abstract factory): Klassisches Entwurfsmuster. Link.

  • Abstrakte Klase (E: abstract class): Klasse, die keine Objekte instanziieren kann. Die Klasse dient also in erster Linie als Speicher von Methoden und Attributen, die dann entweder statisch sind oder über Vererbung in instanziierbaren Tochterklassen landen.

  • Abstraktion (E: Abstraction): Ziel beim Programmieren. Zumindest auf dem obersten Level sollte sich Code eher lesen wie eine normale Sprache, zum Beispiel: if(user.isRegistered) placeOrder(). Natürlich müssen irgendwann (z.B. in isRegistered all die technischen Details kommen), aber auf der ersten Ebene ist dieser Code gut lesbar.

  • Adapter (~): Klassisches Entwurfsmuster. Liegt im Prinzip dann vor, wenn eine Klasse zur Übersetzung zwischen zwei Interfaces gesetzt wird. Mehr Details hier.

  • Aggregation (~): Man unterscheidet in der OOP zwischen Assoziation, Aggregation und Komposition bei den Beziehungen zwischen Objekten.

  • Algorithmus (E: algorithm): Folge von einfachen Anweisungen, die zusammen ein komplexeres Problem lösen.

  • Alpha Test (~): Testing in einem frühen Stadium der Softwareentwicklung. Bugs sind ständig zu erwarten.

  • AND (D: UND): Boolesche / Logische Operation. Eine AND-Operation ergibt true, wenn beide Operanden true sind. Folglich: 1 AND 1 = 1. 1 AND 0 = 0, 0 AND 1 = 0, 0 AND 0 = 0.

  • Android (~): Betriebssystem von Google, insbesondere für Mobilgeräte.

  • Assembler (~): Programm, dass in Assembly-Sprachen geschriebenen Code plattformspezifisch in Maschinensprache umwandelt.

  • Assembly (~): Sehr maschinennahe Sprachen, jeweils plattformspezifisch, in denen direkt die Befehle, welche die CPU unterstützt, verwendet werden. Das hat mit den von uns genutzten Sprachen wenig zu tun. Es geht um das direkte Schreiben in Speicherzellen etc, zum Beispiel um einzeln die Pixel anzuknipsen, die dann zusammen einen Buchstaben auf dem Bildschirm ergeben. Alles, was Anwendungsentwickler tun, erreicht irgendwann dieses Level, aber dazwischen liegen etliche Ebenen an Compilern und Co.

  • Assoziation (~): Man unterscheidet in der OOP zwischen Assoziation, Aggregation und Komposition bei den Beziehungen zwischen Objekten.

  • Attribute (~): Eigenschaften / Variablen eines Objekts, definiert in einer Klasse.

B

  • Beta-Test (~): Phase zwischen Alpha Test und Release beim Testing. Bugs können auftreten, sollten aber kein ständiger Begleiter mehr sein.

  • Betriebssystem (~): Basis, auf der Anwendungen laufen. Verdrahtet im Wesentlichen die Hardware und stellt die Basis an Funktionalitäten bereit, damit man sich darum nicht kümmern muss. Beispiele: Windows, Android, macOs, iOs, Linux, ...

  • Binärcode (binary code): Anderes Wort für Maschinensprache.

  • Binärsystem (binary system): Zahlensystem, basierend auf der Zahl 2, so wie unser Dezimalsystem basiert auf der Zahl 10.

  • Bit (~): Die kleinste Informationseinheit. Kennt nur die Zustände 1 (oder true oder an) und 0 (oder false oder aus). Siehe Binärsystem. Moderne Computer sind 64-Bit-Rechner, die also mit 64 Bits gleichzeitig arbeiten (zum Beispiel bei Rechenoperationen).

  • Black Box Test (~): Form des Testing, bei dem bewusst nicht auf den Code der zu testenden Komponente geschaut wird. Anforderungen werden aus Anwendersicht formuliert und es wird geprüft, ob diese Anforderungen erfüllt werden.

  • Black Hat Hacking (~): Prototyp des Hacking, bei dem die Motive finster (kriminell) sind und keine Erlabnis zum Hacking vorliegt.

  • Boolean (D: Boolescher Wert): Variablentyp in den meisten Programmiersprachen. Entspricht einem Bit. Kann nur die Werte true oder false (1 oder 0) speichern.

  • Boolean Operation (D: Boolesche Operation): Logische Operationen, die Boolesche Ausdrücke (true / false) miteinander verknüpfen. Die wichtigsten sind: AND, OR, EXOR, NOT. In der Programmierung finden logische Operationen vor allem in Bedingungen statt.

  • Boolesche Variable (D: Boolean variable): Variable vom Typ Boolean.

  • Bridge (D: Brücke): Entwurfsmuster, das zur Trennung von Abstraktion und Implementation dient. Ausführlicher hier.

  • Bug (~): Fehler in einem Programm. Oft wird unterschieden zwischen Syntaxfehlern und Logikfehlern.

  • Byte (~): 8 Bit. 256 potenzielle Werte von 00000000 (=0) bis 11111111 (=255). Siehe Binärsystem.

  • Bytecode (~): In der Programmiersprache Java wird der in dieser Sprache geschriebene Code nicht direkt kompiliert in Maschinensprache, sondern in eine Art Zwischencode namens Bytecode. Dieser ist schon maschinennäher als der Rohcode, aber noch nicht maschinenspezifisch. In diesem Zustand kann er von der Java Runtime Engine, die es für jede Plattform gibt, dann ausgeführt werden. Ergebnis ist eine Leistungsfähigkeit, die deutlich größer ist als bei Interpretersprachen, aber zugleich langsamer als echte Compiler-Sprachen.

C

  • C ( ~): Verbreitete, sehr Hardware-nahe, Feature-arme Programmiersprache. Basis moderner Programmiersprachen. Compiler-Sprache. Prozedural, funktional orientiert.

  • C++ ( ~): Wie C, zusätzlich mit mehr Elementen der objektorientierten Programmierung. Inzwischen verbreiteter als C. Insbesondere im grafikintensiven, rechenintensiven und hardwarenahen Bereich der Standard wegen hoher Geschwindigkeit. Zum Beispiel bei Spielen (Beispiel Unreal-Engine).

  • C# ( ~): Sehr verbreitete Programmiersprache. Sehr objektorientiert. Bedeutung heutzutage vor allem durch Microsoft (Visual Studio). Cross-platform mit Xamarin.

  • Closed Test ( ~): Testing mit einer geschlossenen / begrenzten Nutzergruppe, insbesondere einer Gruppe möglicher zukünftiger Nutzer.

  • Closed Test (D: Geschlossene Klasse): Testing mit einer geschlossenen / begrenzten Nutzergruppe, insbesondere einer Gruppe möglicher zukünftiger Nutzer.

  • Code (~): Die Zeilen eines Computerprogramms. Alternativverwendung im Sinne eines "Zugriffs-Codes".

  • Code Review (~): Überprüfen des Codes von Person A durch Person B, die in der Regel nicht mitarbeitete an dem spezifischen Task von A. Dieses Vieraugenprinzip soll die Fehlerhäufigkeit reduzieren.

  • Commit (~): Allgemein verwendeter, aus Git stammender Begriff, der das zwischenzeitliche Sichern des eigenen Codes meint. Es wird sozusagen unterschieden zwischen: Speichern der Datei, in der man arbeitet (quasi alle 10 Sekunden). Dem Committen, also Abgeben, einer Arbeit am Code (auch in Zwischenständen, in der Regel mit Push synonym verwendet). Die Abgabe als fertiges Arbeitsergebnis, was dann ggf. Code Review und Pull request beinhaltet.

  • Compiler ( ~): Programm, dass den Code einer Hochsprache umwandelt in Maschinencode.

  • Compiler-Sprache (E: compiler language): Kategorisierung von Programmiersprachen, im Gegensatz zu Interpreter-Sprache. In die Kategorie fallen alle die Sprachen, deren Code umgewandelt wird in maschinenausfahrbaren Code (also keine Interpretation zur Laufzeit).

  • Constructor (D: Konstruktor): Diejenige Methode in einer Klasse, die ein Objekt initialisiert. Wann immer eine Klasse instanziiert wird, wird implizit der zugehörige Constructor aufgerufen. Durch Overloading oder Named Constructors können verschiedene Konstruktoren, je nach Programmiersprache, für spezielle Zwecke eingerichtet werden.

  • Compiling (D: Kompilierung): Prozess des Kompilieren durch einen Compiler.

  • Coprozessor (E: Co-processor): Zusätzlicher Mikroprozessor im Rechner, der den Hauptprozessor bei seiner Arbeit unterstützt. Koprozessoren können bspw. mathematische sowie Gleitkomma-Operationen, Grafikoperationen, Signalverarbeitung, I/O-Verarbeitung oder Kryptographie ausführen.

  • CPU (D: ZPU): Central Processing Unit: Zentraler Rechenkern des Computers. Bestimmt maßgeblich, wie schnell alle Operationen ausgeführt werden (zusammen mit der Geschwindigkeit, mit der er per Datenbus mit Daten gefüttert wird).

  • Cross platform (D: plattformübergreifend): (Angestrebte) Eigenschaft mehrerer Programmiersprachen und Tools, um plattformunabhägig programmieren zu können.

D

  • Dart (~): Von Google entwickelte allgemeine Programmiersprache. Im Einsatz seit 2015. Ähnlichkeiten zu Java, JavaScript. Bekam massiven Schub durch Flutter. Weiterer Schub erwartet durch Fuchsia, das auf Dart basieren soll.

  • DDR-RAM: Eigentlich DDR-SDRAM. Seit 1999 gebräuchlicher Standard für RAM-Module. Die Bezeichnung "Double Data Rate Synchronous Dynamic Random Access Memory" bezieht sich darauf, dass damals (1999) die neue Bauart von RAM-Modulen technisch eine Verdopplung der Geschwindigkeit ermöglichte. Seitdem wurden stetig neue DDR-Standards rausgebracht. Aktuell stehen wir bei DDR5. Und wie bei jeder technischen Entwicklung: Mehr ist besser.

  • Debugger (~): Komponente einer Entwicklungsumgebung (z.B. IDE), die beim Suchen von Bugs behilflich ist, in der Regel dadurch, dass man den Code schrittweise nachvollziehen/ beobachten kann.

  • Decompiler (~): Programm, mit dem aus einem kompilierten Programm in Maschinensprache versucht wird, den Sourcecode wieder abzuleiten. Das geht nicht verlustfrei, auch weil vieles im Code den Computer im Binärcode nicht interessiert, z.B. Klassen- und Variablenbezeichnungen, Kommentare.

  • Deklarative Programmierung (E: declarative programming): Programmierparadigma. Statt der Abfolge von Schritten zur Lösung eines Problems geht es eher um die Beschreibung des Problems und der Ausgangsbedingungen und der Computer soll den Weg dann selbständig finden. In der Praxis nicht allzu relevant, eher im akademischen Bereich zuhause.

  • Dot (D: Punkt): Ähnlich wie Pixel, nur weniger eingeschränkt auf Computerbildschirme. Wird zum Beispiel auch bei Druckern benutzt (Auflösung 300 dpi - Dots per inch).

E

  • Entwicklungsumgebung (E: Development engine): Sammlung von Werkzeugen / Programmen, die beim Programmieren nützlich sind, was vieles umfassen mag, aber wohl zumindest Texteditor, Compiler bzw. Interpreter, Debugger. Sind diese und andere Tools in einem Programm vereint, spricht man von einer integrierten Entwicklungsumgebung (IDE).

  • Entwurfsmuster (E: Design pattern): Eine bestimmte Konstellation von Klassen und ihren Verknüpfungen, die jeweils entwickelt wurde, um ein bestimmtes, wiederkehrendes Problem bei der Softwareentwicklung effizient zu lösen.

  • Enum (D: Enumeration): Datentyp in mehreren Programmsprachen. Enumeration bedeutet Aufzählung. Mit anderen Worten: Es gibt einen bestimmbare Anzahl von Werten. Diese sind aber nicht zwingend Zahlen. Beispiel: Ein Urlaubstag kann "Jahresurlaub", "Sonderurlaub" oder "Überstundenausgleich" sein. Man legt die möglichen Werte einmal im Code fest und kann dann mit diesen Begriffen arbeiten. Gegenüber einer Codierung in Zahlen macht es den Code für uns Menschen einfacher lesbar.

  • Executable (D: Ausführbare Datei): Datei, die vom Computer direkt ausgeführt werden kann, in der Regel in Maschinensprache.

  • EXOR: Boolesche / Logische Operation. Eine EXOR-Operation (manchamel auch XOR) ergibt true, wenn genau einer der Operanden true ist. Folglich: 1 XOR 1 = 0. 1 XOR 0 = 1, 0 XOR 1 = 1, 0 XOR 0 = 0.

F

  • Factory-Methode (E:factory method): Methode in einer Klasse, der dazu führt, dass die produzierten Objekte nicht wie üblich Instanzen der Klasse sind, sondern zumeist Instanzen einer Tochterklasse. Da ein Objekt der Unterklasse immer auch automatisch ein Objekt der Oberklasse ist, ist das dem aufrufenden Code egal.

  • Fix (~): Behebung eines Bugs.

  • Flutter: Framework zur Architektur von Apps und insbesondere zur plattformunabhängigen Beschreibung von GUI-Elementen. Von Google entwickelt. Mit Flutter (und der damit automatischen Programmiersprache Dart) entwickelte Programme können kompiliert werden in Java / Kotlin (für Android), Objective-C / Swift (für iOS)

  • Fuchsia (~): Unveröffentlichtes, geplantes eigenes PC-Betriebssystem von Google.

  • Funktion (: Function): Routine in einem Programm. Kann ein Ergebnis zurückgeben an die aufrufende Stelle oder auch nicht. Dient sowohl der Abstraktion als auch der Vermeidung von Wiederholungen.

  • Funktionale Programmierung (E: Functional programming): Programmierparadigma, teiweise in Opposition zur Objektorientierten Programmierung. Wesentliche Ziele: Vermeidung von State (also einem festgeschriebenen Zustand des Systems, der Daten), stattdessen lieber Berechnung von Ergebnissen. Vermeidung von Nebeneffekten (Side effects) durch nicht-ändernden State. Beispiel: Anstatt meinen Kontostand als einen Zustand anzusehen, wird er lieber immer wieder anhand aller Transaktionen neu berechnet. Nachteil: Rechenaufwand, teilweise auch Code-Komplexität. Vorteil: Parallele Prozesse haben niedrigeres Risiko, sich gegenseitig zu beeinflussen.

G

  • Gibibyte (~): 1.024 Mibibyte = 1 Gibibyte = GiB. Unterschied Gigabyte-Gibibyte ergibt sich aus der Erklärung zu Kilobyte.

  • Gigabyte (~): 1.000 Megabyte = 1 Gigabyte = 1 GB. Unterschied Gigabyte-Gibibyte ergibt sich aus der Erklärung zu Kilobyte.

  • GIT (~): Software-Versionierungs- und Sicherungs-System. Legt eine lokales "Repository" an, in dem alle Zwischenstände gespeichert sind. Remote-Repositories sind ebenfalls möglich, also die Sicherung auf Servern. Erleichtert insbesondere die Zusammenarbeit an Software im Team durch Tools wie Rebasing.

  • Google (~): Omnipräsenter Internetkonzern.

  • Grafikkarte (Graphics card): Komponente eines PC zur Berechnung der Grafikausgabe, insbesondere von 3D-Grafiken. Hauptelemente sind ein Grafikprozessor (GPU) und eigenes, dezidiertes (nur für die Grafikkarte verwendetes) RAM.

  • Grafikprozessor (Graphics processing unit):: Siehe GPU.

  • GPU (~): Graphics Processing Unit. Grafikprozessor. Hauptelement einer Grafikkarte. Hochspezialisierte Prozessoren, optimiert für die Berechnung aufwändiger 3D-Grafik. Aufgrund der Spezialisierung oftmals erheblich schneller als CPUs.

  • GUI (D: Grafische Benutzeroberfläche): Graphical User Interface, also die (grafisch dargestellte) Benutzeroberfläche.

H

  • Hacking (~): Eindringen in Computersysteme, zumeist durch das Ausnutzen von Sicherheitslücken.

  • Hochsprache (E: Higher programming language): Programmiersprachen mit einer gewissen Distanz (und somit höherer Lesbarkeit) zum Maschinencode. Hierunter fallen fast alle modernen Programmiersprachen außerhalb der Assembly-Sprachen. Bei C++ kann man drüber streiten.

I

  • IDE: Integrated Development Environment: Um etliche Funktionen erweiteter Texteditor, der sich aufgrund dieser Erweiterungen besonders gut dazu eignet, Software zu entwickeln. Beispiel ist Visual Studio Code.

  • Imperative Programmierung: Programmierparadigma. Grundgedanke: "Mach das, dann das, dann das". Klassischer Einstieg in die Programmierung. Jede Zeile dreht sich um die Frage "wie löse ich das Problem und was mache ich dann?". Wurde nach und nach erweitert in Richtung strukturierte Programmierung und prozedurale Programmierung. Wirkliche Unterschiede gibt es zur objektorientierten Programmierung und zur deklarativen Programmierung.

  • Inch (D: Zoll: Amerikanische Längeneinheit. Ein Zoll ~ 2,54 Zentimeter.

  • Integration Test(~): Systematisches Testing des Zusammenspiels von mehreren Komponenten, insbesondere Klassen.

  • Interpreter (~): Programm, das einen Code in einer Interpretersprache in Handlungen des Computers übersetzt. Das geschieht zur Laufzeit des Programmes und das sorgt für eine niedrigere Performance als bei den sog. Compiler-Sprachen.

  • Interpretersprache (~ interpreter language): Sprache, die nicht kompiliert, sondern zur Laufzeit übersetzt wird vom Computer. Bekanntestes Beispiel: Javascript, ansonsten noch relevant Visual Basic zum Beispiel.

  • iOS (~): Betriebssystem von Apple, insbesondere für Mobilgeräte. Letztlich eine etwas abgespeckte Variante von macOS.

J

  • Java (~): Weit verbreitete objektorientierte Programmiersprache. Compiliert zu Bytecode, nutzt dann ein plattformspezifisches Runtime Environment, womit der Bytecode plattformunabhängig ist. Bekam massiven Schub durch Android, da Apps für Android in Java programmiert werden mussten. Verliert zurzeit Bedeutung durch Kotlin, JavaScript, Dart / Flutter.

  • JavaScript (~): Weit verbreitete, freie Programmiersprache. Eigentlich objektiv schlechtere Sprache als viele andere, aber von Anfang an die Programmiersprache des WWW. Dadurch in jedem Browser, dadurch auf jedem Gerät. Bekam weitere Schübe durch ReactJS, Node.JS. Deutlich verbessert durch TypeScript.

K

  • Kibibyte: 1.024 Byte = 1 Kibibyte = 1 KiB. Der Unterschied zu Kilobyte wird dort erklärt.

  • Kilobyte: 1.000 Byte = 1 Kilobyte = 1 KB. Ursprünglich zählt man 1.024 Bytes als ein Kilobyte, weil 1024 "2 hoch 10" ist und Zweierpotenzen und das Binärsystem eine Grundlage der Informatik sind. Allerdings werden die Zahl dann schnell unübersichtlich und unintuitiv (1.024 1.024 1.024 ist schon eine Abweichung von 7% zu der überschlägigen Rechnung mit dem Faktor 1.000). Also entschloss man sich, es genauso zu handhaben wie bei anderen Angaben (Kilogramm, Kilometer, etc) und eben mit dem Faktor 1.000 zu rechnen. Neue Einheiten wie Kibibyte, Mibibyte, Gibiybyte wurden eingeführt. Die Abkürzungen KB, MB, GB, TB (etc) verweisen nun auf den Faktor 1.000. KiB, MiB, GiB, TiB verweisen auf den Faktor 1.024.

  • Kind-Klasse (E: child class): Klasse, die ihr Verhalten und ihre Datenstruktur teilweise oder insgesamt von ihrer Mutterklasse erbt.

  • Klasse (E: Class): Sammlung von Methoden und Attributen, die zusammen den Bauplan für ein Objekt ausmachen. Basierend auf dieser Klassendefntion können dann beiebig viele Objeke dieses Typs konstruiert werden.

  • kompilieren (E. compile): Prozess des Umwandeln des Codes einer Hochsprache in Maschinensprache. Man nutzt einen Compiler zum Kompilieren.

  • kompiliert (E: compiled): Zustand eines Programms nach dem Kompilieren.

  • Komposition (E: Composition): Man unterscheidet in der OOP zwischen Assoziation, Aggregation und Komposition bei den Beziehungen zwischen Objekten.

  • Kotlin (~): Moderne Programmiersprache, lose basierend auf Java. Inzwischen offizielle Programmiersprache für Android, hat Java diesbezüglich abgelöst.

L

  • Laufzeit (Runtime): Zeit, während der das Programm läuft, also tatsächlich aktiv ist. Oft verwendet in Abgrenzung zur Zeit, während der kompiliert wird (Compile-Time). Dabei geht es dann z.B. darum, ob bestimmte Informationen erst zur Runtime oder schon zur Compiletime feststehen.

  • Linter (~): Komponente einer IDE, die dafür sorgt, dass nicht nur Fehler angezeigt werden, sondern auch Hinweise zur optimierten Programmierung.

  • Logikfehler (E: Logics bug): Bug, der durch einen falschen Algorithmus bzw. falsche Überlegungen beim Programmieren verursacht ist, also nicht durch Fehler in der Syntax. Folglich in der Regel keine Fehlermeldungen, sondern eher unerwartete Ergebnisse. Schwerer zu lokalisieren und zu fixen als Syntaxfehler

M

  • MacOS (~): Betriebssystem von Apple für den Einsatz in deren Desktopsystemen.

  • Maschinensprache (E: Machine language): Direkt ausführbarer, plattformspezifischer Code auf Computer. Deckungsgleich mit Binärcode.

  • Megabit (~): 1.000.000 Bit. Typische Angabe im Bereich der Telekommunikation, denn die Zahl ist höher, als wenn man Megabyte angeben würde.

  • Megabyte (~): 1.000 Kilobyte = 1 Megabyte = 1 MB. Unterschied Megabyte-Mibibyte ergibt sich aus der Erklärung zu Kilobyte.

  • Mibibyte (~): 1.024 Kibibyte = 1 Mibibyte = 1 MiB. Unterschied Megabyte-Mibibyte ergibt sich aus der Erklärung zu Kilobyte.

  • Methode (E: Method}: Funktion, die von/auf einem Objekt ausgeführt wird.

  • Mutterklasse (E: parent class): Siehe Eltern-Klasse.

N

  • Netzteil (E: Power adator): Komponente des Computers, das den aus Wechselstrom aus der Steckdose in den vom Computer benötigten Gleichstrom umwandelt.

  • new (~): Keyword, mit dem in vielen Programmiersprachen ein Objekt aus einer Klassendefinition erstellt wird.

  • Node.js (~): Plattform, mit der browserunabhängige Javascript-Programme geschrieben werden können. So konnte Javascript, was üblicherweise nur im Browser ausgeführt wurde, zum Beispiel auch für Server-Backends verwendet werden. Durch Limitationen von Sprachen wie PHP inspiriert, insbesondere was asynchrone Operationen angeht. Javascript ist auch dann noch eine Interpretersprache, aber das ist PHP auch.

  • NOT (D: NICHT): Boolesche / Logische Operation. Eine NOT-Operation kehrt den Wert eines Booleschen Wert um. FOLGLICH NOT 1 = 0. NOT 0 = 1.

O

  • Objective-C (~): Programmiersprache. Erweiterung von C, insbesondere hinsichtlich der objektorientierten Programmierung. Bedeutung insbesondere dadurch, dass es eine der beiden nativen Programmiersprachen für iOS ist.

  • Objekt (E: Object): Instanz einer Klasse. Siehe Objektorientierte Programmierung.

  • Objektorientierte Programmierung (Object oriented Programming / Design): In der Objektorientierten Programmierung wird ein Programm im Wesentlichen als die Interaktion von Objekten aufgefasst. Objekte rufen die Methoden anderer Objekte auf (was man auch oft als den Austausch von Botschaften / Messages) beschreibt und tun dann jeweils ihren Part ebenfalls und alles zusammen ergibt den Programmablauf. Objekte können realweltlichen Objekten entsprechen, sind aber mit zunehmendem Refactoring auch zunehmend artifiziell.

  • OOP (~): Kurz für objektorientierte Programmierung.

  • Open Test (~): Siehe Public Test.

  • OR (D: ODER): Boolesche / Logische Operation. Eine OR-Operation ergibt true, wenn mindestens einer der Operanden true ist. Folglich: 1 OR 1 = 1. 1 OR 0 = 1, 0 OR 1 = 1, 0 OR 0 = 0.

P

  • Pixel (D: Punkt): Einzelner Punkt, insbesondere auf Bildschirmen. Ein typischer HD-Screen besteht aus 1920 x 1080, also rund 2.000.000 Pixeln. Jeder Pixel wiederum besteht aus mindestens 3 Subpixeln in den Grundfarben Rot, Grün und Blau (RGB), welche wiederum unterschiedlich hell rot, grün und blau leuchten können, was dann in der Mischung alle Farben ergibt. Alle Subpixel leuchten in voller Stärke ergibt weiß. Alle Subpixel leuchten gar nicht ergibt schwarz.

  • Pointer (D: Zeiger): Verweis auf einen Speicherbereich. Manche, besonders maschinennahe Sprachen, lassen die direkte Manipulation von Speicherbereichen zu. Allgemeiner gesprochen kann Pointer auch als synonym mit Referenz verwendet werden.

  • Programmierparadimen: x

  • Prozedur (E: Procedure): Im Wesentlichen deckungsgleich mit Funktion. Mitunter wird unterschieden

  • Prozedurale Programmierung: Programmierparadigma: Aufspaltung von Aufgaben in kleinere Teilaufgaben. Schreiben von Funktionen, welche diese Teilaufgabe lösen. Zusammenführung der Ergebnisse. Im Kern das, was wohl der klassische Einstieg in Programmierung heutzutage ist.

  • Public Test (D: Öffentlicher Test): Testing mit / durch eine prinzipiell nicht begrenzte Nutzergruppe, die in der Regel den zukünftigen Nutzern entspricht.

  • Pull Request (~): Git-Begriff, aber in der Intention ähnich auch in anderen Versionsverwaltungen. Sozusagen ein Antrag, den eigenen Code in einen Branch zu übernehmen. Diverse Bedingungen können an Pull Requests gestellt werden, zum Beispiel positive Code-Reviews von anderen oder die Zustimmung des Codeowners, etc. Im Endeffekt ist es die Meldung "Ich bin fertig, hier ist mein Ergebnis, übernehmt es bitte".

Q

R

  • RAM (~): Random Access Memory. Flüchtiger Hauptspeicher des Computers. Strom aus = RAM leer.

  • React JS (~): Javascript-Framework, das sich insbesondere auf dynamische Webseiten spezialisiert. Sachen, die in Javascript prinzipiell sowieso gehen, werden hier optimiert.

  • React Native (~): Javascript-Framework, welches das Entwickeln von Mobile Apps auf Javascript-Basis ermöglicht bzw. vereinfacht. Grundsätzlich wird eine Art Browser-App geschrieben, die auf dem Mobilgerät dann auch technisch in einem Browser läuft (das bekommt der User nicht mit). Allerdings werden auch die nativen Funktionalitäten der Plattformen (vom Lokk & Feel der GUI bis hin zum Zugriff auf Kamera, GPS, etc) so exponiert, dass man aus Javascript damit umgehen kann.

  • Rebase (~): Git-Begriff, den es in anderen Versionsverwaltungen aber auch gibt. Im Prinzip bezieht er sich auf folgende Situation. Irgendwann zweigt ein Programmierer von der allgemeinen Codebase ab, um an einem neuen Feature zu arbeiten. Das dauert eine Weile. Nun will er seinen neuen/veränderten Code in die Codebase wieder einbringen. Wenn sich die Codebase aber in der Zeit weiterentwickelt hat, dann passen die Änderungen unter Umständen nicht mehr, weil sie sich auf einen Stand beziehen, der heute nicht mehr aktuell ist - und stellenweise Dateien verändert wurden, die sich inzwischen ebenfalls verändert haben. Ein Rebase heißt nun, dass der Programmierer zuerst seinen neuen Code an die neue Codebasis anpassen muss, bevor er ihn abgeben kann. Er zieht also den neuen Stand der Codebasis und arbeitet diesen bei sich ein, anstatt seinen Code in die Codebasis zu bringen. Erst wenn die Codebasis bei beiden gleich ist, dann kann er eine Pull-Request stellen.

  • Refactoring (~): Technik, aus einer komplexen Methode einen Teil herauszulösen und als wiederum eigene Methode / Klasse zu definieren. Die meisten IDEs unterstützen einen hierbei automatisiert. Ziel ist, die Abstraktion der Methode zu erhöhen bzw. die Komplexität des Codes zu reduzieren.

  • Referenz (E: Reference): Verweis auf eine Variable, nicht auf ihren Inhalt. Manche Sprachen unterscheiden zwischen zwei Arten davon, eine Variable als Argument an eine Funktion zu übergeben, nämlich der Übergabe als Wert (byVal zum Beispiel in Visual Basic) und als Referenz (byRef). Beispielsweise in PHP wird diesbezüglich per Prefix klar gemacht, wenn eine Übergabe per Referenz geschehen soll. Das hat zur Folge, dass die aufgerufene Funktion direkten Zugriff auf den Speicherbereich der Variable bekommt. Ändert sie also den Wert der Variable, dann ist dieser Wert auch für die aufrufende Funktion danach verändert. Bei einer Übergabe des Wertes hingegen, wird eigentlich eine Kopie der Variable übergeben. Ändert sich der Wert dieser Variable in der aufgerufenen Funktion, hat das keine Wirkung auf die aufrufende Funktion. Die aufrufende Funktion erhält von der aufgerufenen Funktion gegebenenfalls einen Rückgabewert, aber sonst keine Auswirkungen.

  • Release (D: Erscheinungstermin): Veröffentlichungstag oder veröffentlichte Version einer Software. Am Release-Tag wird die Release-Fassung releast.

  • rendern (E: render): Optische Darstellung von Bildern oder GUI-Elementen.

  • RGB (~): Farbsystem, basierend auf den Grundfarben rot, grün und blau. Aus diesen Farben (in jeweils unterschiedlicher Helligkeit) können alle Farben gemischt werden. Findet Verwendung immer dort, wo Farbhelligkeiten addiert werden (Bildschirme). Wird nicht verwendet im Druck, denn dort bedeutet "mehr Farbe" "weniger weißes Papier" (dort ist das CMYK-Farbsystem Standard).

  • Runtime (E: Laufzeit): Zeit, in der ein Programm ausgeführt wird. Meistens in Abgrenzung zur Compile-Zeit, in der ein Program kompiliert wird. Beispielsweise mag es Sachen geben, die im Code hart verdrahtet sind, oder eben erst zur Laufzeit sich ergeben. Beispiel: Wenn ein Objekt bestimmte Informationen von einem anderen Objekt bezieht und die Referenz zu diesem anderen Objekt in einer Klassenvariablen abgespeichert hat, dann kann sich die Referenz natürlich auch später noch ändern. Plötzlich kommen die Informationen von einem anderen Objekt. Beispiel: Plugin-Architekturen. Das Programm (zB VSCode) weiß nicht, ob der Nutzer bestimmte Plugins hat. Die erweiterte Funktionalität ergibt sich erst zur Laufzeit durch das Vorhandensein der Plugins.

  • Rückgabewert (E: Return value): Funktionen haben zumeist ein Ergebnis ihrer Operation. Dieser Wert kann dann dort, wo die Funktion aufgerufen werden, weiter verwendet werden. Ein besonderer Rückgabewert ist void, was in den meisten Sprachen darauf hinweist, dass es keinen Rückgabewert gibt. Die Funktion läuft aus Sicht der aufrufenden Funktion ab, tut dabei irgendwas - wirkt aber sonst nicht zurück in die aufrufende Funktion.

S

  • Statische Methode / Variable (E: static method / variable): Methode bzw. Variable / Attribut einer Klasse, das nicht für eine Instanz der Klasse jeweils gilt, sondern für die gesamte Klasse, auch wenn gar kein Objekt kreiert wurde.

  • Strukturierte Programmierung (E: Structural programming): Programmierparadigma. Eher historisch interessant. Anweisungen wie "if then" und "while do" lösten die Möglichkeit ab, zum Beispiel per "goto" einfach irgendwohin im Code zu springen. Code wurde so übersichtlicher.

  • Swift: Programmiersprache. Open Source, aber vor allem entwickelt von Apple. Bedeutung insbesondere dadurch, dass es eine der beiden nativen Programmiersprachen für iOS ist.

  • Syntax (~): Grammatik und Vokabular einer Programmiersprache, also alle Regeln, die man beachten muss, damit der Code prinzipiell vom Computer verstanden wird.

  • Syntaxfehler (E: Syntax error): Bug, der im Wesentlichen daher kommt, dass der Programmierer sich vertippte oder andere Regeln der Programmiersprache nicht beachtete. Einfacher zu fixen als Logikfehler.

T

  • Terrabyte (~): 1.000 Gigabyte. Unterschied Gigabyte-Gibibyte ergibt sich aus der Erklärung zu Kilobyte.

  • Tibibyte (~): 1.024 Gibibyte. Unterschied Gigabyte-Gibibyte ergibt sich aus der Erklärung zu Kilobyte.

  • testing (testen): Systematisches Testen einer Software und ihrer Komponenten, siehe Unit Test, Integration Test, Closed Test, Open / Public Test, Alpha Test, Beta Test, Black Box Test, White Box Test.

  • Tochterklasse (E: child class): Klasse, die eine andere Klasse (ihre Mutter-Klasse) erweitert (extends). Sie erbt somit deren Methoden und Attribute.

  • Typescript: Javascipt-Erweiterung, die im Wesentlichen die Freiheiten, die man in Javascript hat, wie zum Beispiel die Variablen ohne Typfestlegung beschneidet. Man programmiert in Typescript dann recht ähnlich zu den meisten objektorientierten Compilersprachen. Daraus wird dann Javascript kompiliert. Das Besondere an Typescript ist, dass jede gültige JS-Zeile auch eine gültige TS-Zeile ist. Es git Warnungen, wenn man z.B. Variablen nicht richtig deklariert vor der Verwendung, aber wenn man die Warnungen ignoriert, dann kann man alles zu Javascript kompilieren. Das ist vorteilhaft, wenn man ein existierendes Javascript-Projekt in TS überführen will. Man kann erstmal alles übernehmen und dann nach und nach durch valides Typescript ersetzen.

U

  • Unit Test (~): Systematisches Testing einer einzelnen Klasse, Methode oder Funktion.

  • Unity Engine: Spiele-Engine, also spezialisierte Software, mit der man vergleichsweise(!) einfach Spiele entwickeln kann. Konkurrent zu Unreal Engine, tendenziell etwas günstiger, insbesondere für Independent-Entwickler.

  • Unreal Engine: Spiele-Engine, also spezialisierte Software, mit der man vergleichsweise(!) einfach Spiele entwickeln kann. Konkurrent zu Unity Engine, tendenziell etwas teurer, featurereicher und modernder. Wird von den meisten professionellen Entwicklern bevorzugt.

V

  • Visual Studio (~): IDE von Microsoft, vor allem spezialisiert auf C#.

  • Visual Studio Code (~): "Kleiner" Bruder von Visual Studio. Weniger Umfang, weniger spezialisiert. Erweiterbar durch Plugins.

W

  • White Box Test (~): Form des Testing, bei dem bewusst anhand / entlang bzw. Unter Kenntnis des Codes getestet wird. Extremform: Testing mit einem Debugger.

  • White Hat Hacking (~): Form des Hacking, bei dem die Motive weniger finster / kriminell sind als beim Black Hat Hacking. So können Firmen beispielsweise im Auftrag von anderen Firmen Schwachstellen in Systemen aufdecken.

X

  • x64 (~): 64-Bit-Prozessor von Intel bzw. zu Intel kompatible 64-Bit-Prozessoren. Siehe x86.

  • x86 (~): Bezeichnung des Befehlssets in CPUs, auf der basierend vor allem Intel und AMD ihre CPUs entwickeln. Bezeichnung hat historische Ursprünge. Die ersten Prozessoren dieser Bauart hießen 80186, 80286. Irgendwann ließ man die ersten Zahlen halt weg. Später fielen die Bezeichnungen weg, der 80586 wurde einfach als "Pentium" vermarktet und dann kam der "Pentium II" und so weiter. Das Befehlsset aber blieb. Wenn ein Programm kompiliert wird, dann wird es umgesetzt in Befehle, die der Prozessor versteht. Daher ist ein Programm, das für x86-Prozessoren kompiliert wurde, eben nur auf x86-Prozesoren lauffähig. Als dann irgendwann 64-Bit-Prozessoren von Intel heraus kamen, bürgerte sich für diese in Anlehnung an x86 die Bezeichnung x64 ein (oder auch x86-64).

  • Xamarin (~): Framework zur Erstellung von cross-platform Software. Basis ist C#, Visual Studio.

  • XOR (~): Siehe EXOR.

Y

Z

  • Zwischencode (intermediary code): Zwischenstufe zwischen dem Hochsprachen-Code und dem Binärcode, zum Beispiel Bytecode von Java.
Hauptmenu
=========