# Code

Ein Code oder Kode (deutsche Aussprache [koːt] oder [kɔʊ̯d]) ist eine Abbildungsvorschrift, die jedem Zeichen eines Zeichenvorrats (Urbildmenge) eindeutig ein Zeichen oder eine Zeichenfolge aus einem möglicherweise anderen Zeichenvorrat (Bildmenge) zuordnet. Beispielsweise stellt der Morsecode eine Beziehung zwischen Buchstaben und einer Abfolge kurzer und langer Tonsignale und Pausen (und umgekehrt) her.
In der Kommunikationswissenschaft bezeichnet ein Code im weitesten Sinne eine Sprache. Jegliche Kommunikation beruht auf dem Austausch von Informationen, die vom Absender nach einem bestimmten Code erzeugt werden und die der Empfänger gemäß demselben Code interpretiert (dekodiert).
Elektronisch übermittelte oder gespeicherte Daten bestehen zum Beispiel aus einer langen Reihe von Nullen und Einsen (Bits), deren Kombination als Ziffern, Zeichen und/oder Buchstaben (z. B. 01100001 = 'a') festgelegt sind. In einem anderen Code könnte dieselbe Bitkombination z. B. die Zahl 97 bedeuten. Auch für andere Arten von Daten, z. B. Messwerte oder die Nukleinbasen in DNA-Strängen ist in Codes festgelegt, welche Erscheinungsformen was bedeuten.
In der Kodierungstheorie nennt man die Elemente, aus denen ein Code besteht, „Codewörter“, die Symbole, aus denen die Codewörter bestehen, bilden ein „Alphabet“.

## Allgemeine Bedeutung

Im Allgemeinen ist ein Code eine Vereinbarung über einen Satz (eine Menge) von Zeichen wie z. B. Index, Icons oder auch Symbolen (Bedeutungsträgern, oder Verweisen) zum Zweck des Informationsaustauschs. Information existiert nicht in „reiner“ Form; sie ist immer in irgendeiner Weise formuliert. Ein Code ist – allgemein ausgedrückt – eine Formulierung von Information, in der die Zeichen syntaktischen, semantischen und pragmatischen Regeln unterliegen. Das setzt folgende Elemente voraus:
* mindestens eine informationsformulierende Instanz (Aufzeichner/Sender)
* mindestens eine informationsempfangende Instanz (Lesender/Empfänger) – kann in Ausnahmen auch identisch mit (1) sein
* ein zu übermittelnder, konkreter oder abstrakter Inhalt, die Information
* eine Vereinbarung zum Zweck der Informationsformulierung und gegebenenfalls Informationsübermittlung. Diese enthält einen Satz von Bedeutungsträgern oder Symbolen, der beiden Instanzen (1. und 2.) bekannt ist, und gegebenenfalls Regeln zur Verwendung der Symbole
Menschliche Sprache, Tierlaute, aber auch die semiochemischen Moleküle bei Bakterienkommunikation und Pflanzenkommunikation (Auxin) sind Codes unterschiedlicher Komplexität und Kapazität. Im Falle der Tierlaute, Bakterien-, Pilz- und Pflanzenkommunikation ist die „Vereinbarung“ durch natürliche Evolution entstanden.

## Definition

Ein Code über den Alphabeten $A$ und $B$ ist eine injektive Abbildung (= Codierung)
    $c\colon A\rightarrow B^{+}$,
die Symbolen des Alphabets $A$ nichtleere Wörter über dem Alphabet $B$ zuordnet. Die Elemente der Bildmenge $c(A)$ werden Codewörter des Codes genannt. Als Erweiterung eines Codes $c$ bezeichnet man die Abbildung $c^{\ast }\colon A^{+}\to B^{+}$ definiert durch
    $c^{\ast }(a_{1}\ldots a_{n})=c(a_{1})\ldots c(a_{n})$,
wobei $a_{1}\ldots a_{n}$ ein Wort über dem Alphabet $A$ ist. Ein Code $c$ heißt sofort entzifferbar, wenn bei ihm kein Codewort als Anfangsabschnitt eines anderen Codewortes auftritt. Er heißt eindeutig entzifferbar, wenn seine Erweiterung $c^{\ast }$ injektiv ist. Jeder sofort entzifferbare Code ist auch eindeutig entzifferbar, es gibt aber auch eindeutig entzifferbare Codes, die nicht sofort entzifferbar sind.

## Effizienz

