[...]
Dus vanaf code x naar y gaat het straks van x naar z. Nou wat een verbetering. Dat is dus een probleem oplossen wat er niet is. Zoals ik al meldde. En waar het om gaat is dat mensen zich niet willen interesseren/specialiseren in web om daar dingen mee te doen.
Dat is heel gebruikelijk.
Java > JVM Bytecode > Machine Code
C/C++/Obj-C > LLVM Bytecode > Machine Code
.NET > ??? + .NET runtime > Machine Code
Al die X-to-JS talen compileren naar JS, waardoor je iets krijgt als:
X > JS > ??? > Machine Code
Een browser bytecode zorgt voor iets als:
X > Browser Bytecode > ??? > Machine Code
Je moet nog steeds ondersteuning hebben voor de bytecode. En wat als je een nieuwere versie gebruikt met nieuwe API's e.d. Volgens mij moet je nog steeds zorgen dat er een deel van de browsers de nieuwste versie draait. Vrijwel elke taal die ook dergelijke compilatie gebruikt, heeft altijd wel ergens een aanpassing waardoor het niet meer werkt (of niet optimaal) op oudere devices/browsers/platformen. Helemaal versieloos krijg je het gewoon niet, of je verliest performance, features e.d.
Er zijn altijd manieren om features sub-optimaal te realiseren in een verouderd API en optimaal te realiseren voor een nieuwer API. Neem bijv. voorbeeld aan JRuby, die eerst allerlei anonymous classes moest maken voor lambda's en tegenwoordig JVM's eigen methode daarvoor kan aanroepen. Ondanks dat de JVM het zelf niet makkelijk en/of efficient ondersteunde, was het wel te realiseren. Met een request header kan een browser zijn gewenste bytecode-versie aangeven, waardoor de server de meest efficiente (of gewoon de meest compatible) versie kan serveren tijdens een overgangs-fase. Dit is allemaal prima te automatiseren.
Wat is dat nou weer voor opmerking? hoezo is Javascript ongewenst? Kijk eens naar al die mensen die juist dingen met NodeJS doen die ook met andere talen kunnen. Waarom denk je dat er nu full-stack Javascript is? Omdat niemand dat vervolgens gaat gebruiken? Bullshit en dat weet jij ook.
NodeJS brengt iets in de wereld wat je niet met andere talen kan: Dezelfde taal gebruiken op de server als op de client. Ik weet vrijwel zeker dat 20% van de serieuze NodeJS developers geen plain Javascript gebruiken, maar een of ander meta taaltje die naar JS compileert, al is het maar ES6 of JSX. Ik weet ook vrijwel zeker dat als bijv. PHP, Ruby, Python of C native ondersteund zou worden door NodeJS EN browsers, net zo goed als Javascript dat nu is, dat die talen aanzienlijk meer gebruikt zouden worden op plaatsen waar Javascript nu "noodzakelijk" is. Sterker nog, ik weet vrijwel zeker dat Javascript direct dood neer valt in dat geval.
Het maakt het niet overbodig, het verplaatst het richting een ander proces. Dat je het straks niet meer handmatig hoeft te doen omdat de compiler dat doet, maakt het niet meteen overbodig. Plus wie zegt dat dat altijd de beste oplossing is? Je krijgt te maken met hele verschillende devices, verbindingen en doelen. Daar krijg je nooit een one-size-fits-all oplossing voor.
Ik snap niet helemaal wat je probeert te zeggen. Als je dezelfde code wil sturen naar verschillende devices, waarom zou je er dan andere bytecode heen willen sturen? Sure, in extreme gevallen wil je misschien kunnen configureren of meer bytes in ruil voor betere performance gewenst is, of juist andersom, maar dat lijkt me verwaarloosbaar.
Waarom niet? Enig idee hoe vaak een nieuwe "standaard" uit de grond springt om het web te "verbeteren/vernieuwen/veranderen"?
Ik kan me niet herinneren dat alle grote browser makers samen springen om te werken aan een alternatief voor Javascript. Dit is zover ik weet een first.
Ze stellen leuke doelen maar het is nog afwachten in hoeverre ze dat ook daadwerkelijk gaan redden. En we moeten nog maar zien of ze het zelfontwikkelde probleem ook daadwerkelijk gaan oplossen.
In jouw ogen is het misschien een zelf-ontwikkeld probleem. Ik vind het idioot dat we tegenwoordig 100en programmeertalen hebben, maar dat we op het web maar vast zitten met Javascript. Ik juich een oplossing daarvoor alleen maar toe. Een goede bytecode kan bijv. toegang bieden tot byte-strings (geen utf8), echte integers of threads.
Als we willen dat het web revolutionair blijft ontwikkelen, moeten browser-makers iets verzinnen waarmee developers met hun eigen favoriete programmeertaal kunnen werken.