<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Idiom_%28Softwaretechnik%29</id>
	<title>Idiom (Softwaretechnik) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Idiom_%28Softwaretechnik%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Idiom_(Softwaretechnik)&amp;action=history"/>
	<updated>2026-06-07T16:22:29Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Idiom_(Softwaretechnik)&amp;diff=656215&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Idiom_(Softwaretechnik)&amp;diff=656215&amp;oldid=prev"/>
		<updated>2025-06-01T11:42:20Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In der [[Softwaretechnik]] gehören &amp;#039;&amp;#039;&amp;#039;Idiome&amp;#039;&amp;#039;&amp;#039; zu den [[Entwurfsmuster|Mustern]] ([[Englische Sprache|englisch]] &amp;#039;&amp;#039;pattern&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
==  Idiomatische Programme / Idiomatische Programmierung ==&lt;br /&gt;
In der Programmierung ist die Bezeichnung für &amp;#039;&amp;#039;Idiomatische Programme&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;Idiomatische Programmierung&amp;#039;&amp;#039; gebräuchlich&amp;lt;ref&amp;gt;{{Webarchiv|url=http://benchmarksgame.alioth.debian.org/play.html |wayback=20180129030131 |text=The Computer Language Benchmarks Game}}, abgerufen am 19. November 2020.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://anomaly.org/wade/blog/2010/04/which_programming_languages_ar.html Which Programming Languages are Write-Only?, abgerufen am 10. Februar 2017]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[https://dasperfektefachgespraech.de/ Lernhilfen zur Ausbildung Fachinformatiker, abgerufen am 10. Februar 2017]&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;cpp-design-goals&amp;quot;&amp;gt;{{cite web|url=https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html|title=C++ Design Goals in the Context of Rust|last=Walton|first=Patrick|date=2010-12-05|accessdate=2017-02-10|quote=... It’s impossible to be “as fast as C” in all cases while remaining safe... C++ allows all sorts of low-level tricks, mostly involving circumventing the type system, that offer practically unlimited avenues for optimization. In practice, though, C++ programmers restrict themselves to a few tools for the vast majority of the code they write, including stack-allocated variables owned by one function and passed by alias, uniquely owned objects (often used with &amp;lt;code&amp;gt;auto_ptr&amp;lt;/code&amp;gt; or the C++0x &amp;lt;code&amp;gt;unique_ptr&amp;lt;/code&amp;gt;), and reference counting via &amp;lt;code&amp;gt;shared_ptr&amp;lt;/code&amp;gt; or COM. One of the goals of Rust’s type system is to support these patterns exactly as C++ does, but to enforce their safe usage. In this way, the goal is to be competitive with the vast majority of idiomatic C++ in performance, while remaining memory-safe...}}&amp;lt;/ref&amp;gt;. 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 (Programmiersprache)|C]] oder [[Assemblersprache|Assembler]] hat. In didaktischen Medien, insbesondere englischsprachigen, wird hierzu oftmals auf Besonderheiten &amp;#039;&amp;#039;idiomatischen&amp;#039;&amp;#039; Sprachstils hingewiesen. Es ist also umgangssprachlich eine Mischung aus [[Programmierstil]], Verwendung der zur Verfügung stehenden Sprachmittel und einfachen Problemlösungsvorlagen gemeint.&lt;br /&gt;
&lt;br /&gt;
Es ergibt sich eine Verwandtheit zum Begriff der [[Redewendung]] (Idiom) in natürlichen Sprachen. Analog lässt sich ein &amp;#039;&amp;#039;Idiom&amp;#039;&amp;#039; als Muster wie folgt subsumieren:&lt;br /&gt;
&lt;br /&gt;
== Idiome ==&lt;br /&gt;
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 &amp;lt;code&amp;gt;print &amp;#039;Hello World&amp;#039;&amp;lt;/code&amp;gt; sein.&lt;br /&gt;
&lt;br /&gt;
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.“&amp;lt;ref&amp;gt;{{Literatur |Autor=Buschmann et al. |Titel=Pattern-orientierte Software-Architektur: Ein Pattern-System |Verlag=Addison-Wesley |ISBN=3-8273-1282-5 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Idiom zeichnet sich somit durch folgende Eigenschaften aus:&lt;br /&gt;
* es ist programmiersprachenspezifisch&lt;br /&gt;
* es ist zu finden im Feinentwurf und Implementierung (niedrige Abstraktionsebene). Es geht also dabei um die Implementierung von speziellen Entwurfsaspekten.&lt;br /&gt;
&lt;br /&gt;
Es wird demzufolge beispielsweise folgendermaßen angewendet:&lt;br /&gt;
* Konkrete Implementierung eines Entwurfsmusters.&lt;br /&gt;
* Programmierkonventionen: Grundgedanke “The code is not yours”, z.&amp;amp;nbsp;B. Codeformatierung, Namenskonventionen, Kommentarformatierung usw. Dies kann mit oder auch ohne technische Unterstützung &amp;#039;&amp;#039;([[Checkstyle]]/Pretty Printer)&amp;#039;&amp;#039; geschehen.&lt;br /&gt;
* Typische Code-Strukturen, z.&amp;amp;nbsp;B. minimale Klassenschnittstelle&lt;br /&gt;
* Typische Lösungsansätze für die durch die Programmiersprache nicht direkt unterstützten Probleme, z.&amp;amp;nbsp;B. Speicherverwaltung&lt;br /&gt;
&lt;br /&gt;
Beispiele für Idiome sind in der Literatur zu finden, beispielsweise für [[Smalltalk (Programmiersprache)|Smalltalk]],&amp;lt;ref&amp;gt;{{Literatur |Autor=Kent Beck |Titel=Smalltalk Best Practice Patterns |Verlag=Prentice Hall |Datum=1997 |ISBN=0-13-476904-X}}&amp;lt;/ref&amp;gt; [[C++]]&amp;lt;ref&amp;gt;{{Literatur |Autor=James Coplien |Titel=Advanced C++ Programming Styles and Idioms |Verlag=Addison-Wesley |Datum=1992 |ISBN=0-201-54855-0 |Sprache=en}}&amp;lt;/ref&amp;gt; oder [[C-Sharp|C#]].&amp;lt;ref&amp;gt;{{Literatur&lt;br /&gt;
 |Autor=Bill Wagner&lt;br /&gt;
 |Titel=Effective C# (covers C# 4.0): 50 Specific Ways to Improve Your C#&lt;br /&gt;
 |Auflage=2&lt;br /&gt;
 |Verlag=Addison-Wesley&lt;br /&gt;
 |Ort=Amsterdam&lt;br /&gt;
 |ISBN=978-0-321-65870-8&lt;br /&gt;
 |Sammelwerk=Effective Software Development&lt;br /&gt;
 |Sprache=en&lt;br /&gt;
 |Datum=2010-03-05}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Literatur&lt;br /&gt;
 |Autor=Bill Wagner&lt;br /&gt;
 |Titel=More Effective C#: 50 Specific Ways to Improve Your C#&lt;br /&gt;
 |Auflage=1&lt;br /&gt;
 |Verlag=Addison-Wesley&lt;br /&gt;
 |Ort=Amsterdam&lt;br /&gt;
 |ISBN=978-0-321-48589-2&lt;br /&gt;
 |Sammelwerk=Effective Software Development&lt;br /&gt;
 |Sprache=en&lt;br /&gt;
 |Datum=2008}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Wiktionary|Idiom}}&lt;br /&gt;
* [https://www.programming-idioms.org programming-idioms.org] (englischsprachig) erklärt Implementierungen in gebräuchliche Programmiersprachen.&lt;br /&gt;
* [[b:en:More C++ Idioms|More C++ Idioms]] in den englischsprachigen [[Wikibooks]]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Softwaretechnik]]&lt;br /&gt;
[[Kategorie:Softwarearchitektur]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>