WebAssembly med C - Vad kan man göra?

Permalänk

WebAssembly med C - Vad kan man göra?

Jag har hört att WA är den senaste tekniken när det kommer till webbutveckling. Jag har hört att man kan konvertera om C, C++, Rust och Go till WA kod som sedan kan köras i HTML-koden.

Men vad kan man göra?
Kan jag liksom göra HTTP-förfrågningar i C och sedan gör jag om det till WA och kör det på webben?

Alltså jag behöver inge JavaScript för att lösa samma problem?
Jag har hört att WA är snabbt som tusan.

Någon som kan berätta lite om WA?

Permalänk
Kontot avslutas

Är väl bra/nödvändigt för tyngre saker antar jag, men förmodligen overkill i många andra lägen.
Vissa gnäller ju till och med över att Java och C# är för mycket kod, så vet inte hur poppis det skulle bli att köra "allmän" webbutveckling i ännu lägre spåk om det inte finns riktiga anledningar till det.
Har för mig jag läste att t ex Figma kör bland annat WASM/C++

Permalänk
Skrivet av ChrisDev:

Är väl bra/nödvändigt för tyngre saker antar jag, men förmodligen overkill i många andra lägen.
Vissa gnäller ju till och med över att Java och C# är för mycket kod, så vet inte hur poppis det skulle bli att köra "allmän" webbutveckling i ännu lägre spåk om det inte finns riktiga anledningar till det.
Har för mig jag läste att t ex Figma kör bland annat WASM/C++

Vadå tyngre? Är det inte bara ett sätt att ersätta JavaScript med Rust/C/C++/Go?

Permalänk

Det normala är att man utvecklar vissa beräkningstunga funktioner i ett kompilerat språk och kompilerar till wasm, men att det mesta av webappen är javascript. Det finns inget enkelt sätt att hantera DOM-trädet från wasm (än så länge), och det behöver du göra för att hantera UI:t.

Sen får man tänka på att wasm-koden inte kommer åt variabler som skapats i javascript-koden så om man inte sparar rätt saker i det minne som wasm-koden har tillgång till så kan det lätt bli långsamt när man måste kopiera data från javascript-världen till wasm-världen.

Permalänk
Datavetare

Wasm kan bli riktigt stort.

Poängen med Wasm är att våra webbläsare börjar allt med bli "framtidens operativsystem". Det Wasm ger är en runtime-plattform som har riktigt bra prestanda, fungerar i praktiken överallt, men ändå tillåter att man använder "vanliga" programspråk (t.ex. de du listar).

Nackdelen med Wasm är att man "bara" får en virtuell CPU-plattform, i Wasm finns ingen standard för att jobba med grafik, ljud etc. Wasm motsvarar att skriva x86 eller ARM64 assembler, skillnaden är att resultatet fungerar "överallt". För att göra något spännande som rendera grafik, spela ljud, kommunicera över nätet, etc behövs fortfarande icke-standard komponenter.

Jämfört med att köra JavaScript finns flera fördelar med Wasm. De primära är att man kan få väsentligt bättre prestanda genom att t.ex. använda C++ eller Rust och kompilera till Wasm. Där får man fördelarna med kompilerade, statiskt typade språk, samtidigt som man får fördelarna med Wasm i att det väldigt effektivt kan köra på vilken fysisk CPU-plattform som helst (Wasm är väldigt nära "vanlig" assembler och ger en overhead över att direkt kompilera till "native" som är imponerande låg).

Man måste ändå vara medveten om att Wasm än så länge befinner sig rätt tidigt i sin utveckling. Rust/Wasm verkar kommit längst i utvecklingen, men då får man ändå komma ihåg att Rust som helhet är rätt nytt (ca 10 år, vilket är en baby i programspråkssammanhang).

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

Låter som om webbläsarna har förvandlats till sandlådor för program. Hoppas det inte kräver någon större mängd kraft för att kunna köras. Föredrar fortfarande att servern gör allt tungt och klienterna bara fungerar som I/O.

Visa signatur

Grundregel för felsökning: Bryt och begränsa.

Permalänk
Hedersmedlem
Skrivet av heretic16:

Jag har hört att WA är den senaste tekniken när det kommer till webbutveckling. Jag har hört att man kan konvertera om C, C++, Rust och Go till WA kod som sedan kan köras i HTML-koden.

Men vad kan man göra?
Kan jag liksom göra HTTP-förfrågningar i C och sedan gör jag om det till WA och kör det på webben?

Alltså jag behöver inge JavaScript för att lösa samma problem?
Jag har hört att WA är snabbt som tusan.

Någon som kan berätta lite om WA?

Ser det som en ny plattform att köra ditt program på. Utöver x86, arm och liknande kan man bygga för webassembly (och sedan köra programmet i en webbläsare).

Permalänk
Skrivet av Yoshman:

Wasm kan bli riktigt stort.

Poängen med Wasm är att våra webbläsare börjar allt med bli "framtidens operativsystem". Det Wasm ger är en runtime-plattform som har riktigt bra prestanda, fungerar i praktiken överallt, men ändå tillåter att man använder "vanliga" programspråk (t.ex. de du listar).

Nackdelen med Wasm är att man "bara" får en virtuell CPU-plattform, i Wasm finns ingen standard för att jobba med grafik, ljud etc. Wasm motsvarar att skriva x86 eller ARM64 assembler, skillnaden är att resultatet fungerar "överallt". För att göra något spännande som rendera grafik, spela ljud, kommunicera över nätet, etc behövs fortfarande icke-standard komponenter.

Jämfört med att köra JavaScript finns flera fördelar med Wasm. De primära är att man kan få väsentligt bättre prestanda genom att t.ex. använda C++ eller Rust och kompilera till Wasm. Där får man fördelarna med kompilerade, statiskt typade språk, samtidigt som man får fördelarna med Wasm i att det väldigt effektivt kan köra på vilken fysisk CPU-plattform som helst (Wasm är väldigt nära "vanlig" assembler och ger en overhead över att direkt kompilera till "native" som är imponerande låg).

Man måste ändå vara medveten om att Wasm än så länge befinner sig rätt tidigt i sin utveckling. Rust/Wasm verkar kommit längst i utvecklingen, men då får man ändå komma ihåg att Rust som helhet är rätt nytt (ca 10 år, vilket är en baby i programspråkssammanhang).

Så om jag kan C och vill göra webbapplikationer för att ansluta servrar (HTTP förfrågningar), då kan jag inte använda Wasm?

Permalänk
Medlem
Skrivet av heretic16:

Så om jag kan C och vill göra webbapplikationer för att ansluta servrar (HTTP förfrågningar), då kan jag inte använda Wasm?

Som jag förstår det finns det inget tekniskt som hindrar dig, mer än CORS och begränsningarna i det API som browsern implementerar, typ Fetch.

Blazor WebAssembly har i alla fall stöd för det, så det handlar nog mest om att hitta en toolchain för C som klarar att göra motsvarande magi. Jag har ingen aning om ifall något sådant existerar.

Permalänk
Hedersmedlem
Skrivet av heretic16:

Så om jag kan C och vill göra webbapplikationer för att ansluta servrar (HTTP förfrågningar), då kan jag inte använda Wasm?

Om du har ett ”vanligt” c-program som kan göra sådana förfrågningar borde du kunna bygga det som webassembly (förutsatt att alla eventuella bibliotek och liknade fungerar) och köra det i en webbläsare istället.
Här är en Hello world.