Dla wielu programistów internetowych, pracujących w językach HTML i CSS, korzystanie z JavaScript jest dużym ułatwieniem. Jest tak, ponieważ dobrze łączy się on z HTML i CSS, a jednocześnie poszerza nasze umiejętności w zakresie tych języków. Elastyczność, jaką zapewnia JavaScript, jest nieporównywalna z innymi językami – nawet jeśli uznamy go za nieodpowiedniego dla początkujących, ponieważ daje więcej możliwości, niż potrzeba do wykonania prostego zadania.

Obecnie JavaScript jest jednym z najsilniejszych języków na świecie ze względu na swoją wydajność i wszechobecność. Posiada potencjał, aby wykorzystać go w wielu popularnych branżach, jak uczenie maszynowe i analiza danych, gdzie, jak dotąd, Python wiedzie prym.

Wcześniej JavaScript był słabym, nieefektywnym językiem, któremu nie poświęcano większej uwagi. Te czasy już jednak minęły. Zobaczmy, dlaczego JavaScript stał się silniejszy niż kiedykolwiek.

V8: bestia napędzająca JavaScript

V8 to silnik JavaScript. Jest to interpreter, który wykonuje kod JS. Silnik JavaScript może być zaimplementowany jako standardowy interpreter, lub kompilator just-in-time (JIT), który kompiluje JavaScript do kodu bajtowego w określonej formie.

V8 jest wysoko wydajnym, open source'owym silnikiem JavaScript i WebAssembly JIT firmy Google, napisanym w języku C++. Jest on wykorzystywany m.in. w Chrome i Node.js. V8 może działać samodzielnie lub może być wbudowany w dowolną aplikację w C++.

Jest to oprogramowanie, które wysoce optymalizuje kod JS i przekształca go w kod maszynowy do wykonania przez procesor. Niektóre z zadań V8 to gromadzenie śmieci, kompilacja do kodu maszynowego, buforowanie w trybie online, kompresja punktu. Ma jednak o wiele więcej optymalizacji.

Kompresja wskaźnika jest nową techniką w V8, stworzoną w celu zwiększenia optymalizacji pamięci przy jednoczesnym braku wpływu na wydajność.

Rozwinięty ekosystem i społeczność

JavaScript posiada jeden z najbardziej rozwiniętych ekosystemów, jakie kiedykolwiek mógłby posiadać język programowania. Społeczność JavaScriptu jest ogromna, a próg wejścia jest niezwykle niski.

Możemy uruchomić przeglądarkę (znajdującą się na wszystkich komputerach osobistych), otworzyć konsolę, a silnik JS od razu uruchamia kod! Nigdy wcześniej nie było to możliwe w przypadku innych języków programowania o takiej złożoności.

Ponadto, JavaScript oferuje systemy pakietów npm i yarn. Znajdziemy pakiet do wszystkiego, czego potrzebujemy – od tworzenia losowych łańcuchów po obsługę strumieni i buforów.

Wszystkie możliwe proste błędy, związane z obsługą JavaScriptu, zostały już prawdopodobnie popełnione i opisane na stronach takich jak Stack Overflow, dlatego kiedy zaczynamy pracę z JavaScriptem możemy liczyć na wsparcie społeczności.

Struktury i biblioteki, takie jak React, Angular i Vue, są wzorem tego, jak przyszłe aplikacje powinny być budowane. Przesuwają one perspektywę w stronę programowania deklaratywnego zamiast imperatywnego. Dzięki temu programiści mogą tworzyć wysokiej jakości aplikacje bez obawy o wysokowydajny kod.

Wszechobecność

JavaScript znajdziemy w:

·   Frontend (przeglądarki)

·   Backend (Node, Deno)

·   Android/iOS (React Native, NativeScript, itd.)

·   Desktop (Electron)

·   Hybryda (Ionic)

Dlaczego jest to możliwe? Silniki JS, takie jak V8, napisane są w języku C/C++ i mogą być kompilowane nawet na systemach wbudowanych. Dla innych platform, ponieważ przeglądarki są zawsze dostępne (jak na Andorid/iOS), dostarczają one silnik JS, który może być użyty do uruchomienia dowolnego kodu, nawet dla aplikacji natywnych w przypadku React Native.

Zaawansowanie

Standardy JavaScript są kontrolowane przez niezwykle sprawną w działaniu społeczność ECMA-262 TC39. ECMAScript co roku wydaje nowy standard JavaScript. Deweloperzy mogą nawet poprosić o dodanie nowych funkcji do języka.JavaScript jest szybki i skalowalnyOczywiście, nic tak naprawdę nie dorównuje C/C++/Rust, ale JavaScript jest szybki - w tym sensie, że V8 może generować wysoce zoptymalizowany kod (zwłaszcza w porównaniu z jego najbliższymi konkurentami, takimi jak Python), monitorując sposób wykonywania kodu, opóźniając te fragmenty realizacji, które nie są używane i optymalizując segmenty kodu, które są używane bez przerwy. Wraz z rozwojem V8, staje się on jeszcze bardziej wydajny, także pod względem pamięci.

JavaScript (Node) jest wysoce skalowalny (z supersetami jak TypeScript). Działając na jednowątkowej architekturze, ludzie często krytykują Node za brak środowiska wątkowego, ale w rzeczywistości nie ma to większego znaczenia.

Sposób, w jaki skalujemy aplikacje Node, różni się tego, w jaki skalowalibyśmy aplikacje wielowątkowe. Node oznacza dosłownie "węzeł" - pojedynczy węzeł w grupie procesów. Node jest skalowany poprzez uruchamianie wielu jego instancji i zarządzanie klastrem.

JavaScript prowadzi asynchroniczny model programowania i nie potrzebuje wątków do skalowania. Zamiast tego, poszczególne procesy Node mogą być tworzone w celu obsługi i wykorzystania całego rdzenia procesora.