Další zajímavost je, že moderní node.js je výkonově dohnal, Deno už není rychlík. Bun je ale oba těžce předbíhá, někdy i o řád :-)
Zfalšované asi úplně ne, spíš jsou pro benchmarky vybrané ne zcela realistické scénáře, ve kterých Bun zrovna exceluje: https://dev.to/builderio/a-first-look-at-bun-is-it-really-3x-faster-than-nodejs-and-deno-45od
Realistické ano, jen možná ne úplně typické v běžných webových aplikacích. Bun má výrazně menší overhead requestu (časový i prostorový), takže se to projeví nejlépe v aplikacích kde se nedělají složité server-side výpočty. Typicky tenká API kolem databází (IoT, smart metering atd.) kde request je "zapiš tenhle float do databáze" nebo "dej mi číselnou řadu za poslední měsíc", ne tvorba XML.
Ne, vzniklo to proto, že JS dokáže efektivně využít výkon jednoho vlákna a navíc je možné psát kód, který běží jak na backendu, tak na frontendu. Když si zkusíš třeba Next.js framework, tak pochopíš, kolik to umí ušetřit práce. On totiž i frontend potřebuje svůj backend a ten nezbytně nemusí být ta hlavní business logika celé aplikace.
navíc je možné psát kód, který běží jak na backendu, tak na frontendu
Což se ale reálně dalo použít leda tak pro validační funkce a začíná to dávat smysl až se SSR a hydratací, což je záležitost posledního roku. Takže si spíš myslím, že to nebyl důvod vzniku – asi nikdo by nevydržel čekat na to 15 let.
IMHO to vzniklo proto, aby frontenďáci mohli psát taky beckendy bez potřeby učit se nový jazyk.
Tohle se vždy uvádí jako výhoda JS na serveru, a já to stále nechápu. Rozdíly mezi frontendem a backendem jsou úplně v něčem jiném, je to úplně jiný způsob myšlení – na FE máte jednoho uživatele, na BE máte spoustu souběžně aktivních uživatelů a musíte hlídat, aby se jim nepomíchala data. Na FE máte jedno vlákno, na BE musíte řešit konkurenční přístup. Na BE řešíte trvalé uložení dat a jejich efektivní načítání, na FE řešíte, jak data vhodně prezentovat uživateli. To, se na obojí použije stejný programovací jazyk, mi oproti těm koncepčním rozdílům připadá jako nepodstatná prkotina. Jako by někdo považoval za výhodu, že při řízení auta i při pilotování JumboJetu má stejný budík ukazující rychlost.
Na druhou stranu pro malé projekty a experimenty to asi smysl dává.
Mně JS na serveru začal dávat smysl (pro malé projekty a experimenty) právě až s příchodem Deno. Protože teprve s ním padla ta magická hranice, že napíšu prototyp na 20 řádků do jednoho souboru, napíšu deno run, a běží mi server – a nemusím instalovat závislosti a používat divné callbackové API nekompatibilní s tím, co znám z prohlížeče.
Ono nejde o "frontenďáky" ale hlavně o to, že když máte na projektu pár lidí a chcete, aby byli trochu univerzálnější než že umí "jenom" frontend a "jenom" backend, je docela fajn, když je ten jazyk, resp. platforma (jak se to vezme v tomhle případě) jenom jedna protože třeba kombinace Python/TypeScript nebo C#/TypeScript je za předpokladu, že to ten člověk fakt má umět rozhodně dražší než jenom třeba Node.js/TypeScript. A lidí, co by skutečně dobře uměli obojí je podstatně méně.
Nemluvě tedy o tom, že pak taky ve velké míře používáte stejné knihovny. Samozřejmě ty, které jsou užitečné v prohlížeči i na backendu. Ale ta množina se občas docela prolíná.
Já jsem pořád přesvědčený o tom, že samotný programovací jazyk, a dokonce i ty knihovny, jsou jen malá část toho, co v takovém případě potřebujete znát. A že pokud už někdo umí SQL a rozumí aspoň trochu relačním databázím; chápe, jak pracovat v multiuživatelském prostředí; ví, jak vypadá HTTP komunikace – pro takového člověka není problém naučit se psát v dalším jazyce. A pokud to neumí, tak nepatří do kategorie „fakt umět“ a může psát opravdu jen nějaké prototypy nebo malé projektíky.
Ti lidé stojí peníze. A hůře se shánějí. Nemluvě o tom, že se sice považuji za fullstackového vývojáře, ale i tak jsem za těch patnáct let nepotkal zrovna mnoho lidí, co by uměli na stejně kvalitní úrovni backend v jedné úlatformě, třeba v C# a frontend v jiné platformě, třeba JS/TS. Takových je prostě málo. Jenomže to je na projektech s menším počtem vývojářů docela problém.
Tohle je obecný princip.
Ano jeden jazyk/platforma by byl ideální, bohužel ne každý má ten luxus. Třeba já rád dělám UI/UX, naučil se Qt a za pár let mi do něj injektovali JS :D. Ale v pohodě, QtQuick dává smysl. Řešit UI je vždy těžký ať už na desktopu, embeded nebo webové. Kdo potřebuje opravdu dobré, rychlé a spolehlivé web UI, ten dnes má ale problém. Namísto programátora co válí JS/HTML/CSS a nějaké patterny a architekturu se hledá už jen React Devlopeři.