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<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20180129030131
| {{#ifeq: 20180129030131 | *
| {{#if: The Computer Language Benchmarks Game | {{#invoke:WLink|getEscapedTitle|The Computer Language Benchmarks Game}} | {{#invoke:Webarchiv|getdomain|http://benchmarksgame.alioth.debian.org/play.html}} }} (Archivversionen)
| {{#iferror: {{#time: j. F Y|20180129030131}}
| {{#if: || }}Der Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
| {{#if: The Computer Language Benchmarks Game | {{#invoke:WLink|getEscapedTitle|The Computer Language Benchmarks Game}} | {{#invoke:Webarchiv|getdomain|http://benchmarksgame.alioth.debian.org/play.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y|20180129030131}} im Internet Archive{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
}}
| {{#if:
| {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
| {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
| 16= {{#if: The Computer Language Benchmarks Game | {{#invoke:WLink|getEscapedTitle|The Computer Language Benchmarks Game}} | {{#invoke:Webarchiv|getdomain|http://benchmarksgame.alioth.debian.org/play.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| 9 = {{#if: The Computer Language Benchmarks Game | {{#invoke:WLink|getEscapedTitle|The Computer Language Benchmarks Game}} | {{#invoke:Webarchiv|getdomain|http://benchmarksgame.alioth.debian.org/play.html}} }} {{#ifeq: | [] | [ | ( }}{{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
| #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!{{#if: || }}
}}
| c|{{{webciteID}}}}} {{#if: The Computer Language Benchmarks Game | {{#invoke:WLink|getEscapedTitle|The Computer Language Benchmarks Game}} | {{#invoke:Webarchiv|getdomain|http://benchmarksgame.alioth.debian.org/play.html}} }} ({{#if: {{#if: | {{{archiv-bot}}} | }} | des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if: | ; }}{{#ifeq: | [] | ] | ) }}
}}
| {{#if:
| Vorlage:Webarchiv/Today
| {{#if:
| Vorlage:Webarchiv/Generisch
| {{#if: The Computer Language Benchmarks Game | {{#invoke:WLink|getEscapedTitle|The Computer Language Benchmarks Game}} | {{#invoke:Webarchiv|getdomain|http://benchmarksgame.alioth.debian.org/play.html}} }}
}}}}}}}}{{#if:
| Vorlage:Webarchiv/archiv-bot
}}{{#invoke:TemplatePar|check
|all = url=
|opt = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
|cat = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
|errNS = 0
|template = Vorlage:Webarchiv
|format = *
|preview = 1
}}{{#ifexpr: {{#if:20180129030131|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
}}{{#if:
| {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
| web.archive.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}}
| webcitation.org =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}}
| archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn =
{{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
}}{{#if:
| {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
| }}
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
}}
| {{#if:
| {{#if: || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
}}
}}{{#if:{{#invoke:URLutil|isHostPathResource|http://benchmarksgame.alioth.debian.org/play.html}}
|| {{#if: || }}
}}{{#if: The Computer Language Benchmarks Game
| {{#if: {{#invoke:WLink|isBracketedLink|The Computer Language Benchmarks Game}}
| {{#if: || }}
}}
| {{#if: || }}
}}{{#switch:
|addlarchives|addlpages= {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
}}{{#ifeq: {{#invoke:Str|find|http://benchmarksgame.alioth.debian.org/play.html%7Carchiv}} |-1
|| {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://benchmarksgame.alioth.debian.org/play.html%7C4}}%7Chttp}} |-1
|| {{#switch: {{#invoke:Webarchiv|getdomain|http://benchmarksgame.alioth.debian.org/play.html }}
| abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org =
| #default = {{#if: || }}{{#if: 1 |}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
}}
}}
}}, abgerufen am 19. November 2020.</ref><ref>Which Programming Languages are Write-Only?, abgerufen am 10. Februar 2017</ref><ref>Lernhilfen zur Ausbildung Fachinformatiker, abgerufen am 10. Februar 2017</ref><ref name="cpp-design-goals">{{#if:Vorlage:Cite book/URL|{{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}| |}}}}{{#if:{{#if:
|
| {{#if: Walton
| {{#if:
| [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}
}}Vorlage:Cite book/Name|{{#if:
|
| {{#if: Walton
| {{#if:
| [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:
| {{#if:
| , [[|Vorlage:Cite book/Name]]
| Vorlage:Cite book/Name
}}
}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}{{#if:|Vorlage:Cite book/Name}}
}}Vorlage:Cite book/Name: }}{{#if:Vorlage:Cite book/URL|{{#if:{{#if: C++ Design Goals in the Context of Rust | {{#invoke: WLink|getEscapedTitle|1=C++ Design Goals in the Context of Rust}} | ? }}|[{{#invoke:Vorlage:Internetquelle|archivURL|1={{#invoke:URLutil|getNormalized|1=Vorlage:Cite book/URL}}}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#if: C++ Design Goals in the Context of Rust | {{#invoke: WLink|getEscapedTitle|1=C++ Design Goals in the Context of Rust}} | ? }}}}]{{#if:| ()}}{{#if:{{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}| {{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}}}}}}}|{{#if:https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html%7C{{#if:{{#invoke:TemplUtl%7Cfaculty%7CVorlage:Cite book/URL}}|{{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1={{#if: C++ Design Goals in the Context of Rust | {{#invoke: WLink|getEscapedTitle|1=C++ Design Goals in the Context of Rust}} | ? }}}}}}|[{{#invoke:URLutil|getNormalized|1=https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html}} {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{#invoke:WLink|getEscapedTitle|1={{#if: C++ Design Goals in the Context of Rust | {{#invoke: WLink|getEscapedTitle|1=C++ Design Goals in the Context of Rust}} | ? }}}}}}]}}{{#if:| ({{#if:{{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}Vorlage:Cite book/URL{{#if: | via {{{via}}} }}Vorlage:Cite book/DateVorlage:Cite book/URL{{#if: {{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2017-02-10
| {{#if: {{#invoke:DateTime|format|2017-02-10 |ISO|noerror=1}} || 1 }}
| 1
}}}}||1}}}}
| )
| {{#if:{{#ifeq:|de||{{#if:|1}}}}{{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}| ;
| )}}}}}}{{#if:{{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}| {{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}}}}}}}}}{{#if:https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html}}%7C%7C}}}}{{#if:{{#if: C++ Design Goals in the Context of Rust | {{#invoke: WLink|getEscapedTitle|1=C++ Design Goals in the Context of Rust}} | ? }}|{{#if:{{#invoke:WLink|isValidLinktext|1={{#if: C++ Design Goals in the Context of Rust | {{#invoke: WLink|getEscapedTitle|1=C++ Design Goals in the Context of Rust}} | ? }}|lines=0}}||}}}}{{#if: | In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel=}}}}{{#if: {{#if: | via {{{via}}} }}| {{#if: | via {{{via}}} }}{{#if: Vorlage:Cite book/DateVorlage:Cite book/URL|,|{{#if: {{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2017-02-10
| {{#if: {{#invoke:DateTime|format|2017-02-10 |ISO|noerror=1}} || 1 }}
| 1
}}}}||,}}}}}}}}{{#if: Vorlage:Cite book/Date| {{#if:{{#invoke:DateTime|format|Vorlage:Cite book/Date|noerror=1}}
|{{#invoke:DateTime|format|Vorlage:Cite book/Date|T._Monat JJJJ}}
|{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum=Vorlage:Cite book/Date|class=Zitationswartung}} }}{{#if: Vorlage:Cite book/URL|,|{{#if: {{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2017-02-10
| {{#if: {{#invoke:DateTime|format|2017-02-10 |ISO|noerror=1}} || 1 }}
| 1
}}}}||,}}}}}}}}{{#if: | S. {{#if: Vorlage:Cite book/URL|,|{{#if: {{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2017-02-10
| {{#if: {{#invoke:DateTime|format|2017-02-10 |ISO|noerror=1}} || 1 }}
| 1
}}}}||,}}}}}}}}{{#if: Vorlage:Cite book/URL{{#invoke:TemplUtl|faculty|Vorlage:Cite book/URL}}| {{#if:Vorlage:Cite book/Date{{#if: | via {{{via}}} }}|{{#if:Vorlage:Cite book/URL|archiviert|ehemals}}|{{#if:Vorlage:Cite book/URL|Archiviert|Ehemals}}}} {{#if:Vorlage:Cite book/URL|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|Vorlage:Cite book/URL}}| (nicht mehr online verfügbar)}}{{#if: Vorlage:Cite book/URL| am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|Vorlage:Cite book/URL{{#if:656215||(?)}}}}}}{{#if: ... 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 auto_ptr or the C++0x unique_ptr), and reference counting via shared_ptr 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...{{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}}|;}}}}{{#if: {{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}}| {{#if:Vorlage:Cite book/Date{{#if: | via {{{via}}} }}Vorlage:Cite book/URL{{#invoke:TemplUtl|faculty|Vorlage:Cite book/URL}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| {{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} |ISO|noerror=1}} }}
|4=im Jahr
|7=im
|10=am
|#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf={{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}}|class=Zitationswartung}} }} {{#invoke:DateTime|format|{{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}}|T._Monat JJJJ}}
| {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:|de||{{#if:|1}}}}{{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}|{{#if:{{#if: | ( }}{{#if: | Originaltitel: {{{script-title}}} }}{{#if: | {{#if: | , }}deutsch: {{{trans-title}}} }}{{#if: | ) }}Vorlage:Cite book/URL{{#if: | via {{{via}}} }}Vorlage:Cite book/DateVorlage:Cite book/URL{{#if: {{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2017-02-10
| {{#if: {{#invoke:DateTime|format|2017-02-10 |ISO|noerror=1}} || 1 }}
| 1
}}}}||1}}}}
| (
| {{#if: | | (}}
}}{{#ifeq:{{#if:||de}}|de||
{{#invoke:Multilingual|format||slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: {{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}|{{#ifeq:{{#if:||de}}|de||, }}{{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}}})}}{{#if: Vorlage:Cite book/DateVorlage:Cite book/URL{{#if: {{#if: 2017-02-10
| {{#iferror: {{#invoke:DateTime|format|2017-02-10|ISO}}
| 0001-01-01
}}
| 0001-01-01
}} | {{#if:{{#invoke:TemplUtl|faculty|{{#if: 2017-02-10
| {{#if: {{#invoke:DateTime|format|2017-02-10 |ISO|noerror=1}} || 1 }}
| 1
}}}}||1}} }}{{#if: | {{{at}}}{{#if: | , }}}}{{#if: | {{{id}}}{{#if: | , }}}}{{#if: | {{{doi}}}{{#if: | , }}}}{{#if: | PMID {{{pmid}}}{{#if: | , }}}}{{#if: | {{{arxiv}}}{{#if: | , }}}}{{#if: | Bibcode: {{{bibcode}}}{{#if: | , }}}}{{#if: | Volltext bei PMC: {{{pmc}}}{{#if: | , }}}}... 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 auto_ptr or the C++0x unique_ptr), and reference counting via shared_ptr 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...|{{#if: ... 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 auto_ptr or the C++0x unique_ptr), and reference counting via shared_ptr 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...|: {{
#if:
| „{{
#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| Vorlage:Str trim
| {{#invoke:Vorlage:lang|flat}}
}}“
| {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
| „Vorlage:Str trim“
| {{#invoke:Text|quote
|1={{#if:
| {{#invoke:Vorlage:lang|flat}}
| {{#invoke:Vorlage:lang|flat}} }}
|2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
|3=1}} }}
}}{{#if:
| (<templatestyles src="Person/styles.css" />{{#if: | : }}{{#if: | , deutsch: „“ }})
| {{#if:
| ({{#if: | , deutsch: „“ }})
| {{#if: | (deutsch: „“) }}
}}
}}{{#if: ... 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 auto_ptr or the C++0x unique_ptr), and reference counting via shared_ptr 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...
| {{#if:
| {{#if: ... 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 auto_ptr or the C++0x unique_ptr), and reference counting via shared_ptr 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...
| Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
| Vorlage:": Text= fehlt }}{{#if: | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
| Vorlage:": Ungültiger Wert: ref=
| {{{ref}}} }}
}}|.{{#if:{{#invoke:TemplUtl|faculty|Vorlage:Cite book/URL}}|{{#if:Vorlage:Cite book/URL||{{#ifeq: Vorlage:Cite book/URL | JaKeinHinweis |{{#switch:
|0|=Vorlage:Toter Link/Core{{#if: https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html | {{#if: | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html | {{#if:{{#invoke:URLutil|isWebURL|https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html | {{#if:{{#invoke:URLutil|isWebURL|https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: deadurl |checked|deadurl|= |#default= {{#if: || }} }}[https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html }}|{{#switch: |0|=Vorlage:Toter Link/Core{{#if: https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html | {{#if: | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }} | (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.) }}{{#switch: |no|0|= |#default={{#if: || }} }}{{#invoke:TemplatePar|check |opt = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html | {{#if:{{#invoke:URLutil|isWebURL|https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html}} || {{#if: || }} }} | {{#if: | {{#if: || }} | {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if: | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. ) {{#if: | {{#if: | | Vorlage:Toter Link/archivebot }} }}Vorlage:Toter Link/Core{{#switch: |no|0|= |#default= {{#if: || }} }}{{#invoke:TemplatePar|check |all = inline= url= |opt = datum= date= archivebot= bot= botlauf= fix-attempted= checked= |cat = Wikipedia:Vorlagenfehler/Vorlage:Toter Link |errNS = 0 |template = Vorlage:Toter Link |format = |preview = 1 }}{{#if: https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html | {{#if:{{#invoke:URLutil|isWebURL|https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html}} || {{#if: || }} }} }}{{#if: | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}} || {{#if: || }} }} }}{{#switch: |checked|deadurl|= |#default= {{#if: || }} }}[https://pcwalton.blogspot.com/2010/12/c-design-goals-in-context-of-rust.html }} }}}}}}}}}}{{#if:| {{#invoke:Vorlage:Internetquelle|archivBot|stamp=|text={{#if:Vorlage:Cite book/URL|Vorlage:Webarchiv/archiv-bot}}
}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}{{#invoke:TemplatePar|check
|all = url= title= |opt = script-title= trans-title= archive-url= archiveurl= archive-date= archivedate= authors= vauthors= author= author1= authorlink= authorlink1= author-link= author-link1= author2= author-link2= author3= author-link3= author4= author-link4= author5= author-link5= author6= author7= author8= author9= last= first= last1= first1= last2= first2= last3= first3= last4= first4= last5= first5= last6= first6= last7= first7= last8= first8= last9= first9= others= language= lang= format= website= work= publisher= via= pages= page= at= date= year= id= bibcode= doi= pmid= pmc= arxiv= archivedate= archive-date= archivebot= accessdate= access-date= quote= comment= url-status= ref= url-access= orig-year= editor= editor-link= editor-last= editor-first= editor1-link= editor1-last= editor1-first= editor2= editor2-last= editor2-first= editor2-link= department= series= agency= location= place= publication-place= publication-date= type= asin= doi-broken-date= isbn= issn= jfm= jstor= lccn= mr= oclc= ol= osti= rfc= ssrn= zbl= postscript= df= mode= display-authors= display-editors= book-title= contribution-url= offline= coauthors= month= authorlink2= authorlink3= authorlink4= authorlink5= last10= first10= last11= first11= last12= first12= last13= first13= last14= first14= last15= first15= last16= first16= last17= first17= last18= first18= last19= first19= last20= first20= last21= first21= |cat = Wikipedia:Vorlagenfehler/Vorlage:Cite web |errNS = 0 |template = Vorlage:Cite web |format = |preview = 1 }}Vorlage:Cite book/URL{{#if: Vorlage:Cite book/Webarchiv | Vorlage:Cite book/Meldung }}{{#if: | Vorlage:Cite book/Meldung }}Vorlage:Cite book/Meldung2{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#if: Vorlage:Cite book/ParamBool | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:Walton|^^|0|1}}{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:2017-02-10|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}{{#ifexpr: {{#ifeq:^^|^^|0|1}}{{#ifeq:^^|^^||+1}} > 1 | Vorlage:Cite book/Meldung }}</ref>. 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.“<ref>{{#invoke:Vorlage:Literatur|f}}</ref>
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,<ref>{{#invoke:Vorlage:Literatur|f}}</ref> C++<ref>{{#invoke:Vorlage:Literatur|f}}</ref> oder C#.<ref>{{#invoke:Vorlage:Literatur|f}}</ref><ref>{{#invoke:Vorlage:Literatur|f}}</ref>
Weblinks
|1|= – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen |0|-= |X|x= |#default= –
}}{{#if:| {{#ifeq: {{{lang}}} | de | {{#ifeq: 0 | 0 | }} | ({{#invoke:Multilingual|format|{{{lang}}}|slang=!|shift=m}}) }}}}{{#invoke:TemplatePar|check
|opt= 1= 2= lang= suffix= |template=Vorlage:Wiktionary |cat=Wikipedia:Vorlagenfehler/Schwesterprojekt }}
- programming-idioms.org (englischsprachig) erklärt Implementierungen in gebräuchliche Programmiersprachen.
- More C++ Idioms in den englischsprachigen Wikibooks
Einzelnachweise
<references />
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Archiv-URL
- Wikipedia:Vorlagenfehler/Parameter:URL
- Wikipedia:Vorlagenfehler/Parameter:Linktext
- Wikipedia:Vorlagenfehler/Vorlage:Webarchiv/Linktext fehlt
- Wikipedia:Vorlagenfehler/Parameter:Datum
- Wikipedia:Vorlagenfehler/Vorlage:"
- Wikipedia:Weblink offline fix-attempted
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link
- Wikipedia:Vorlagenfehler/Vorlage:Toter Link/URL fehlt
- Wikipedia:Vorlagenfehler/Schwesterprojekt
- Softwaretechnik
- Softwarearchitektur