In der spezifischeren, üblichen Bedeutung ist ein Code eine Vereinbarung über einen Satz von Symbolen (Verweisen), etwa zwischen Aufzeichnenden (Sendern) und Lesenden (Empfängern), um eine effiziente Vermittlungsweise für häufige Botschaften zu etablieren. Er dient der aufwandsarmen (energie- und zeiteffizienten) und sicheren, zuverlässigen Aufzeichnung und Übertragung von Informationen. Dies wird je nach Art der Information und dem Anwendungsbereich unterschiedlich realisiert. Effizienz wird durch Reduzierung der Komplexität erreicht, wodurch auch die Kapazität des Codes abnimmt. Dazu werden anstelle der Information in ihrer vorliegenden Form einfachere Elemente und Kombinationen von diesen verwendet. Diese Kombinationen verweisen auf die ursprüngliche Information. Je häufiger etwas verwendet wird, desto geringer sollte der Aufwand für die Verarbeitung eines Elements sein.
Codes beinhalten zwei Aspekte von Effizienz:
* Einerseits ersetzen sie das Ursprüngliche durch einen reinen Verweis auf dieses (das Bezeichnete wird durch das Codewort ersetzt) und benötigen daher nur einen Vorrat an Verweisen, der Wiedererkennbarkeit und Unterscheidbarkeit garantiert (Irrtumsfreiheit).
* Zweitens benutzen sie meistens ein Baukastensystem, indem häufigere Verweise durch kurze (wenigelementige) Kombinationen und seltenere Verweise durch längere (vielelementige) Kombinationen bereitgestellt sind. Dadurch werden die einfachsten Elemente (Bauelemente, Zeichen) möglichst häufig verwendet bzw. wiederverwendet (nämlich in fast allen Verweisen).
In einem größeren Rahmen werden Codes – unabhängig von ihrer eigenen Raffinesse – erst durch die wiederholte Verwendung als Hilfsmittel zur Informationsübertragung wirklich effizient. Denn die Verständlichkeit beim lesenden System setzt auch in diesem irgendeine vorbereitende Organisation (zum Beispiel Lernen) voraus. Codes werden daher zu einem Bestandteil von Kultur von Systemen (zum Beispiel Landessprache, technische Standards) und entwickeln eine gewisse Beharrlichkeit gegen Änderungen. Die Energieminimierung macht Codes attraktiv für die Informationsübertragung unter besonderen Bedingungen: große Entfernungen, große Zeitspannen, große Empfängerzahl, Übertragung mit minimalem Aufwand in Notsituationen, Übertragung mit Hilfe anderer Systeme, die in diesem Energie- und Strukturdynamikbereich arbeiten.
Die Effizienz kann gesteigert werden durch:
* Die Benutzung von Verweisen, auch in anderen Bereichen, wie zum Beispiel Simulation.
* Mehrere aufeinanderfolgende Verweise. Über eine lange Kette kann auch indirekt eine Wirkung erzielt werden.
* Die Benutzung eines Baukastensystems, wenn hierdurch die Verwendung häufiger einfacher Elemente gefördert wird.
Niklas Luhmann benutzt den Terminus technicus Codes als Bezeichnung für standardisierte Differenzen (Leitdifferenz).
In der Nachrichtentechnik spricht man von der Quellenkodierung.

## Redundanz

Ein Code kann so aufgebaut sein, dass das Ergebnis, in das er eine Information kodiert, überflüssige, also redundante Anteile enthält. Das heißt, die erzeugte Abfolge von Symbolen enthält Daten, die nicht zum Ziel führen, und die, wenn man sie falsch dekodiert, ein widersprüchliches Ergebnis ergeben.
Im einfachsten Fall wird dasselbe noch einmal wiederholt. Aber jede erhöhte Vorhersagbarkeit von Zeichen ist Redundanz: So sind zum Beispiel die u nach q im Schriftdeutschen alle redundant, da auf ein q immer ein u folgt. Es würde also keinerlei Information verloren gehen, wenn alle auf ein q folgenden u entfernt würden. Die Redundanz hilft einem jedoch, wichtige Informationen trotz eines partiellen Datenverlustes noch entziffern und benutzen zu können. Sie schützt also vor Informationsverlust. Zudem erlaubt sie, verfälschte Information als solche zu erkennen.
In der Nachrichtentechnik spricht man von der Kanalkodierung.

## Beispiele für Codes

