Zu sagen, dass ich ein großer Befürworter von WebAssembly (Wasm) und seinen erklärten Ergebnissen bin, wäre eine Untertreibung. Ich bin zutiefst davon überzeugt, dass das, was es auf den Tisch bringt, einen beträchtlichen Schritt nach vorne für die Softwareindustrie darstellt, und ich bin äußerst begeistert von einer Zukunft, die von Wasm beeinflusst wird.
Für Uneingeweihte ist Wasm über den Browser hinausgewachsen, hat das Interesse einiger Leute geweckt und eine begeisterte Gemeinschaft von Entwicklern hervorgebracht. Ich könnte jetzt alles über Wasm und seine Vorzüge aufzählen, aber ich werde das hier nicht tun. Solche Inhalte gibt es bereits, und ich bitte Sie inständig, die vielen Informationen über Wasm zu sichten, um sich eine eigene Meinung zu bilden.
Es ist jedoch wichtig, dass ich über den Hype hinausblicke und das Wesentliche von Wasm für das vorliegende Thema rekapituliere. Das Thema ist, dass Wasm nicht nur ideal für Software jenseits des Browsers ist, sondern dass es genau zur rechten Zeit kam.
Eine Explosion aus der Vergangenheit
Zusammengefasst soll Wasm ein binäres Zwischenformat sein, das es in sich hat:
- klein
- schnell
- sicher
- sehr tragbar
Wenn Sie dies genau analysieren, wird Ihnen vielleicht klar, dass die Ziele hinter Wasm, und damit auch Wasm selbst, keineswegs neu sind. Wir haben in der Tat schon viele Male versucht, solche idyllischen Ziele zu erreichen. Einige von Ihnen haben vielleicht sogar einen sehr hochtrabenden und oft zitierten Slogan von Sun Microsystems im Kopf: "Einmal schreiben, überall ausführen".
Wasm ist in der Tat vergleichbar mit Java-Bytecode oder der .NET Common Language Runtime Zwischendarstellung. Eine häufige Kritik, die ich an Wasm sehe, ist genau diese Tatsache.
Jeder, der Wasm skeptisch gegenübersteht, könnte dann fragen: "Was macht Wasm diesmal anders und unserer Aufmerksamkeit würdig?" Der Unterschied, wenn Sie mich fragen, ist nicht einmal technischer Natur - auch wenn es solche Unterschiede gibt und sie für sich genommen überzeugend sein können. Nein, der Unterschied liegt meiner Meinung nach im Timing.
Timing ist alles
Wir sind in
Software ist nahezu allgegenwärtig und durchdringt praktisch jeden Aspekt des menschlichen Lebens. Wir sind an einem Punkt angelangt, an dem es äußerst unwahrscheinlich ist, dass wir irgendeine Aufgabe erledigen können, ohne dass irgendwo in der Kausalkette eine Software ausgeführt wird. Folglich scheinen wir uns auf eine Welt zuzubewegen, in der wir vollständig von der durch Software ermöglichten Technologie abhängig oder untrennbar mit ihr verbunden sind.
Dennoch konnten wir uns nicht mit der Tatsache abfinden, dass die Liste der Software, die unsachgemäß gewartet und/oder konfiguriert wird, jeden Tag länger wird, als wir mit ihr Schritt zu halten versuchen. Wir sehen, dass die Auswirkungen zunehmend in den Nachrichten auftauchen. Es könnte sehr wohl eine Abrechnung mit der Software geben und die Bytes der Vergangenheit werden zurückkommen, um uns zu verfolgen, wenn wir nicht etwas dagegen unternehmen.
Abgesehen von den Unkenrufen ist das Thema Softwaresicherheit ein immer größeres Anliegen und hat in unserer Branche zu Spezialisierungen geführt. Das hat gezeigt, wie wichtig sie geworden ist.
Alles überall, alles auf einmal
Apropos allgegenwärtig: Die Akzeptanz des Internets der Dinge (IoT) und seiner Anwendungen hat zugenommen und wird wahrscheinlich weiter zunehmen.
Jeden Tag schließen sich mehr und mehr Geräte einem immer größer werdenden globalen Netzwerk an. Dies bringt eine Vielzahl von Herausforderungen mit sich, die wir am besten meistern sollten, bevor sie unweigerlich zu unbefriedigenden Ergebnissen führen. Soweit ich weiß, verfügen wir nicht über die notwendigen Fähigkeiten und Arbeitskräfte, um Software zu entwickeln und zu pflegen, die auf den unzähligen Geräten mit spezifischen Architekturen und Einschränkungen funktioniert, die es derzeit gibt, ganz zu schweigen von denen, die uns in Zukunft erwarten werden.
Es ist auch eine Überlegung wert, dass das IoT möglicherweise die Grenze zwischen der Cloud, dem Edge und allem, was dazwischen liegt, verwischen könnte. Macht es angesichts des riesigen Netzwerks von Geräten Sinn, teure und unzuverlässige Netzwerkverbindungen zu einigen Cloud- oder Edge-Geräten herzustellen? Angenommen, wir hätten eine Möglichkeit, jede Software schnell und sicher auf praktisch jedem Gerät auszuführen, das seine Unterstützung anpreist, wäre es dann nicht von Vorteil, diese Software auf einem Gerät in der Nähe auszuführen?
Dies mag spekulativ erscheinen und ist in der Tat nuanciert. Dennoch bleibt die Frage: Sind wir bereit, eine Welt in Angriff zu nehmen, in der es keine ausgewiesenen Rechenebenen gibt, sondern lediglich einen amorphen und heterogenen Pool von Geräten, auf denen Software ausgeführt werden kann?
Schon jetzt gibt es Situationen, in denen Portabilität ideal wäre. In der Cloud ist die relativ neue Aufnahme von ARM-basierten CPUs ein großer Segen, aber nicht jeder kann diese völlig neue Architektur nutzen.
Die Art, wie wir sind
Ein weiterer zeitbedingter Faktor ist, wie sich unsere Rollen und Ansichten über die Softwareentwicklung entwickelt haben. Um es auf den Punkt zu bringen: Sie war nur in ihrer Inkonsequenz konsequent.
Wir haben uns jedoch meist auf bestimmte Designprinzipien und -ansätze geeinigt, die für Software in einem modernen Kontext als wünschenswert erachtet werden. Ich beziehe mich hier auf die Schlagworte, die sich hartnäckig halten, wie z.B. Zustandslosigkeit, serviceorientierte Architekturen, ereignisgesteuerte Systeme, kontinuierliche Integration und kontinuierliche Lieferung / Bereitstellung sowie agile Prozesse, um nur einige zu nennen.
Es ist erwähnenswert, dass dies vor allem darauf zurückzuführen ist, dass wir den Großteil unserer Rechenleistung zurück auf den Mainframe, oder besser gesagt in die Cloud, verlagert haben. Die Flexibilität und die relative Benutzerfreundlichkeit, die die automatisierbare Infrastruktur und das Modell "Alles-als-Service" bieten, haben die Art und Weise, wie wir Software entwickeln, unauslöschlich geprägt.
Wir hatten sogar etwas Zeit, um (hoffentlich) aus unseren Fehlern der Vergangenheit zu lernen und können fundiertere Entscheidungen darüber treffen, was unter bestimmten Bedingungen funktioniert. Das Problem ist, dass diese Lösungen manchmal relativ komplex und mit zahlreichen beweglichen Teilen gespickt sind.
Felsen zum Denken verleiten
Und dann ist da noch das Mooresche Gesetz. Können wir mit Sicherheit sagen, dass dieses Gesetz weiterhin Bestand haben wird?
Dies ist ein ziemlich umstrittenes Thema, und es gibt einen immensen Spielraum für Interpretationen. Ich bin jedoch nicht davon überzeugt, dass wir in nächster Zeit weiterhin das gleiche Tempo an Verbesserungen sehen werden.
Wir werden wahrscheinlich immer noch Leistungssteigerungen bei den kommenden Prozessoren sehen, aber es gibt erste Anzeichen dafür, dass wir die letzten Tropfen dieser speziellen Limonade auspressen werden.
Das heißt, wir müssen uns vielleicht anderswo nach Verbesserungen im Bereich der Computertechnik umsehen. Wir können nicht einfach weiter auf der Welle der zunehmenden Prozessorleistung reiten, die wir im Laufe der Jahre für selbstverständlich gehalten haben. Ich habe den Eindruck, dass die Softwareindustrie noch Raum für Verbesserungen und Kreativität hat.
Grüne Fäden
Auch die Umwelt sollte in unserem Bewusstsein ganz oben stehen. Vor dem Hintergrund des Klimawandels, rekordverdächtiger Temperaturen und zunehmender Wetteranomalien ist ein deutlicher Anstieg des Umweltbewusstseins zu verzeichnen.
Wir, zumindest die meisten von uns in der Softwarebranche, machen uns selten (wenn überhaupt) Gedanken darüber, wie unsere Software zu einem allgemeinen Anstieg der globalen Kohlenstoffemissionen beiträgt oder sich anderweitig auf die Umwelt auswirkt. Vielleicht sollten wir uns diese verschwendeten CPU-Zyklen einmal genauer ansehen.
Betreten Sie die Bühne links: Wasm
Wird Wasm also kommen, um den Tag zu retten? Zu meinem großen Bedauern kann ich die Zukunft nicht vorhersagen und ich kann auch nicht definitiv sagen, dass Wasm die Lösung für alle unsere Probleme ist, aber wer würde das schon? Ich würde trotzdem darauf wetten, dass Wasm eher Erfolg hat als dass es scheitert, zumindest insofern, als es ein potenzielles Sprungbrett für weitere Entwicklungen ist.
Ist es wirklich unvernünftig, davon auszugehen, dass es die angestrebten Ziele in vollem Umfang erreichen und dazu beitragen kann, unsere Sicherheitsprobleme zu lindern, ein Aspekt, der dem Konzept des Wasm innewohnt?
Würde Wasm angesichts eines wachsenden Ozeans von Geräten, die sich in globale Netzwerke einklinken, von denen jedes seine eigenen Einschränkungen und Architekturen hat, nicht zukünftige Kopfschmerzen lindern?
Würde Wasm angesichts unserer modernen Neigung zu schnell bereitgestellter und vorzugsweise kleiner Software in zunehmend komplexen Systemen, die idealerweise ereignisgesteuert sind, nicht florieren?
In einer Zeit, in der wir an die physikalischen Grenzen der Anzahl von Transistoren stoßen, die wir auf einen einzigen siliziumbasierten Prozessorchip packen können, würde Wasm uns da nicht die Flexibilität bieten, kreativ zu werden und gleichzeitig ein akzeptables Niveau an Rohleistung beizubehalten?
Würde Wasm es uns im Zuge des wachsenden Umweltbewusstseins nicht ermöglichen, Software nur bei Bedarf dort einzusetzen, wo sie am effizientesten ist?
Wenn Sie geneigt sind, den oben genannten Punkten auf rein technischer Basis zu widersprechen, muss ich Sie darauf aufmerksam machen, dass dies die aktuellen Trends in unserer Branche sind. Diese Punkte sind durchaus diskussionswürdig, aber ich glaube nicht, dass ich naiv bin, wenn ich behaupte, dass eine gute Technologie allein noch keine Garantie für die Akzeptanz ist, und im Übrigen könnte ich leicht davon überzeugt werden, dass auch schlechte Technologie aus weitaus fadenscheinigeren Gründen angenommen wurde.
Einpacken
Natürlich ist Wasm kein Allheilmittel, und natürlich muss noch mehr Arbeit geleistet werden, die die Aussichten drastisch verändern könnte. Es ist sogar erwähnenswert, dass mein Enthusiasmus für Wasm nicht unbedingt von Wasm selbst ausgeht, sondern von den Initiativen und Projekten, die dadurch ermöglicht werden. Ich bin der Meinung, dass Wasm nicht nur technisch wertvoll und offener als ähnliche frühere Versuche ist, sondern dass der entscheidende Faktor der richtige Zeitpunkt ist. Der Zeitpunkt ist so gewählt, dass wir Wasm sehr wohl brauchen könnten, um einige der Probleme zu lösen, mit denen wir konfrontiert sind.
Außerdem glaube ich nicht, dass wir angesichts dessen, was auf dem Spiel steht, viel zu verlieren haben. Im schlimmsten Fall können wir Wasm einfach auf den Stapel der "gescheiterten" Technologien werfen, die wir unweigerlich wieder aufgreifen und daraus lernen werden.
Verfasst von

Jan-Justin van Tonder
Cool, calm, contemplative and a constant tinkerer. I am always on the lookout for new, strange and wonderful challenges to overcome. After chasing ever-expanding horizons, I unwind by seeking out truly compelling stories, be it between the pages of a book or rendered on a screen.
Unsere Ideen
Weitere Blogs
Contact




