Asynchron
Im Allgemeinen ist asynchron – aus dem Griechischen asyn-, was nicht mit, und chronos, was Zeit bedeutet – ein Adjektiv, das Objekte oder Ereignisse beschreibt, die zeitlich nicht koordiniert oder übereinstimmend sind.
Was bedeutet asynchron?
Genauer gesagt beschreibt asynchron die Beziehung zwischen zwei oder mehr Ereignissen/Objekten, die zwar innerhalb desselben Systems interagieren, aber nicht in vorbestimmten Intervallen auftreten und nicht notwendigerweise auf die Existenz des jeweils anderen angewiesen sind, um zu funktionieren. Sie sind nicht aufeinander abgestimmt, das heißt sie können gleichzeitig auftreten oder nicht, weil sie ihre eigene Agenda haben.
Verwendungen
Der Begriff selbst ist weit gefasst und hat viele Anwendungen. Allein in der Informationstechnologie (IT) hat der Begriff mehrere verschiedene Anwendungen. In den meisten IT-Kontexten bezieht sich asynchron auf eine Art der Kommunikation, die sowohl zwischen Menschen als auch zwischen technischen Komponenten stattfinden kann. Da der Begriff selbst innerhalb der IT ein so weites Feld abdeckt, kann es schwierig sein, seine allgemeine Definition in Einklang zu bringen, wenn man die verschiedenen Anwendungsbereiche vergleicht.
Eine einfache Möglichkeit, asynchrone Kommunikation zu verstehen, ist der Blick auf die persönliche Kommunikation. Das Versenden einer E-Mail oder eines Textes ist ein Beispiel für eine asynchrone Form der Kommunikation, da sie nicht unbedingt zeitlich koordiniert sein müssen. Jedes Ereignis oder jede gesendete Nachricht kann in unregelmäßigen Abständen stattfinden, da die Informationen gespeichert werden, wann immer der Empfänger sie abrufen möchte. Die Ereignisse finden unabhängig voneinander statt und haben keinen festen Zeitplan.
Dies steht im Gegensatz zu persönlichen Gesprächen und Videokonferenzen, die synchrone Kommunikationsmethoden sind, da die Ereignisse – die Abzweigungen im Gespräch – in einer bestimmten Reihenfolge und über einen festen Zeitraum – die Zeit, in der die Teilnehmer am Gespräch beteiligt sind – stattfinden müssen. Die Ereignisse sind voneinander abhängig und bauen in linearer Weise aufeinander auf.
Die Quintessenz ist: Bei der synchronen persönlichen Kommunikation muss der Empfänger sofort reagieren, bei der asynchronen kann er nach Belieben antworten.
Dieses allgemeine Modell gilt für die meisten asynchronen Kontexte, wobei die Variablen die Informationseinheiten – als Objekte oder Ereignisse bezeichnet – und das Medium sind, über das sie übermittelt werden.
Einige prominente Beispiele für die Verwendung des Begriffs sind die Computerprogrammierung, bei der das Programm mit dem Computer kommuniziert, und die Telekommunikation, bei der Signale mit einer bestimmten Geschwindigkeit übertragen werden und die Qualität der enthaltenen Informationen von dieser Geschwindigkeit abhängt.
Asynchron in der Telekommunikation
Bei der Telekommunikationssignalisierung – innerhalb eines Netzes oder zwischen Netzen – ist ein asynchrones Signal ein Signal, das mit einer anderen Taktrate als ein anderes Signal übertragen wird. Plesiochrone Signale (plesio = fast, beinahe) sind fast, aber nicht ganz synchron - und es wird eine Methode verwendet, um sie anzupassen - und synchrone Signale sind solche, die mit der gleichen Taktrate laufen.
Asynchron in der Computerprogrammierung
In der Computerprogrammierung bedeutet asynchroner Betrieb, dass ein Prozess unabhängig von anderen Prozessen abläuft, während synchroner Betrieb bedeutet, dass der Prozess nur als Ergebnis eines anderen Prozesses läuft, der abgeschlossen oder übergeben wurde. Ein typischer Vorgang, bei dem ein synchrones Protokoll verwendet werden könnte, wäre die Übertragung von Dateien von einem Punkt zum anderen. Bei jeder Übertragung wird eine Antwort zurückgegeben, die den Erfolg oder die Notwendigkeit einer erneuten Übertragung anzeigt. Jede weitere Datenübertragung erfordert eine Antwort auf die vorangegangene Übertragung, bevor eine neue Übertragung eingeleitet werden kann.
Asynchrone Kommunikation am Arbeitsplatz
Der Begriff asynchron wird auch verwendet, um einen wachsenden Trend in der Kommunikation am Arbeitsplatz zu beschreiben. Sogenannte Team-Collaboration-Tools ermöglichen es den Mitarbeitern, Gespräche zu führen, die nicht an ein lineares Format gebunden sind; die Teilnehmer müssen nicht auf Antworten warten, um das Gespräch zu führen. Dieses Kommunikationsformat erhöht die Flexibilität und ermöglicht es den Teilnehmern, ohne zeitliche und örtliche Beschränkungen miteinander zu kommunizieren. Anstatt ein persönliches Gespräch zu führen, bei dem beide Parteien in Echtzeit anwesend sein und Antworten abwarten müssen, können die Teilnehmer mit Hilfe von Tools für die Teamzusammenarbeit aus der Ferne und in ihrem eigenen Zeitrahmen kommunizieren.
Beispiele
Im Folgenden finden Sie einige Beispiele für die Verwendung des Begriffs asynchron in den oben genannten Zusammenhängen.
Telekommunikation. Bei der Kommunikation über Geräte wie Funk oder Telefon ist die Klarheit der Übertragung entscheidend. Sie setzt voraus, dass die ausgetauschten Daten von beiden Parteien phasengleich und nach einem gemeinsamen Rhythmus verarbeitet werden. Wenn dies mit einer zentralen Uhr geschieht, handelt es sich um eine synchrone Übertragung.
Sie kann jedoch auch asynchron erfolgen. Asynchronous Transfer Mode (ATM) ist ein Protokoll, das in der Telekommunikation verwendet wird, um die asynchrone Übertragung von Daten zu ermöglichen, ohne dass die Signale einen Großrechner oder eine zentrale Uhr passieren müssen. Stattdessen legt ATM für die Daten einen Weg durch das Netz fest und weist ihnen einen Verkehrsvertrag zu, der sicherstellt, dass die Daten gemäß einer zwischen dem Client und dem Netz getroffenen Vereinbarung verarbeitet werden. So kann beispielsweise eine konstante Bitrate für Telefongespräche garantiert werden, so dass die Stimme des Anrufers nicht unterbrochen oder verzögert wird.
Programmierung. Ein konkretes Beispiel für ein Programm, das asynchron arbeitet, ist die integrierte Software eines Druckers. Wenn ein Drucker eine Warnung über einen niedrigen Tonerstand an den Benutzer sendet, druckt er weiter. Der Drucker unterbricht nicht den Druckvorgang, um die Warnung auszugeben, und setzt ihn dann fort. Der Teil des Programms, der die Warnmeldung ausgibt, ist nicht von dem Teil abhängig, der den Druckvorgang auslöst. Sie können gleichzeitig auftreten, da sie unabhängig voneinander funktionieren.
Ein weiteres, etwas abstrakteres Beispiel ist die Verwendung von asynchronen Methoden in gängigen Programmiersprachen wie JavaScript, Python und C#. Die asynchrone Programmierung, die auch als nicht blockierender Code (Nonblocking Code) bezeichnet wird, bietet einem Programm die Möglichkeit, anderen Code auszuführen, während es auf den Abschluss einer lang laufenden Aufgabe wartet. Die zeitaufwändige Aufgabe wird im Hintergrund ausgeführt, während der restliche Code weiterläuft.
Die Funktion, die die asynchrone Programmierung in diesen Sprachen ermöglicht, wird als Callback-Funktion bezeichnet. In JavaScript werden alle in der Funktion verschachtelten Operationen an eine Webanwendung oder eine Datenbank gesendet, um die erforderlichen Informationen zu sammeln, während der Rest des Programms weiterläuft. Wenn die Informationen gesammelt sind, werden sie durch das Programm zurückgeschickt und auf die Funktionen im Programm angewendet, die darauf angewiesen sind, daher Callback.
Kommunikation. Anwendungen wie Slack, Google Hangouts und Jira bieten Funktionen für die gemeinsame Nutzung von Dateien, Online-Whiteboards und Chats, mit denen Teams Arbeitsabläufe koordinieren können, ohne dass jedes Mitglied anwesend sein muss, um an der unmittelbaren Konversation teilzunehmen. Auf diese Weise können die Mitarbeiter in Verbindung bleiben, ohne dass sie an die Zeit eines Gesprächs gebunden sind. Mitarbeiter in verschiedenen Zeitzonen können in diesem asynchronen Rahmen genauso effektiv teilnehmen wie ein Mitarbeiter im Büro.
Asynchron vs. synchron
In jedem der oben genannten Kontexte und Beispiele – Telekommunikation, Programmierung und Kommunikation am Arbeitsplatz – gibt es sowohl synchrone als auch asynchrone Methoden. Es gibt sowohl synchrone als auch asynchrone Programmiersprachen, Kommunikationsstile am Arbeitsplatz und Telekommunikationsmethoden.
In der Tat sind viele dieser Kommunikationskontexte in ihrer einfachsten Form von Natur aus synchron. Ein Gespräch zwischen zwei Personen beruht in seiner einfachsten Form auf dem Aufruf und der Antwort der beiden Teilnehmer in chronologischer Reihenfolge.
JavaScript ist ein weiteres Beispiel für eine Kommunikationsart, die standardmäßig synchron ist, aber so modifiziert wurde, dass sie asynchron ist, um Programmen effektives Multitasking zu ermöglichen und das Leben der Programmierer zu erleichtern.
Eine Art der Kommunikation wird asynchron, wenn das zur Kommunikation verwendete Medium – Programmiersprache, Telekommunikationsnetz oder Anwendung für die Zusammenarbeit im Team – so komplex ist, dass es die übermittelten Informationen im Laufe der Zeit verarbeiten und speichern kann, so dass die Teilnehmer in mehr als einem Thread kommunizieren können, ohne auf eine lineare Struktur angewiesen zu sein.
Vorteile und Nachteile
Die Vorteile eines asynchronen Kommunikationsformats sind, wie bereits erwähnt, eine größere Flexibilität in der Struktur des Informationsaustauschs und die Unabhängigkeit von einer universellen Zeitskala oder Logik für Unterhaltungen.
Der größte Nachteil der asynchronen Kommunikation besteht jedoch darin, dass sie eine zusätzliche Ebene der Komplexität in die Kommunikation einführt, die den Informationsaustausch erschweren oder sogar sabotieren kann.
Diese Vor- und Nachteile zeigen sich im asynchronen Computercode. So kann beispielsweise die Codierung eines Übermaßes an Rückruffunktionen unübersichtlich und für Programmierer, die versuchen, sie zu analysieren, zu einem Alptraum werden. Syntaktische Merkmale wie Versprechen und async/await-Muster wurden eingeführt, um die Codesyntax zu straffen und das Lesen für Programmierer zu erleichtern. Dennoch fügen diese Funktionen dem Code eine weitere Komplexitätsebene hinzu.
Wenn der einzige Zweck des Programms darin besteht, einfache, sequenzielle Aufgaben auszuführen – wie zum Beispiel die Datenverarbeitung, die den Stop-and-Wait-Aspekt der synchronen Programmierung tolerieren kann – dann ist synchron die bessere Wahl. Die Vorteile des asynchronen Codes machen ihn geeigneter für Programme, die auf Ereignisse reagieren müssen, wie beispielsweise ein Programm mit grafischer Benutzeroberfläche (GUI).
Die Vor- und Nachteile der Asynchronität zeigen sich auch bei der Verwendung von Tools für die Zusammenarbeit im Team. Zusätzlich zu der Flexibilität, die sie den Mitarbeitern bieten, können diese Tools eine Aufzeichnung aller gemeinsamen Kommunikationen liefern, auf die die Mitarbeiter später zurückgreifen können. Sie geben den Mitarbeitern auch Zeit, über Antworten an Teamkollegen nachzudenken, da eine sofortige Antwort nicht erforderlich ist.
Wenn diese Tools jedoch unorganisiert eingesetzt werden, können sie zu einer unübersichtlichen Konversation führen. Da die Benutzer jederzeit und überall Kommentare und Beiträge abgeben können, können Geschäftsgespräche durch übermäßiges Feedback leicht in die Irre geführt werden. Außerdem liegt es in der Verantwortung des Benutzers, sich an den zahlreichen Gesprächsfäden zu beteiligen, die in Tools für die Zusammenarbeit im Team entstehen. Wird dies versäumt oder werden Themen vergessen, kann dies zu einem Mangel an Transparenz führen, der sich negativ auf Mitarbeiter auswirkt, deren Arbeit von anderen abhängt.
Kurz gesagt, asynchrone Kommunikation bietet die Vorteile erhöhter Flexibilität und Effizienz, kann aber auch zu Problemen führen, wenn keine geeignete Organisationsstruktur implementiert wird, um das übermäßige Rauschen zu bewältigen, das asynchrone Frameworks manchmal fördern.