* In der Biologie ist der genetische Code eine Regel, nach der während der Proteinbiosynthese die Informationen der DNA/RNA in Aminosäuresequenzen übersetzt werden.
* In der Gesellschaft sind Sprache und Schrift als Codesysteme zu betrachten; siehe auch Bernstein-Hypothese.
** In der Sprache selbst wiederum ist ein Code ein Merkmal der verbalen Kommunikation; in der Soziolinguistik der Soziolekt.
* In der großen Luftfahrt werden IATA-Codes und ICAO-Codes benutzt
* Im Rahmen der Hafenstaatkontrolle wird zur rechtssicheren Beschreibung festgestellter Mängel am Schiffszustand sowie bzgl. der Arbeits- und Lebensbedingungen an Bord eine „List of Paris MoU deficiency codes“ verwendet – eine Art „technischer Diagnose-Code“, der in seiner jeweils gültigen Fassung veröffentlicht wird.
* Unter anderem in der Warenwirtschaft und Logistik werden verschiedene Codes, so genannte Strichcodes, verwendet, mithilfe derer Informationen über Waren und dergleichen in einer Folge verschieden breiter schwarzer und weißer Streifen („Strichen“) dargestellt werden. Inkorrekt werden im allgemeinen Sprachgebrauch auch die Streifenfolgen selbst als „Strichcode“ bezeichnet. Neuzeitliche Nachfolger sind so genannte 2D-Codes, z. B. der QR-Code.
* Kodierung in der Medizin nach ICD-10.
* Für Währungen gibt es die ISO-4217-Codes als Abkürzungen.
* In der Videotechnik werden Farbinformationen kodiert (z. B. YUV-Farbmodell) und ggf. mit einem auf den Farbraum abgestimmten Verfahren komprimiert, vereinfacht Videokodierung genannt.

### Fehlererkennende Codes

* Die International Standard Book Number (ISBN) dient zur eindeutigen Identifizierung von Büchern und stellt einen fehlererkennenden Code dar
* Die International Standard Serial Number (ISSN) dient zur eindeutigen Identifizierung von Zeitschriften und Schriftenreihen; sie stellt ebenfalls einen fehlererkennenden Code dar
* EAN als fehlererkennender Code

### Geheimcodes

* Im Gegensatz zu den hier hauptsächlich behandelten Codes, die „offene“ Codes sind, also eine allgemein bekannte „öffentliche“ Abbildungsvorschrift nutzen, spricht man in der Kryptologie von Geheimcodes. Diese werden beispielsweise mithilfe geheimer Codebücher definiert, in denen gewissen Klartextausdrücken bestimmte Geheimtexte zugeordnet werden. Zweck ist hier die Verschlüsselung von Informationen. Ein berühmtes Beispiel ist die Zimmermann-Depesche, deren Verschlüsselung allerdings nicht ausreichend stark war, und die deshalb entziffert („gebrochen“) werden konnte, was zum Eintritt der Vereinigten Staaten in den Ersten Weltkrieg beitrug.

### Informatik

* Im Computer wird unter anderem der ASCII (American Standard Code for Information Interchange) benutzt, um Buchstaben, Ziffern und Satzzeichen durch Bitfolgen darzustellen – ein sogenannter Binärcode. Der Unicode-Standard umfasst heute nahezu alle Zeichensysteme der Welt.
* Beim Programmieren übersetzt der Programmierer die Vorgaben zu Algorithmen in einen Quelltext, der gemäß der Syntax einer bestimmten Programmiersprache formuliert ist und der im Zug der weiteren Entwicklung eines Computerprogramms in weitere Formen von Programmcode übersetzt wird – wie Zwischencode (z. B. Bytecode). Der final entstehende Maschinencode enthält die Maschinenbefehle, die ein Prozessor ausführen kann.
* In der Datenübertragung benutzt man Leitungscodes.
* Im Internet findet sich der Geekcode in E-Mails oder im Usenet.

## Encodierung (Psychologie)

Als Encodierung bezeichnet die Psychologie alle Prozesse bei einem Individuum, die externe Informationen verarbeiten und daraus eine subjektiv bedeutungsvolle mentale Repräsentation erzeugen. Bei dieser Speicherung von Informationen im Gedächtnis wird unterschieden zwischen automatischer und aktiver, semantischer und visueller Encodierung. Automatische Encodierung ist die unbeabsichtigte und weitgehend unbewusste Einspeicherung von Informationen, während die aktive Encodierung willentlich und bewusst geschieht. Die semantische Encodierung taucht bei einer Liste von Worten oder Vokabeln auf, bei denen sich jemand lediglich an deren Inhalt und Bedeutung erinnert. Dagegen führt die visuelle Encodierung dazu, dass Informationen eher visuell oder akustisch erinnert werden. Es werden nur diejenigen Informationen weiterverarbeitet, welche die selektive Wahrnehmungsbarriere überschritten haben. Die Encodierung ist neben der Konsolidierung einer der Prozessschritte beim Lernen und auch im Gedächtnis bei der Aufnahme von Sinneswahrnehmungen.