https://de.wikipedia.org/w/index.php?action=history&feed=atom&title=Future_%28Programmierung%29 Future (Programmierung) - Versionsgeschichte 2025-11-11T17:32:53Z Versionsgeschichte dieser Seite in Wikipedia MediaWiki 1.46.0-wmf.1 https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=253956707&oldid=prev InkoBot: Bot: Ersetze hartkodierte Farbangabe durch Farbklasse 2025-03-06T17:44:16Z <p>Bot: Ersetze hartkodierte Farbangabe durch Farbklasse</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 6. März 2025, 18:44 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 40:</td> <td colspan="2" class="diff-lineno">Zeile 40:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>! X-Thread</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>! X-Thread</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>! Y-Thread</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>! Y-Thread</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>|<del style="font-weight: bold; text-decoration: none;">--</del>-</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| ''starte'' berechneX()</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| ''starte'' berechneX()</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| <del style="font-weight: bold; text-decoration: none;">style</del>="<del style="font-weight: bold; text-decoration: none;">background</del>-<del style="font-weight: bold; text-decoration: none;">color:white</del>" | &amp;nbsp;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| <ins style="font-weight: bold; text-decoration: none;">class</ins>="<ins style="font-weight: bold; text-decoration: none;">hintergrundfarbe</ins>-<ins style="font-weight: bold; text-decoration: none;">basis</ins>" | &amp;nbsp;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| <del style="font-weight: bold; text-decoration: none;">style</del>="<del style="font-weight: bold; text-decoration: none;">background</del>-<del style="font-weight: bold; text-decoration: none;">color:white</del>" rowspan="2" | &amp;nbsp;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| <ins style="font-weight: bold; text-decoration: none;">class</ins>="<ins style="font-weight: bold; text-decoration: none;">hintergrundfarbe</ins>-<ins style="font-weight: bold; text-decoration: none;">basis</ins>" rowspan="2" | &amp;nbsp;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>|<del style="font-weight: bold; text-decoration: none;">--</del>-</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| ''starte'' berechneY()</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| ''starte'' berechneY()</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| rowspan="3" <del style="font-weight: bold; text-decoration: none;">valign</del>="center" | berechneX()</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| rowspan="3" <ins style="font-weight: bold; text-decoration: none;">style</ins>="<ins style="font-weight: bold; text-decoration: none;">vertical-align:</ins>center<ins style="font-weight: bold; text-decoration: none;">;</ins>" | berechneX()</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>|<del style="font-weight: bold; text-decoration: none;">--</del>-</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| berechneZ()</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| berechneZ()</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| rowspan="3" <del style="font-weight: bold; text-decoration: none;">valign</del>="center" | berechneY()</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| rowspan="3" <ins style="font-weight: bold; text-decoration: none;">style</ins>="<ins style="font-weight: bold; text-decoration: none;">vertical-align:</ins>center<ins style="font-weight: bold; text-decoration: none;">;</ins>" | berechneY()</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>|<del style="font-weight: bold; text-decoration: none;">--</del>-</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| <del style="font-weight: bold; text-decoration: none;">style</del>="<del style="font-weight: bold; text-decoration: none;">background</del>-<del style="font-weight: bold; text-decoration: none;">color:white</del>" rowspan="2" | ''warte'' auf x und y</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| <ins style="font-weight: bold; text-decoration: none;">class</ins>="<ins style="font-weight: bold; text-decoration: none;">hintergrundfarbe</ins>-<ins style="font-weight: bold; text-decoration: none;">basis</ins>" rowspan="2" | ''warte'' auf x und y</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>|<del style="font-weight: bold; text-decoration: none;">--</del>-</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| rowspan="2" <del style="font-weight: bold; text-decoration: none;">style</del>="<del style="font-weight: bold; text-decoration: none;">background</del>-<del style="font-weight: bold; text-decoration: none;">color:white</del>" | &amp;nbsp;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| rowspan="2" <ins style="font-weight: bold; text-decoration: none;">class</ins>="<ins style="font-weight: bold; text-decoration: none;">hintergrundfarbe</ins>-<ins style="font-weight: bold; text-decoration: none;">basis</ins>" | &amp;nbsp;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>|<del style="font-weight: bold; text-decoration: none;">--</del>-</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| berechne ergebnis</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>| berechne ergebnis</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>| <del style="font-weight: bold; text-decoration: none;">style</del>="<del style="font-weight: bold; text-decoration: none;">background</del>-<del style="font-weight: bold; text-decoration: none;">color:white</del>" | &amp;nbsp;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>| <ins style="font-weight: bold; text-decoration: none;">class</ins>="<ins style="font-weight: bold; text-decoration: none;">hintergrundfarbe</ins>-<ins style="font-weight: bold; text-decoration: none;">basis</ins>" | &amp;nbsp;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> InkoBot https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=226080732&oldid=prev 2A02:908:1087:59A0:0:0:0:80CB: Rust als Beispiel für Programmiersprachen, die von Haus aus Futures unterstützen 2022-09-11T18:25:44Z <p>Rust als Beispiel für Programmiersprachen, die von Haus aus Futures unterstützen</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 11. September 2022, 19:25 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 10:</td> <td colspan="2" class="diff-lineno">Zeile 10:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;span style="font-family:monospace;"&gt;x @= ''Ausdruck''&lt;/span&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;span style="font-family:monospace;"&gt;x&lt;/span&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;span style="font-family:monospace;"&gt;x&lt;/span&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;span style="font-family:monospace;"&gt;x @= ''Ausdruck''&lt;/span&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;span style="font-family:monospace;"&gt;x&lt;/span&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;span style="font-family:monospace;"&gt;x&lt;/span&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), und – ab Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form.)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt; Auch für [[C++]] stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar. Weitere Programmiersprachen mit Unterstützung für ''Futures'' und ''Promises'' sind [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und [[Scala (Programmiersprache)|Scala]].</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), und – ab Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form.)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt;<ins style="font-weight: bold; text-decoration: none;"> [[Rust (Programmiersprache)|Rust]] stellt ebenfalls ''Futures'' zur Verfügung.</ins> Auch für [[C++]] stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar. Weitere Programmiersprachen mit Unterstützung für ''Futures'' und ''Promises'' sind [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und [[Scala (Programmiersprache)|Scala]].</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[C-Sharp|C# 5.0]] und [[Visual Basic .NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx |titel=Asynchronous programming (Windows Store apps) |werk=MSDN |hrsg=Microsoft |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/ff963556.aspx |titel=Futures |werk=MSDN, Parallel Programming with Microsoft .NET |sprache=en |hrsg=Microsoft |zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/ |titel=Concurrency &amp; Coordination With Futures in C# |autor=Dan Vanderboom |datum=2008-07-03 |werk=Critical Development |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=https://bitbucket.org/mattkotsenas/c-promises/overview |werk=BitBucket |autor=Matt Kotsenas at. al. |zugriff=2014-02-23 |titel=C# Promises |sprache=en}}&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[C-Sharp|C# 5.0]] und [[Visual Basic .NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx |titel=Asynchronous programming (Windows Store apps) |werk=MSDN |hrsg=Microsoft |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/ff963556.aspx |titel=Futures |werk=MSDN, Parallel Programming with Microsoft .NET |sprache=en |hrsg=Microsoft |zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/ |titel=Concurrency &amp; Coordination With Futures in C# |autor=Dan Vanderboom |datum=2008-07-03 |werk=Critical Development |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=https://bitbucket.org/mattkotsenas/c-promises/overview |werk=BitBucket |autor=Matt Kotsenas at. al. |zugriff=2014-02-23 |titel=C# Promises |sprache=en}}&lt;/ref&gt;</div></td> </tr> </table> 2A02:908:1087:59A0:0:0:0:80CB https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=210778158&oldid=prev TaxonBot: Bot: Überarbeitung veralteter Syntax / HTML-Validierung 2021-04-10T11:51:02Z <p>Bot: Überarbeitung veralteter Syntax / <a href="/wiki/Hilfe:LINT" class="mw-redirect" title="Hilfe:LINT">HTML-Validierung</a></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 10. April 2021, 12:51 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 8:</td> <td colspan="2" class="diff-lineno">Zeile 8:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Futures sind ein Konstrukt zur asynchronen [[Interprozesskommunikation]]. Konzeptionell bietet ein Future eine ''get''- oder ''join''-Funktion, die so lange blockiert, bis das Ergebnis vorliegt, und dieses dann zurückliefert. Je nach Implementierung kann die Wartezeit mittels [[Timeout (Netzwerktechnik)|Timeout]] beschränkt werden oder durch zusätzliche Funktionen eine Abfrage des aktuellen Status erfolgen.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Futures sind ein Konstrukt zur asynchronen [[Interprozesskommunikation]]. Konzeptionell bietet ein Future eine ''get''- oder ''join''-Funktion, die so lange blockiert, bis das Ergebnis vorliegt, und dieses dann zurückliefert. Je nach Implementierung kann die Wartezeit mittels [[Timeout (Netzwerktechnik)|Timeout]] beschränkt werden oder durch zusätzliche Funktionen eine Abfrage des aktuellen Status erfolgen.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;<del style="font-weight: bold; text-decoration: none;">tt</del>&gt;x @= ''Ausdruck''&lt;/<del style="font-weight: bold; text-decoration: none;">tt</del>&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;<del style="font-weight: bold; text-decoration: none;">tt</del>&gt;x&lt;/<del style="font-weight: bold; text-decoration: none;">tt</del>&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;<del style="font-weight: bold; text-decoration: none;">tt</del>&gt;x&lt;/<del style="font-weight: bold; text-decoration: none;">tt</del>&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;<ins style="font-weight: bold; text-decoration: none;">span style="font-family:monospace;"</ins>&gt;x @= ''Ausdruck''&lt;/<ins style="font-weight: bold; text-decoration: none;">span</ins>&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;<ins style="font-weight: bold; text-decoration: none;">span style="font-family:monospace;"</ins>&gt;x&lt;/<ins style="font-weight: bold; text-decoration: none;">span</ins>&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;<ins style="font-weight: bold; text-decoration: none;">span style="font-family:monospace;"</ins>&gt;x&lt;/<ins style="font-weight: bold; text-decoration: none;">span</ins>&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), und – ab Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form.)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt; Auch für [[C++]] stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar. Weitere Programmiersprachen mit Unterstützung für ''Futures'' und ''Promises'' sind [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und [[Scala (Programmiersprache)|Scala]].</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), und – ab Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form.)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt; Auch für [[C++]] stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar. Weitere Programmiersprachen mit Unterstützung für ''Futures'' und ''Promises'' sind [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und [[Scala (Programmiersprache)|Scala]].</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 22:</td> <td colspan="2" class="diff-lineno">Zeile 22:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Beispiel ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Beispiel ==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Der folgende [[Pseudocode]] zeigt die Verwendung von Futures mittels des asynchronen Zuweisungsoperators &lt;<del style="font-weight: bold; text-decoration: none;">tt</del>&gt;@=&lt;/<del style="font-weight: bold; text-decoration: none;">tt</del>&gt;.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Der folgende [[Pseudocode]] zeigt die Verwendung von Futures mittels des asynchronen Zuweisungsoperators &lt;<ins style="font-weight: bold; text-decoration: none;">span style="font-family:monospace;"</ins>&gt;@=&lt;/<ins style="font-weight: bold; text-decoration: none;">span</ins>&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var x @= berechneX(); ''// Beginne Berechnung von x''</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var x @= berechneX(); ''// Beginne Berechnung von x''</div></td> </tr> </table> TaxonBot https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=189532884&oldid=prev Joschi71: Die letzte Textänderung von 90.166.223.151 wurde verworfen. "Funktion" hier im Sinne von: wozu verwendet, nicht im Sinne von Progammiersprache. 2019-06-14T10:48:47Z <p>Die letzte Textänderung von <a href="/wiki/Spezial:Beitr%C3%A4ge/90.166.223.151" title="Spezial:Beiträge/90.166.223.151">90.166.223.151</a> wurde verworfen. &quot;Funktion&quot; hier im Sinne von: wozu verwendet, nicht im Sinne von Progammiersprache.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 14. Juni 2019, 11:48 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 5:</td> <td colspan="2" class="diff-lineno">Zeile 5:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Eine zentrale Idee der Programmierung mit Futures ist, dass Futures als Argumente an andere Prozeduraufrufe weitergereicht werden können. Die Auswertung dieses Aufrufs kann dann schon beginnen, bevor das Ergebnis des Futures selbst verfügbar ist. Das erlaubt ein maximales Maß an Parallelismus. Erfolgt der neue Aufruf wiederum asynchron, so spricht man auch von ''Pipelining'' der Futures. Pipelining kann insbesondere in verteilten Anwendungen benutzt werden, um die Latenzzeiten von [[Interprozesskommunikation]] zu minimieren.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Eine zentrale Idee der Programmierung mit Futures ist, dass Futures als Argumente an andere Prozeduraufrufe weitergereicht werden können. Die Auswertung dieses Aufrufs kann dann schon beginnen, bevor das Ergebnis des Futures selbst verfügbar ist. Das erlaubt ein maximales Maß an Parallelismus. Erfolgt der neue Aufruf wiederum asynchron, so spricht man auch von ''Pipelining'' der Futures. Pipelining kann insbesondere in verteilten Anwendungen benutzt werden, um die Latenzzeiten von [[Interprozesskommunikation]] zu minimieren.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== <del style="font-weight: bold; text-decoration: none;">Rückruf-</del>Funktion ==</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>== Funktion ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Futures sind ein Konstrukt zur asynchronen [[Interprozesskommunikation]]. Konzeptionell bietet ein Future eine ''get''- oder ''join''-Funktion, die so lange blockiert, bis das Ergebnis vorliegt, und dieses dann zurückliefert. Je nach Implementierung kann die Wartezeit mittels [[Timeout (Netzwerktechnik)|Timeout]] beschränkt werden oder durch zusätzliche Funktionen eine Abfrage des aktuellen Status erfolgen.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Futures sind ein Konstrukt zur asynchronen [[Interprozesskommunikation]]. Konzeptionell bietet ein Future eine ''get''- oder ''join''-Funktion, die so lange blockiert, bis das Ergebnis vorliegt, und dieses dann zurückliefert. Je nach Implementierung kann die Wartezeit mittels [[Timeout (Netzwerktechnik)|Timeout]] beschränkt werden oder durch zusätzliche Funktionen eine Abfrage des aktuellen Status erfolgen.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Joschi71 https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=189527847&oldid=prev 90.166.223.151: /* Funktion */ 2019-06-14T08:02:05Z <p><span class="autocomment">Funktion</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 14. Juni 2019, 09:02 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 5:</td> <td colspan="2" class="diff-lineno">Zeile 5:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Eine zentrale Idee der Programmierung mit Futures ist, dass Futures als Argumente an andere Prozeduraufrufe weitergereicht werden können. Die Auswertung dieses Aufrufs kann dann schon beginnen, bevor das Ergebnis des Futures selbst verfügbar ist. Das erlaubt ein maximales Maß an Parallelismus. Erfolgt der neue Aufruf wiederum asynchron, so spricht man auch von ''Pipelining'' der Futures. Pipelining kann insbesondere in verteilten Anwendungen benutzt werden, um die Latenzzeiten von [[Interprozesskommunikation]] zu minimieren.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Eine zentrale Idee der Programmierung mit Futures ist, dass Futures als Argumente an andere Prozeduraufrufe weitergereicht werden können. Die Auswertung dieses Aufrufs kann dann schon beginnen, bevor das Ergebnis des Futures selbst verfügbar ist. Das erlaubt ein maximales Maß an Parallelismus. Erfolgt der neue Aufruf wiederum asynchron, so spricht man auch von ''Pipelining'' der Futures. Pipelining kann insbesondere in verteilten Anwendungen benutzt werden, um die Latenzzeiten von [[Interprozesskommunikation]] zu minimieren.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== Funktion ==</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>== <ins style="font-weight: bold; text-decoration: none;">Rückruf-</ins>Funktion ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Futures sind ein Konstrukt zur asynchronen [[Interprozesskommunikation]]. Konzeptionell bietet ein Future eine ''get''- oder ''join''-Funktion, die so lange blockiert, bis das Ergebnis vorliegt, und dieses dann zurückliefert. Je nach Implementierung kann die Wartezeit mittels [[Timeout (Netzwerktechnik)|Timeout]] beschränkt werden oder durch zusätzliche Funktionen eine Abfrage des aktuellen Status erfolgen.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Futures sind ein Konstrukt zur asynchronen [[Interprozesskommunikation]]. Konzeptionell bietet ein Future eine ''get''- oder ''join''-Funktion, die so lange blockiert, bis das Ergebnis vorliegt, und dieses dann zurückliefert. Je nach Implementierung kann die Wartezeit mittels [[Timeout (Netzwerktechnik)|Timeout]] beschränkt werden oder durch zusätzliche Funktionen eine Abfrage des aktuellen Status erfolgen.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> 90.166.223.151 https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=182472874&oldid=prev Tea2min: /* Funktion */ Reihenfolge etwas umgestellt. C++11 ist nicht mehr neu, seither wurden C++14 und C++17 veröffentlicht, und C++20 ist in Arbeit. 2018-11-05T08:53:52Z <p><span class="autocomment">Funktion: </span> Reihenfolge etwas umgestellt. <a href="/wiki/C%2B%2B11" class="mw-redirect" title="C++11">C++11</a> ist nicht mehr neu, seither wurden C++14 und C++17 veröffentlicht, und C++20 ist in Arbeit.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 5. November 2018, 09:53 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 10:</td> <td colspan="2" class="diff-lineno">Zeile 10:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''),<del style="font-weight: bold; text-decoration: none;"> [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]], [[Scala_(Programmiersprache)|Scala]]</del> und – ab Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt;<del style="font-weight: bold; text-decoration: none;">.</del> Auch für C++ stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im<del style="font-weight: bold; text-decoration: none;"> neuen</del> Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), und – ab Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form<ins style="font-weight: bold; text-decoration: none;">.</ins>)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt; Auch für <ins style="font-weight: bold; text-decoration: none;">[[</ins>C++<ins style="font-weight: bold; text-decoration: none;">]]</ins> stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar<ins style="font-weight: bold; text-decoration: none;">. Weitere Programmiersprachen mit Unterstützung für ''Futures'' und ''Promises'' sind [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und [[Scala (Programmiersprache)|Scala]]</ins>.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[C-Sharp|C# 5.0]] und [[Visual Basic .NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx |titel=Asynchronous programming (Windows Store apps) |werk=MSDN |hrsg=Microsoft |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/ff963556.aspx |titel=Futures |werk=MSDN, Parallel Programming with Microsoft .NET |sprache=en |hrsg=Microsoft |zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/ |titel=Concurrency &amp; Coordination With Futures in C# |autor=Dan Vanderboom |datum=2008-07-03 |werk=Critical Development |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=https://bitbucket.org/mattkotsenas/c-promises/overview |werk=BitBucket |autor=Matt Kotsenas at. al. |zugriff=2014-02-23 |titel=C# Promises |sprache=en}}&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[C-Sharp|C# 5.0]] und [[Visual Basic .NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx |titel=Asynchronous programming (Windows Store apps) |werk=MSDN |hrsg=Microsoft |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/ff963556.aspx |titel=Futures |werk=MSDN, Parallel Programming with Microsoft .NET |sprache=en |hrsg=Microsoft |zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/ |titel=Concurrency &amp; Coordination With Futures in C# |autor=Dan Vanderboom |datum=2008-07-03 |werk=Critical Development |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=https://bitbucket.org/mattkotsenas/c-promises/overview |werk=BitBucket |autor=Matt Kotsenas at. al. |zugriff=2014-02-23 |titel=C# Promises |sprache=en}}&lt;/ref&gt;</div></td> </tr> </table> Tea2min https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=181181597&oldid=prev 84.115.58.150: Einfügen Scala als weitere Programmiersprache 2018-09-24T06:51:50Z <p>Einfügen Scala als weitere Programmiersprache</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 24. September 2018, 07:51 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 10:</td> <td colspan="2" class="diff-lineno">Zeile 10:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und – ab Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt;. Auch für C++ stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im neuen Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk<ins style="font-weight: bold; text-decoration: none;">]], [[Scala_(Programmiersprache)|Scala</ins>]] und – ab Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt;. Auch für C++ stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im neuen Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[C-Sharp|C# 5.0]] und [[Visual Basic .NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx |titel=Asynchronous programming (Windows Store apps) |werk=MSDN |hrsg=Microsoft |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/ff963556.aspx |titel=Futures |werk=MSDN, Parallel Programming with Microsoft .NET |sprache=en |hrsg=Microsoft |zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/ |titel=Concurrency &amp; Coordination With Futures in C# |autor=Dan Vanderboom |datum=2008-07-03 |werk=Critical Development |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=https://bitbucket.org/mattkotsenas/c-promises/overview |werk=BitBucket |autor=Matt Kotsenas at. al. |zugriff=2014-02-23 |titel=C# Promises |sprache=en}}&lt;/ref&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In [[C-Sharp|C# 5.0]] und [[Visual Basic .NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx |titel=Asynchronous programming (Windows Store apps) |werk=MSDN |hrsg=Microsoft |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/ff963556.aspx |titel=Futures |werk=MSDN, Parallel Programming with Microsoft .NET |sprache=en |hrsg=Microsoft |zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/ |titel=Concurrency &amp; Coordination With Futures in C# |autor=Dan Vanderboom |datum=2008-07-03 |werk=Critical Development |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=https://bitbucket.org/mattkotsenas/c-promises/overview |werk=BitBucket |autor=Matt Kotsenas at. al. |zugriff=2014-02-23 |titel=C# Promises |sprache=en}}&lt;/ref&gt;</div></td> </tr> </table> 84.115.58.150 https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=175714475&oldid=prev NiTenIchiRyu: /* Funktion */ 2018-04-03T09:16:56Z <p><span class="autocomment">Funktion</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 3. April 2018, 10:16 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 6:</td> <td colspan="2" class="diff-lineno">Zeile 6:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Funktion ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Funktion ==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Futures sind ein Konstrukt zur asynchronen [[Interprozesskommunikation]]. Konzeptionell bietet ein Future eine ''get''- oder ''join''-Funktion, die so lange blockiert, bis das Ergebnis vorliegt, und dieses dann zurückliefert. Je nach Implementierung kann die Wartezeit mittels [[Timeout]] beschränkt werden oder durch zusätzliche Funktionen eine Abfrage des aktuellen Status erfolgen.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Futures sind ein Konstrukt zur asynchronen [[Interprozesskommunikation]]. Konzeptionell bietet ein Future eine ''get''- oder ''join''-Funktion, die so lange blockiert, bis das Ergebnis vorliegt, und dieses dann zurückliefert. Je nach Implementierung kann die Wartezeit mittels [[<ins style="font-weight: bold; text-decoration: none;">Timeout (Netzwerktechnik)|</ins>Timeout]] beschränkt werden oder durch zusätzliche Funktionen eine Abfrage des aktuellen Status erfolgen.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> </tr> </table> NiTenIchiRyu https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=164527209&oldid=prev Trustable: Kleinigkeiten verbessert 2017-04-13T17:33:58Z <p>Kleinigkeiten verbessert</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 13. April 2017, 18:33 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ein '''Future''' ([[Englische Sprache|engl.]] ‚Zukunft‘) oder ein '''Promise''' (engl. ‚Versprechen‘) bezeichnet in der [[Programmierung]] einen Platzhalter (''[[Stellvertreter (Entwurfsmuster)|Proxy]]'') für ein Ergebnis, das noch nicht bekannt ist, meist weil seine Berechnung noch nicht abgeschlossen ist.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Ein '''Future''' ([[Englische Sprache|engl.]] ‚Zukunft‘) oder ein '''Promise''' (engl. ‚Versprechen‘) bezeichnet in der [[Programmierung]] einen Platzhalter (''[[Stellvertreter (Entwurfsmuster)|Proxy]]'') für ein Ergebnis, das noch nicht bekannt ist, meist weil seine Berechnung noch nicht abgeschlossen ist.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Ein Future ist meist das Ergebnis eines [[Asynchrone Kommunikation|asynchronen]] Aufrufs einer Funktion oder einer Methode und kann verwendet werden, um auf das Ergebnis zuzugreifen, sobald es verfügbar ist. Diese Art der Programmierung erlaubt eine weitgehend transparente [[Parallele Programmierung|Parallelisierung]] [[Nebenläufigkeit|nebenläufiger]] [[Prozess (<del style="font-weight: bold; text-decoration: none;">Computer</del>)|Prozesse]]. Das Konzept der Futures wurde 1977 in einem Artikel von [[Henry G. Baker]] und [[Carl Hewitt]] vorgestellt.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Ein Future ist meist das Ergebnis eines [[Asynchrone Kommunikation|asynchronen]] Aufrufs einer Funktion oder einer Methode und kann verwendet werden, um auf das Ergebnis zuzugreifen, sobald es verfügbar ist. Diese Art der Programmierung erlaubt eine weitgehend transparente [[Parallele Programmierung|Parallelisierung]] [[Nebenläufigkeit|nebenläufiger]] [[Prozess (<ins style="font-weight: bold; text-decoration: none;">Informatik</ins>)|Prozesse]]. Das Konzept der Futures wurde 1977 in einem Artikel von [[Henry G. Baker]] und [[Carl Hewitt]] vorgestellt.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Eine zentrale Idee der Programmierung mit Futures ist, dass Futures als Argumente an andere Prozeduraufrufe weitergereicht werden können. Die Auswertung dieses Aufrufs kann dann schon beginnen, bevor das Ergebnis des Futures selbst verfügbar ist. Das erlaubt ein maximales Maß an Parallelismus. Erfolgt der neue Aufruf wiederum asynchron, so spricht man auch von ''Pipelining'' der Futures. Pipelining kann insbesondere in verteilten Anwendungen benutzt werden, um die Latenzzeiten von [[Interprozesskommunikation]] zu minimieren.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Eine zentrale Idee der Programmierung mit Futures ist, dass Futures als Argumente an andere Prozeduraufrufe weitergereicht werden können. Die Auswertung dieses Aufrufs kann dann schon beginnen, bevor das Ergebnis des Futures selbst verfügbar ist. Das erlaubt ein maximales Maß an Parallelismus. Erfolgt der neue Aufruf wiederum asynchron, so spricht man auch von ''Pipelining'' der Futures. Pipelining kann insbesondere in verteilten Anwendungen benutzt werden, um die Latenzzeiten von [[Interprozesskommunikation]] zu minimieren.</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 10:</td> <td colspan="2" class="diff-lineno">Zeile 10:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und – <del style="font-weight: bold; text-decoration: none;">seit</del> Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit.<del style="font-weight: bold; text-decoration: none;"> </del> [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt;. Auch für C++ stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im neuen Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und – <ins style="font-weight: bold; text-decoration: none;">ab</ins> Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form)&lt;ref&gt;{{Internetquelle |url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise |titel=Promise |werk=MDN |hrsg=Mozilla Foundation |zugriff=2014-10-31 |sprache=en}}&lt;/ref&gt;. Auch für C++ stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im neuen Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In [[<del style="font-weight: bold; text-decoration: none;">CSharp</del>|C# 5.0]] und [[Visual Basic.NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx |titel=Asynchronous programming (Windows Store apps) |werk=MSDN |hrsg=Microsoft |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/ff963556.aspx |titel=Futures |werk=MSDN, Parallel Programming with Microsoft .NET |sprache=en |hrsg=Microsoft |zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/ |titel=Concurrency &amp; Coordination With Futures in C# |autor=Dan Vanderboom |datum=2008-07-03 |werk=Critical Development |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=https://bitbucket.org/mattkotsenas/c-promises/overview |werk=BitBucket |autor=Matt Kotsenas at. al. |zugriff=2014-02-23 |titel=C# Promises |sprache=en}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In [[<ins style="font-weight: bold; text-decoration: none;">C-Sharp</ins>|C# 5.0]] und [[Visual Basic<ins style="font-weight: bold; text-decoration: none;"> </ins>.NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx |titel=Asynchronous programming (Windows Store apps) |werk=MSDN |hrsg=Microsoft |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle |url=http://msdn.microsoft.com/en-us/library/ff963556.aspx |titel=Futures |werk=MSDN, Parallel Programming with Microsoft .NET |sprache=en |hrsg=Microsoft |zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/ |titel=Concurrency &amp; Coordination With Futures in C# |autor=Dan Vanderboom |datum=2008-07-03 |werk=Critical Development |zugriff=2014-02-22 |sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle |url=https://bitbucket.org/mattkotsenas/c-promises/overview |werk=BitBucket |autor=Matt Kotsenas at. al. |zugriff=2014-02-23 |titel=C# Promises |sprache=en}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Aufbau ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Aufbau ==</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 24:</td> <td colspan="2" class="diff-lineno">Zeile 24:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Der folgende [[Pseudocode]] zeigt die Verwendung von Futures mittels des asynchronen Zuweisungsoperators &lt;tt&gt;@=&lt;/tt&gt;.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Der folgende [[Pseudocode]] zeigt die Verwendung von Futures mittels des asynchronen Zuweisungsoperators &lt;tt&gt;@=&lt;/tt&gt;.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> var x @= berechneX();<del style="font-weight: bold; text-decoration: none;"> </del> ''// Beginne Berechnung von x''</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> var x @= berechneX(); ''// Beginne Berechnung von x''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> var y @= berechneY();<del style="font-weight: bold; text-decoration: none;"> </del> ''// Beginne Berechnung von y''</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> var y @= berechneY(); ''// Beginne Berechnung von y''</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> var z = berechneZ();<del style="font-weight: bold; text-decoration: none;"> </del> ''// Vollständige Berechnung von z''</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> var z = berechneZ(); ''// Vollständige Berechnung von z''</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> var ergebnis= x + y + z;<del style="font-weight: bold; text-decoration: none;"> </del> ''// Benutze x, y und z.''</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> var ergebnis= x + y + z; ''// Benutze x, y und z.''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"> </del> ''// Hier muss dann eventuell auf die Berechnung''</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> ''// Hier muss dann eventuell auf die Berechnung''</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"> </del> ''// von x und y gewartet werden.''</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> ''// von x und y gewartet werden.''</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Daraus ergibt sich folgende Parallelisierung:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Daraus ergibt sich folgende Parallelisierung:</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 69:</td> <td colspan="2" class="diff-lineno">Zeile 69:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://c2.com/cgi/wiki?PromisePipelining PromisePipelining] auf dem [http://c2.com/cgi/wiki?FrontPage C2 wiki] (englisch)</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://c2.com/cgi/wiki?PromisePipelining PromisePipelining] auf dem [http://c2.com/cgi/wiki?FrontPage C2 wiki] (englisch)</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* {{Internetquelle |url=http://channel9.msdn.com/Shows/Going+Deep/Hewitt-Meijer-and-Szyperski-The-Actor-Model-everything-you-wanted-to-know-but-were-afraid-to-ask |titel=Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know, but were afraid to ask) |datum=2012-04-09 |autor=[[Carl Hewitt]], [[Erik Meijer (Informatiker)|Erik Meijer]], [[Clemens Szyperski]] |zugriff=2014-02-22 |sprache=en |hrsg=Microsoft |werk=Channel 9}}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* {{Internetquelle |url=http://channel9.msdn.com/Shows/Going+Deep/Hewitt-Meijer-and-Szyperski-The-Actor-Model-everything-you-wanted-to-know-but-were-afraid-to-ask |titel=Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know, but were afraid to ask) |datum=2012-04-09 |autor=[[Carl Hewitt]], [[Erik Meijer (Informatiker)|Erik Meijer]], [[Clemens Szyperski]] |zugriff=2014-02-22 |sprache=en |hrsg=Microsoft |werk=Channel 9}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* {{<del style="font-weight: bold; text-decoration: none;">Internetquelle</del> |<del style="font-weight: bold; text-decoration: none;">url=https://www.youtube.com/watch?v</del>=w9hHHvhZ_HY |<del style="font-weight: bold; text-decoration: none;">titel</del>=Secure Distributed Programming with Object-capabilities in JavaScript<del style="font-weight: bold; text-decoration: none;"> |autor=Mark S. Miller |hrsg=Software Languages Lab |werk=YouTube |sprache=en |zugriff=2014-02-22 |datum=2011-10-31</del>}}</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* {{<ins style="font-weight: bold; text-decoration: none;">YouTube</ins> |<ins style="font-weight: bold; text-decoration: none;"> id</ins>=w9hHHvhZ_HY |<ins style="font-weight: bold; text-decoration: none;"> title</ins>=<ins style="font-weight: bold; text-decoration: none;">Vortrag von Mark S. Miller: ''</ins>Secure Distributed Programming with Object-capabilities in JavaScript<ins style="font-weight: bold; text-decoration: none;">''</ins>}}<ins style="font-weight: bold; text-decoration: none;"> (englisch)</ins></div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* {{YouTube | id=oBqeDYETXME | title=Vortrag von Mark S. Miller: ''Bringing Object-orientation to Security Programming''}} (englisch)</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* {{Internetquelle |url=https://www.youtube.com/watch?v=oBqeDYETXME |titel=Bringing Object-orientation to Security Programming |autor=Mark S. Miller |hrsg=Software Languages Lab |werk=YouTube |sprache=en |zugriff=2014-02-22 |datum=2011-10-31}}</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Einzelnachweise ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Einzelnachweise ==</div></td> </tr> </table> Trustable https://de.wikipedia.org/w/index.php?title=Future_(Programmierung)&diff=160563794&oldid=prev Crazy1880: Doppel-Ref-TAG entfernt 2016-12-12T07:58:08Z <p>Doppel-Ref-TAG entfernt</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 12. Dezember 2016, 08:58 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Ein '''Future''' ([[Englische Sprache|engl.]] ‚Zukunft‘) oder ein '''Promise''' (engl. ‚Versprechen‘) bezeichnet in der [[Programmierung]] einen Platzhalter (''[[Stellvertreter (Entwurfsmuster)|Proxy]]'') für ein Ergebnis, das noch nicht bekannt ist, meist weil seine Berechnung noch nicht abgeschlossen ist.<del style="font-weight: bold; text-decoration: none;"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Ein '''Future''' ([[Englische Sprache|engl.]] ‚Zukunft‘) oder ein '''Promise''' (engl. ‚Versprechen‘) bezeichnet in der [[Programmierung]] einen Platzhalter (''[[Stellvertreter (Entwurfsmuster)|Proxy]]'') für ein Ergebnis, das noch nicht bekannt ist, meist weil seine Berechnung noch nicht abgeschlossen ist.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Ein Future ist meist das Ergebnis eines [[Asynchrone Kommunikation|asynchronen]] Aufrufs einer Funktion oder einer Methode und kann verwendet werden, um auf das Ergebnis zuzugreifen, sobald es verfügbar ist. Diese Art der Programmierung erlaubt eine weitgehend transparente [[Parallele Programmierung|Parallelisierung]] [[Nebenläufigkeit|nebenläufiger]] [[Prozess (Computer)|Prozesse]]. Das Konzept der Futures wurde 1977 in einem Artikel von [[Henry G. Baker]] und [[Carl Hewitt]] vorgestellt.<del style="font-weight: bold; text-decoration: none;"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Ein Future ist meist das Ergebnis eines [[Asynchrone Kommunikation|asynchronen]] Aufrufs einer Funktion oder einer Methode und kann verwendet werden, um auf das Ergebnis zuzugreifen, sobald es verfügbar ist. Diese Art der Programmierung erlaubt eine weitgehend transparente [[Parallele Programmierung|Parallelisierung]] [[Nebenläufigkeit|nebenläufiger]] [[Prozess (Computer)|Prozesse]]. Das Konzept der Futures wurde 1977 in einem Artikel von [[Henry G. Baker]] und [[Carl Hewitt]] vorgestellt.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Eine zentrale Idee der Programmierung mit Futures ist, dass Futures als Argumente an andere Prozeduraufrufe weitergereicht werden können. Die Auswertung dieses Aufrufs kann dann schon beginnen, bevor das Ergebnis des Futures selbst verfügbar ist. Das erlaubt ein maximales Maß an Parallelismus. Erfolgt der neue Aufruf wiederum asynchron, so spricht man auch von ''Pipelining'' der Futures. Pipelining kann insbesondere in verteilten Anwendungen benutzt werden, um die Latenzzeiten von [[Interprozesskommunikation]] zu minimieren.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Eine zentrale Idee der Programmierung mit Futures ist, dass Futures als Argumente an andere Prozeduraufrufe weitergereicht werden können. Die Auswertung dieses Aufrufs kann dann schon beginnen, bevor das Ergebnis des Futures selbst verfügbar ist. Das erlaubt ein maximales Maß an Parallelismus. Erfolgt der neue Aufruf wiederum asynchron, so spricht man auch von ''Pipelining'' der Futures. Pipelining kann insbesondere in verteilten Anwendungen benutzt werden, um die Latenzzeiten von [[Interprozesskommunikation]] zu minimieren.</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 10:</td> <td colspan="2" class="diff-lineno">Zeile 10:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Sind Futures direkt in die [[Programmiersprache]] integriert, so ist häufig nur ein ''asynchroner [[Zuweisung]]soperator'' definiert, zum Beispiel &lt;tt&gt;x @= ''Ausdruck''&lt;/tt&gt; in ''[[Flow Java]]'', einer an [[Java (Programmiersprache)|Java]] angelehnten experimentellen Programmiersprache. Dies bedeutet: Starte einen Prozess zum Berechnen des Ausdrucks, der rechts des Operators steht, und weise der Variable &lt;tt&gt;x&lt;/tt&gt; ein Future für das Ergebnis zu. Wird danach auf die Variable &lt;tt&gt;x&lt;/tt&gt; zugegriffen, so wird an dieser Stelle so lange gewartet, bis das Ergebnis vorliegt.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und – seit Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form)&lt;ref&gt;{{Internetquelle|url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise|titel=Promise|werk=MDN|hrsg=Mozilla Foundation|zugriff=2014-10-31|sprache=en}}&lt;/ref&gt;. Auch für C++ stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im neuen Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar.<del style="font-weight: bold; text-decoration: none;"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Programmiersprachen und [[Programmbibliothek]]en, die ''Futures'' oder ''Promises'' unterstützen sind [[CORBA]] (mit ''Asynchronous Method Invocation (AMI)''), [[io (Programmiersprache)|Io]], [[Oz (Programmiersprache)|Oz]], [[Scheme]], [[Smalltalk (Programmiersprache)|Smalltalk]] und – seit Version 5 – [[Java (Programmiersprache)|Java]] mittels ''Concurrency Utilities'', einer Klassenbibliothek für Nebenläufigkeit. [[JavaScript]] stellt diese Konstrukte seit [[ECMAScript]] 6 bereit (wenngleich derzeit noch in eingeschränkter Form)&lt;ref&gt;{{Internetquelle<ins style="font-weight: bold; text-decoration: none;"> </ins>|url=https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise<ins style="font-weight: bold; text-decoration: none;"> </ins>|titel=Promise<ins style="font-weight: bold; text-decoration: none;"> </ins>|werk=MDN<ins style="font-weight: bold; text-decoration: none;"> </ins>|hrsg=Mozilla Foundation<ins style="font-weight: bold; text-decoration: none;"> </ins>|zugriff=2014-10-31<ins style="font-weight: bold; text-decoration: none;"> </ins>|sprache=en}}&lt;/ref&gt;. Auch für C++ stehen verschiedene Bibliotheken zur Verfügung, die wohl bekannteste von ihnen ist [[Boost (C++-Bibliothek)|Boost]]. Im neuen Standard [[C++11]] sind Nebenläufigkeit und Futures ebenfalls in der [[C++-Standardbibliothek|Standardbibliothek]] verfügbar.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>In [[CSharp|C# 5.0]] und [[Visual Basic.NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle|url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx|titel=Asynchronous programming (Windows Store apps)|werk=MSDN|hrsg=Microsoft|zugriff=2014-02-22|sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle|url=http://msdn.microsoft.com/en-us/library/ff963556.aspx|titel=Futures|werk=MSDN, Parallel Programming with Microsoft .NET|sprache=en|hrsg=Microsoft|zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle|url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/|titel=Concurrency &amp; Coordination With Futures in C#|autor=Dan Vanderboom|datum=2008-07-03|werk=Critical Development|zugriff=2014-02-22|sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle|url=https://bitbucket.org/mattkotsenas/c-promises/overview|werk=BitBucket|autor=Matt Kotsenas at. al.|zugriff=2014-02-23|titel=C# Promises|sprache=en}}&lt;/ref&gt;</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>In [[CSharp|C# 5.0]] und [[Visual Basic.NET|Visual Basic 2013]] werden Futures über async und await implizit verwendet.&lt;ref&gt;{{Internetquelle<ins style="font-weight: bold; text-decoration: none;"> </ins>|url=http://msdn.microsoft.com/en-us/library/windows/apps/hh464924.aspx<ins style="font-weight: bold; text-decoration: none;"> </ins>|titel=Asynchronous programming (Windows Store apps)<ins style="font-weight: bold; text-decoration: none;"> </ins>|werk=MSDN<ins style="font-weight: bold; text-decoration: none;"> </ins>|hrsg=Microsoft<ins style="font-weight: bold; text-decoration: none;"> </ins>|zugriff=2014-02-22<ins style="font-weight: bold; text-decoration: none;"> </ins>|sprache=en}}&lt;/ref&gt; Eine entsprechende Future-Klasse ist hierbei in den [[Parallel Extensions]] definiert und kann somit auch in älteren Versionen und anderen Programmiersprachen verwendet werden. Eine solche kann bei Bedarf allerdings auch selbst implementiert werden.&lt;ref&gt;{{Internetquelle<ins style="font-weight: bold; text-decoration: none;"> </ins>|url=http://msdn.microsoft.com/en-us/library/ff963556.aspx<ins style="font-weight: bold; text-decoration: none;"> </ins>|titel=Futures<ins style="font-weight: bold; text-decoration: none;"> </ins>|werk=MSDN, Parallel Programming with Microsoft .NET<ins style="font-weight: bold; text-decoration: none;"> </ins>|sprache=en<ins style="font-weight: bold; text-decoration: none;"> </ins>|hrsg=Microsoft<ins style="font-weight: bold; text-decoration: none;"> </ins>|zugriff=2014-02-22}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle<ins style="font-weight: bold; text-decoration: none;"> </ins>|url=http://dvanderboom.wordpress.com/2008/07/03/concurrency-with-futures/<ins style="font-weight: bold; text-decoration: none;"> </ins>|titel=Concurrency &amp; Coordination With Futures in C#<ins style="font-weight: bold; text-decoration: none;"> </ins>|autor=Dan Vanderboom<ins style="font-weight: bold; text-decoration: none;"> </ins>|datum=2008-07-03<ins style="font-weight: bold; text-decoration: none;"> </ins>|werk=Critical Development<ins style="font-weight: bold; text-decoration: none;"> </ins>|zugriff=2014-02-22<ins style="font-weight: bold; text-decoration: none;"> </ins>|sprache=en}}&lt;/ref&gt;&lt;ref&gt;{{Internetquelle<ins style="font-weight: bold; text-decoration: none;"> </ins>|url=https://bitbucket.org/mattkotsenas/c-promises/overview<ins style="font-weight: bold; text-decoration: none;"> </ins>|werk=BitBucket<ins style="font-weight: bold; text-decoration: none;"> </ins>|autor=Matt Kotsenas at. al.<ins style="font-weight: bold; text-decoration: none;"> </ins>|zugriff=2014-02-23<ins style="font-weight: bold; text-decoration: none;"> </ins>|titel=C# Promises<ins style="font-weight: bold; text-decoration: none;"> </ins>|sprache=en}}&lt;/ref&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Aufbau ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Aufbau ==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Ein Future ist eine [[Monade (Informatik)|Monade]] mit einem zugehörigen [[Resolver (Informatik)|Resolver]], welcher dem Future einen Wert zuweist. Das Future kann sich in einem von drei Zuständen befinden:<del style="font-weight: bold; text-decoration: none;"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Ein Future ist eine [[Monade (Informatik)|Monade]] mit einem zugehörigen [[Resolver (Informatik)|Resolver]], welcher dem Future einen Wert zuweist. Das Future kann sich in einem von drei Zuständen befinden:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* erfüllt (englisch: ''{{lang|en|promise kept}}'')</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* erfüllt (englisch: ''{{lang|en|promise kept}}'')</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* gebrochen (englisch: ''{{lang|en|promise broken}}'')</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* gebrochen (englisch: ''{{lang|en|promise broken}}'')</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 26:</td> <td colspan="2" class="diff-lineno">Zeile 26:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var x @= berechneX(); ''// Beginne Berechnung von x''</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var x @= berechneX(); ''// Beginne Berechnung von x''</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var y @= berechneY(); ''// Beginne Berechnung von y''</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var y @= berechneY(); ''// Beginne Berechnung von y''</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var z = berechneZ(); ''// Vollständige Berechnung von z''</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var z = berechneZ(); ''// Vollständige Berechnung von z''</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var ergebnis= x + y + z; ''// Benutze x, y und z.''</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> var ergebnis= x + y + z; ''// Benutze x, y und z.''</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> ''// Hier muss dann eventuell auf die Berechnung''</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> ''// Hier muss dann eventuell auf die Berechnung''</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 35:</td> <td colspan="2" class="diff-lineno">Zeile 35:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Daraus ergibt sich folgende Parallelisierung:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Daraus ergibt sich folgende Parallelisierung:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{| class="<del style="font-weight: bold; text-decoration: none;">prettytable</del>"<del style="font-weight: bold; text-decoration: none;"> </del></div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{| class="<ins style="font-weight: bold; text-decoration: none;">wikitable</ins>"</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>|-</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>! Haupt-Thread</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>! Haupt-Thread</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>! X-Thread</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>! X-Thread</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 58:</td> <td colspan="2" class="diff-lineno">Zeile 59:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|}</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>|}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Die Aufteilung der Berechnung auf mehrere [[Thread (Informatik)|<del style="font-weight: bold; text-decoration: none;">Thread</del>]]<del style="font-weight: bold; text-decoration: none;">s</del> kann Berechnungen deutlich beschleunigen, wenn mehrere [[Hauptprozessor]]en (oder [[Prozessorkern]]e) zur Verfügung stehen, oder wenn die einzelnen Berechnungen den Hauptprozessor nicht auslasten, weil sie etwa viel Zeit mit dem Warten auf [[Peripheriegerät]]e verbringen.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Die Aufteilung der Berechnung auf mehrere [[Thread (Informatik)|<ins style="font-weight: bold; text-decoration: none;">Threads</ins>]] kann Berechnungen deutlich beschleunigen, wenn mehrere [[Hauptprozessor]]en (oder [[Prozessorkern]]e) zur Verfügung stehen, oder wenn die einzelnen Berechnungen den Hauptprozessor nicht auslasten, weil sie etwa viel Zeit mit dem Warten auf [[Peripheriegerät]]e verbringen.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Literatur ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Literatur ==</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 67:</td> <td colspan="2" class="diff-lineno">Zeile 68:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weblinks ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Weblinks ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://c2.com/cgi/wiki?PromisePipelining PromisePipelining] auf dem [http://c2.com/cgi/wiki?FrontPage C2 wiki] (englisch)</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* [http://c2.com/cgi/wiki?PromisePipelining PromisePipelining] auf dem [http://c2.com/cgi/wiki?FrontPage C2 wiki] (englisch)</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* {{Internetquelle|url=http://channel9.msdn.com/Shows/Going+Deep/Hewitt-Meijer-and-Szyperski-The-Actor-Model-everything-you-wanted-to-know-but-were-afraid-to-ask|titel=Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know, but were afraid to ask)|datum=2012-04-09|autor=[[Carl Hewitt]], [[Erik Meijer (Informatiker)|Erik Meijer]], [[Clemens Szyperski]]|zugriff=2014-02-22|sprache=en|hrsg=Microsoft|werk=Channel 9}}</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* {{Internetquelle<ins style="font-weight: bold; text-decoration: none;"> </ins>|url=http://channel9.msdn.com/Shows/Going+Deep/Hewitt-Meijer-and-Szyperski-The-Actor-Model-everything-you-wanted-to-know-but-were-afraid-to-ask<ins style="font-weight: bold; text-decoration: none;"> </ins>|titel=Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know, but were afraid to ask)<ins style="font-weight: bold; text-decoration: none;"> </ins>|datum=2012-04-09<ins style="font-weight: bold; text-decoration: none;"> </ins>|autor=[[Carl Hewitt]], [[Erik Meijer (Informatiker)|Erik Meijer]], [[Clemens Szyperski]]<ins style="font-weight: bold; text-decoration: none;"> </ins>|zugriff=2014-02-22<ins style="font-weight: bold; text-decoration: none;"> </ins>|sprache=en<ins style="font-weight: bold; text-decoration: none;"> </ins>|hrsg=Microsoft<ins style="font-weight: bold; text-decoration: none;"> </ins>|werk=Channel 9}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* {{Internetquelle|url=https://www.youtube.com/watch?v=w9hHHvhZ_HY|titel=Secure Distributed Programming with Object-capabilities in JavaScript|autor=Mark S. Miller|hrsg=Software Languages Lab|werk=YouTube|sprache=en|zugriff=2014-02-22|datum=2011-10-31}}</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* {{Internetquelle<ins style="font-weight: bold; text-decoration: none;"> </ins>|url=https://www.youtube.com/watch?v=w9hHHvhZ_HY<ins style="font-weight: bold; text-decoration: none;"> </ins>|titel=Secure Distributed Programming with Object-capabilities in JavaScript<ins style="font-weight: bold; text-decoration: none;"> </ins>|autor=Mark S. Miller<ins style="font-weight: bold; text-decoration: none;"> </ins>|hrsg=Software Languages Lab<ins style="font-weight: bold; text-decoration: none;"> </ins>|werk=YouTube<ins style="font-weight: bold; text-decoration: none;"> </ins>|sprache=en<ins style="font-weight: bold; text-decoration: none;"> </ins>|zugriff=2014-02-22<ins style="font-weight: bold; text-decoration: none;"> </ins>|datum=2011-10-31}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>* {{Internetquelle|url=https://www.youtube.com/watch?v=oBqeDYETXME|titel=Bringing Object-orientation to Security Programming|autor=Mark S. Miller|hrsg=Software Languages Lab|werk=YouTube|sprache=en|zugriff=2014-02-22|datum=2011-10-31}}</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>* {{Internetquelle<ins style="font-weight: bold; text-decoration: none;"> </ins>|url=https://www.youtube.com/watch?v=oBqeDYETXME<ins style="font-weight: bold; text-decoration: none;"> </ins>|titel=Bringing Object-orientation to Security Programming<ins style="font-weight: bold; text-decoration: none;"> </ins>|autor=Mark S. Miller<ins style="font-weight: bold; text-decoration: none;"> </ins>|hrsg=Software Languages Lab<ins style="font-weight: bold; text-decoration: none;"> </ins>|werk=YouTube<ins style="font-weight: bold; text-decoration: none;"> </ins>|sprache=en<ins style="font-weight: bold; text-decoration: none;"> </ins>|zugriff=2014-02-22<ins style="font-weight: bold; text-decoration: none;"> </ins>|datum=2011-10-31}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== <del style="font-weight: bold; text-decoration: none;">Quellen</del> ==</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>== <ins style="font-weight: bold; text-decoration: none;">Einzelnachweise</ins> ==</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;references /&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;references /&gt;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>== Einzelnachweise ==</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>&lt;references&gt;&lt;/references&gt;</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Kategorie:Parallelverarbeitung]]</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Kategorie:Parallelverarbeitung]]</div></td> </tr> </table> Crazy1880