Info2go

Hier gibt ́s Videos über spannende Experimente, Aufnahmen von wissenschaftlichen Phänomenen und Reportagen über nordbord-Projekte sowie interessante Unternehmen. Das Beste: Du kannst auch deine eigenen Filme drehen und hier mit anderen nordbordern teilen.

WebAssembly - Der Browser kriegt ein Binärformat

JavaScript ist bald möglicherweise nicht mehr die einzige Programmiersprache, die ein Browser ausführt.

Moderne Webseiten sind oft mehr Programme als einfach "nur" Seiten. Manchmal ist das offensichtlich: Spiele wie Agar.io oder Cookie Clicker wirken schon nicht wie normale, textbasierte Webseiten. Aber auch für Medien-Seiten wie Twitter werden eine Menge Programme von deinem Browser ausgeführt. Der Screenshot aus dem Titelbild zeigt das recht anschaulich: Alleine um die "Anmelden"-Seite von Twitter anzuzeigen, wird ein ungefähr 1.6 Megabyte großes JavaScript-Programm übertragen.

Nun kann man trefflich darüber streiten, ob eine Anmeldeseite so "schwer" sein muss. Zumindestens ein Teil dieser Größe liegt aber an einer grundlegenden Eigenart der Programmiersprache JavaScript: Die Programme werden immer in einer für Menschen lesbaren Form übertragen. Als Anwender kannst man also jederzeit schauen, was der Browser da eigentlich ausführt. Zumindestens theoretisch, praktisch wird JavaScript heute oft "minifiziert" übertragen: Das End-Resultat ist dabei immer noch ein gültiges JavaScript-Programm, als Mensch kann man es aber nicht mehr interpretieren.

In gewisser Weise vereint diese Minifizierung die schlechtesten Eigenschaften aus beiden Welten: Das Programm ist weder für Menschen noch für Maschinen optimal lesbar. Und genau an dieser Stelle wird die Programmiersprache WebAssembly ansetzen: Programme in diesem Format sind für Menschen quasi gar nicht mehr lesbar, aber dafür für Maschinen sehr viel einfacher zu verstehen. Die Programme können damit nämlich in einer so genannten "Binärcodierung" übertragen werden. Dabei werden typische Anweisungen wie "for", "while" oder "function" nicht mehr für Menschen lesbar ausgeschrieben, sondern mit Zahlen codiert.

Diese WebAssembly-Programme können außerdem nicht mehr vom Benutzer modifiziert werden. Bei "normalen" JavaScript-Programmen kann man als Anwender jederzeit in den Programmfluss eingreifen, Werte verändern oder neuen Code dazuschreiben. Dementsprechend defensiv, und damit auch langsam, muss der Browser diese Programme ausführen. Bei WebAssembly-Programmen kann sich der Browser darauf verlassen, dass alle Daten und Anweisungen immer zueinander passen.

Zurück