Idiom (Softwaretechnik)
# Idiom (Softwaretechnik)

In der Softwaretechnik gehören Idiome zu den Mustern (englisch pattern).

## Idiomatische Programme / Idiomatische Programmierung

In der Programmierung ist die Bezeichnung für Idiomatische Programme oder Idiomatische Programmierung gebräuchlich. Damit ist umgangssprachlich gemeint, ob der Programmierer den Quelltext so verfasst hat, wie es Experten in dieser Programmiersprache auch tun würden. Beispielsweise, ob sich ein Programm in C++ an übliche Konventionen hält, nicht zu viele, aber auch nicht zu wenig Möglichkeiten dieser Sprache ausnutzt oder ob es vielleicht im Gegensatz dazu Anzeichen gibt, dass der Programmierer eher Erfahrungen mit einer anderen Programmiersprache wie etwa C oder Assembler hat. In didaktischen Medien, insbesondere englischsprachigen, wird hierzu oftmals auf Besonderheiten idiomatischen Sprachstils hingewiesen. Es ist also umgangssprachlich eine Mischung aus Programmierstil, Verwendung der zur Verfügung stehenden Sprachmittel und einfachen Problemlösungsvorlagen gemeint.

Es ergibt sich eine Verwandtheit zum Begriff der Redewendung (Idiom) in natürlichen Sprachen. Analog lässt sich ein Idiom als Muster wie folgt subsumieren:

## Idiome

Idiome können als Umsetzungen (Implementierungen) von abstrakten Mustern in einer spezifischen Programmiersprache verstanden werden. Also wie einfache Aufgaben (niedriger Abstraktionsstufe) in einer Programmiersprache gelöst werden. Es gibt keine festen anerkannten Idiome, allerdings gibt es eine Reihe von verbreiteten Idiomen, die helfen, die Syntax einer Programmiersprache zu verstehen und zu lernen. Bekanntestes Beispiel dürfte hierbei print 'Hello World' sein.

Buschmann definiert: „Ein Idiom ist ein programmiersprachenspezifisches Muster und damit ein Muster auf einer niedrigen Abstraktionsebene. Ein Idiom beschreibt, wie man bestimmte Aspekte von Komponenten oder Beziehungen zwischen ihnen mit den Mitteln einer bestimmten Programmiersprache implementiert.“

Ein Idiom zeichnet sich somit durch folgende Eigenschaften aus:

* es ist programmiersprachenspezifisch
* es ist zu finden im Feinentwurf und Implementierung (niedrige Abstraktionsebene). Es geht also dabei um die Implementierung von speziellen Entwurfsaspekten.

Es wird demzufolge beispielsweise folgendermaßen angewendet:

* Konkrete Implementierung eines Entwurfsmusters.
* Programmierkonventionen: Grundgedanke “The code is not yours”, z. B. Codeformatierung, Namenskonventionen, Kommentarformatierung usw. Dies kann mit oder auch ohne technische Unterstützung (Checkstyle/Pretty Printer) geschehen.
* Typische Code-Strukturen, z. B. minimale Klassenschnittstelle
* Typische Lösungsansätze für die durch die Programmiersprache nicht direkt unterstützten Probleme, z. B. Speicherverwaltung

Beispiele für Idiome sind in der Literatur zu finden, beispielsweise für Smalltalk, C++ oder C#.

