WebAssembly (WASM) lernen: Eine Einführung in 100 Minuten // deutsch

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ก.ย. 2024

ความคิดเห็น • 44

  • @TheDaple
    @TheDaple 2 ปีที่แล้ว +8

    Schön erklärt und „entmystifiziert“ 😄

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว

      [gr] Haha, danke schön 😊

  • @comedyclub333
    @comedyclub333 2 ปีที่แล้ว +4

    Ich bi nvor kurzem auf euren Kanal gestoßen. Hammer! Weiter so!

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว

      [gr] Vielen, vielen Dank 😊

  • @coolchop
    @coolchop 2 ปีที่แล้ว +2

    Danke für die ausführliche Einführung. Fand ich sehr interessant.

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว

      [gr] Das freut mich, vielen Dank 😊

  • @SuperDuperDevelopersClub
    @SuperDuperDevelopersClub 2 ปีที่แล้ว +2

    Hat uns sehr gut gefallen. Danke Golo.

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว

      [gr] Das freut mich, vielen Dank 😊

  • @btx47
    @btx47 2 ปีที่แล้ว +1

    Klasse! Vielen Dank

  • @yt7042
    @yt7042 2 ปีที่แล้ว +1

    Danke für die ausführliche Einführung in WASM. Wieder was dazu gelernt. :-) Bei der multiple result swap function erhalte ich übrigens eine Fehlermeldung:
    "(node:24480) UnhandledPromiseRejectionWarning: CompileError: WebAssembly.instantiate(): return count of 2 exceeds internal limit of 1 @+27"
    Alles andere hat funktioniert.

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว

      [gr] Vielen Dank, das freut mich 😊
      Wegen der Fehlermeldung: Eventuell liegt das an der Version von Node.js, die Du verwendest. Welche ist es denn?

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว +1

      [gr] Dann liegt es daran. Das Feature mit multiplen Rückgabewerten ist noch relativ jung. Bei mir war es Node.js 16.13.0.

  • @meiseswicki9673
    @meiseswicki9673 ปีที่แล้ว +1

    Sehr gutes Video, vielen Dank!❤

    • @thenativeweb
      @thenativeweb  ปีที่แล้ว

      [gr] Das freut mich, vielen Dank 😊

  • @viktor.kuenstler
    @viktor.kuenstler 2 ปีที่แล้ว +1

    Spitzen Video ❤️

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว +1

      [gr] Vielen Dank, das freut mich sehr 😊

  • @DerRobert28
    @DerRobert28 ปีที่แล้ว +1

    Klasse Tutorial. Hat Spaß gemacht, mitzumachen. Nur zur Info, ist aber vielleicht irelevant auf das Gesamt-Thema: Bei etwa 1:01:50 zeigst du, dass die Fakultät von 32 negativ ist, wegen Überlauf. Das fängt schon viel früher an, und zwar bei Fakultät von 13, die ist nämlch 6.227.020.800. ich hab nämlich als zweite funkiton die fakultät mit datentyp f64 implementiert. für 12! zeigt er bei i32 und f64 jeweils richtigerweise 479.001.600 an. bei 13! kommt als integer 1.932.053.504, und bei float richtigerweise 6.227.020.800 heraus. 😉

  • @54742723
    @54742723 2 ปีที่แล้ว +2

    Hi Godo,
    Super Video und an dieser Stelle auch ein Danke für die super Erklärungen die du immer machst.
    Eine Frage hätte ich jedoch, beim Umgang mit Strings würde ja man dann mit den einzelnen Chars als Int arbeiten, ist das richtig?

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว

      [gr] Danke schön 😊
      Und wegen Deiner Frage zu Strings: Im Prinzip ja. Du reservierst Speicher, eine Art Byte-Array, und schreibst dann dort die einzelnen Bytes für den String hinein. Ist sehr umständlich, aber meines Wissens nach derzeit Stand der Dinge in WebAssembly.

  • @thomasschorn8075
    @thomasschorn8075 2 ปีที่แล้ว +2

    DIN Seitenverhältnis ist 1 zu sqrt(2). Der Goldene Schnitt ist (lt Wikip) 1 zu (1+sqrt(5))/2

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว +1

      [gr] Du hast recht, da habe ich mich vertan. Danke für den Hinweis 😊

  • @christianhorauf9958
    @christianhorauf9958 2 ปีที่แล้ว +1

    Bisher die ausführlichste Einführung zu WASM im web. Zwischenzeitlich bin ich abgebogen und hab Fibonacci selber rekursiv implementiert. Das hat soviel Spaß gemacht, das ich nicht übel Lust hätte noch fizzbuzz in WASM zu schreiben. Aber da geht's dann ja los mit der Handhabe von Strings.
    Lieber Golo,🤩 machst du noch eine zweite WASM Folge für Fortgeschrittene? Biiiiiiittte 🤗

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว +1

      [gr] Vielen Dank für das tolle Lob, das freut mich sehr 😊
      WebAssembly für Fortgeschrittene … genug Themen gäb's ja: Strings, Referenztypen, Speicherverwaltung im Allgemeinen, WASI, … mal gucken 😉

  • @thomas8123
    @thomas8123 2 ปีที่แล้ว +2

    Wieder ein gutes Video! Wie du selbst schon sagtest: ist nur zum Begreifen der Sprache. Interessant fände ich die Unterschiede in den runtimes. Außerdem: wie denkst du über die Auswirkungen aufgrund der Unterschiede zwischen den Sprachen (bspw striktes Typsystem in wasm vs js Typsystem oder Garbage Collection und Memory Model in einer wasm runtime)? Ach ja: sieht man mit c++ dann die vtables in wat? Und was ist dann mit 3rd party Bibliotheken wie bspw boost? Muss man die nach wasm kompilieren?

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว

      [gr] Danke schön für das Lob 😊
      Deine Fragen sind tatsächlich ziemlich spannend - allerdings muss ich zumindest, was C++ angeht, da passen, da ich mich mit C++ überhaupt nicht auskenne und daher nichts fundiertes dazu sagen kann (erst recht weiß ich nicht, worauf ich da beim Kompilieren nach WASM zu achten hätte). Die Unterschiede zwischen den Sprachen wären trotzdem spannend zu sehen.
      Da WebAssembly intern ja aber mit einem statischen Typsystem arbeitet, dürfte es für C++ nicht so ein großes Problem sein, danach übersetzt zu werden. Bei JavaScript ist das schon spannender, auch in Verbindung mit - wie Du ja schon sagst - der Garbage-Collection. Da WebAssembly derzeit aber noch keine Referenztypen kennt, stellt sich das Problem (noch) nicht. Momentan hast Du ja nur Ganz- und Fließkommazahlen.
      Aber ja, wie gesagt, spannende Fragen … 😊

    • @thomas8123
      @thomas8123 2 ปีที่แล้ว +1

      Wie macht das blazor? Die haben ja m.W. die .net rt nach wasm gebracht, also wäre blazor eine .net rt in einer wasm rt, oder? Und da ja alles von .net in blazor gehen soll, frage ich mich schon, wie das mit GC ist… und was Typsystem angeht: wie erfolgen die Type mappings, wie ist es mit der type inference (bspw bei weak type systems: a = 5 + „hallo“ -> welchen Typ hat a und was wird in wasm daraus?)?
      Ist gar ein „Write any code, run any where“ erreichbar?

  • @lollo4711
    @lollo4711 2 ปีที่แล้ว +1

    (WASM im Browser laden) Ich würde gerne OHNE Webserver / einfach als (lokales) file:// starten können.

  • @pinkeHelga
    @pinkeHelga ปีที่แล้ว

    Sind die $Bezeichner "kostenlos", also nur für den Transpiler vorhanden? Oder erzeugt das auch Laufzeitressourcenkosten?

  • @pinkeHelga
    @pinkeHelga ปีที่แล้ว

    Welche Möglichkeiten gibt es für Unit-Tests innerhalb von WASM, also internen Code ohne Export?

  • @pinkeHelga
    @pinkeHelga ปีที่แล้ว

    Einfach top Video! Sieht auf den ersten Blick jedenfalls sehr unkompliziert aus und erinnert stark, wie der Name schon sagt, an Maschinencode-Assembler.
    Wenn man Bibliotheken aus C/C++ übersetzt und dann in WASM optimieren/weiterverarbeiten möchte, wie würde man dann die Funktionen wiederfinden? Gibt es da Möglichkeiten, wenn man die nicht als Export kennzeichnet?

  • @pinkeHelga
    @pinkeHelga ปีที่แล้ว

    Kann man bei WebAssembly auch ähnlich wie in Assembler indirek/indiziert adressieren?
    Und geht Stackzugriff auch ohne pop/shift?
    Wie würdest Du den JS-Algo dann in WASM schreiben?:
    const fibonacci = (n) =>
    {
    let numbers = [0,1], idx = 0;
    while(n-- >0)
    numbers[idx ^= 1] = numbers[0] + numbers[1];
    return numbers[idx];
    }

    • @pinkeHelga
      @pinkeHelga ปีที่แล้ว

      PS: Gibt die moderne Fibo-Folge mit 0->0; 1->1, 2->1 3->2 usw. aus.

  • @itvbfk8716
    @itvbfk8716 2 ปีที่แล้ว +1

    Kann es sein, dass die Fakultät von 30 und 31 falsch berechnet wird?
    zum Vergleich:
    30! 265252859812191058636308480000000
    31!: 8222838654177922817725562880000000
    irgendwie schräg..

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว

      [gr] Inwiefern falsch?
      Ich habe es gerade einmal mit meinem Taschenrechner nachgerechnet und ich komme aufs gleiche. Oder sind das nicht die Zahlen aus dem Video (das habe ich jetzt nicht überprüft)?

    • @hrtmtbrng5968
      @hrtmtbrng5968 5 หลายเดือนก่อน +1

      @@thenativeweb Ja, die Fakultät von 30 und 31 ist im Video falsch. Aber ansonsten ein wirklich wirklich gutes Video!

  • @ahmadumar6210
    @ahmadumar6210 2 ปีที่แล้ว +2

    ne frage, wirst du die Beispiele mit TS und Rust vorfuehren?

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว +1

      [gr] Nein, wir schreiben WebAssembly-Code von Hand (kein Witz!) 🎉

    • @ahmadumar6210
      @ahmadumar6210 2 ปีที่แล้ว +1

      @@thenativeweb wow, vielen dank, ich hoffe ich komme mit

    • @devchannel5232
      @devchannel5232 2 ปีที่แล้ว +1

      Top wie immer!

    • @didgerihorn
      @didgerihorn 2 ปีที่แล้ว +1

      @@thenativeweb Was ist der Grund dafür? C++-Compiler noch zu ineffizient?

    • @thenativeweb
      @thenativeweb  2 ปีที่แล้ว

      @@devchannel5232 [gr] Danke schön 😊