Bulldogjob
Bulldogjob

Wzloty i upadki – historia JavaScript

Poznaj historię, najważniejsze momenty i problemy w rozwoju tego języka programowania.
16.07.20216 min
Wzloty i upadki – historia JavaScript

Dzisiaj JavaScript jest wszędzie, chociaż w pierwszych kilkunastu latach jego istnienia miał wiele kłopotów. Jak to się stało, że z prostego narzędzia do skryptowania stronek stał się najbardziej popularnym językiem programowania?

JavaScript łączy w sobie programowanie strukturalne, obiektowe i funkcyjne. To język skryptowy uruchamiany na silnikach JavaScript, dostępnych między innymi w przeglądarkach internetowych. Dziś to jedna z podstawowych technologii do tworzenia stron internetowych, baz danych NoSQL, aplikacji webowych i rozwiązań serwerowych.

Należy pamiętać, że mówimy o języku, w którym są takie kwiatki:

'1' == 1 // -> true

'' == false // -> true

typeof NaN // -> “number”

['10', '10', '10'].map(parseInt) // -> [10, NaN, 2]


Dodawanie ma na tyle ciekawe właściwości, że powstała strona do zapisywania zwykłego kodu w postaci przypominającej język Brainfuck. Podobieństwo jest na tyle duże, że autorzy nazwali ją JSFuck. Ale dość narzekań - czas na historię!

Jak powstał JavaScript?

Legenda głosi, że Brendan Eich stworzył JavaScript w dziesięć dni. Złośliwi dodają, że zrobił to na kacu. Wszystko zaczęło się w 1993 roku, kiedy na rynku pojawiła się przeglądarka NCSA Mosaic, która jako pierwsza pozwalała na wyświetlanie obrazów. Rok później firma Mosaic Communications przejęła programistów NCSA, żeby pod nowym szyldem stworzyli przeglądarkę Mosaic Navigator.

Nowa przeglądarka zadebiutowała 15 grudnia 1994 roku. W kilka miesięcy zdobyła 70% rynku. Wspierała między innymi migający tekst (?) i elementy formularza. Ze względów prawnych wkrótce zmieniono jej nazwę na Netscape Navigator, a producentem zostało Netscape Communications. Autorzy przeglądarki cały czas szukali sposobu na to, żeby strony www stały się bardziej interaktywne.

W 1995 roku w siedzibie Netscape Communications pojawił się Brendan Eich. Zaproponował osadzenie w przeglądarce interpretera języka programowania Scheme. Próbowano też wsparcia dla języka Java. Brendan połączył elementy trzech języków: Java, Scheme i Self. Projekt szybko przejęła Sun Microsystems, firma współpracująca z Netscape Communications, ale wkrótce z niego zrezygnowała. Wtedy właśnie, w maju 1995 roku, Brendan Eich stworzył nowy język. Najpierw nazwano go Mocha, później LiveScript. Wreszcie - w przeglądarce Netscape Navigator 2.0 - użyto po raz pierwszy nazwy JavaScript. Ten wybór powoduje pewne zamieszanie: do dziś można znaleźć osoby, które sądzą, że JavaScript jest pochodną Javy. Co ciekawe, to właśnie właściciel Javy - czyli Sun Microsystems - został jednocześnie właścicielem znaku towarowego JavaScript.

Wkrótce potem Microsoft skopiował ten język w swojej przeglądarce, nadając mu nazwę JScript. Aby uchronić się przed działaniami silnej konkurencji, Netscape Communications postanowiła stworzyć standard ECMAScript - we współpracy z genewską organizacją ECMA (European Computer Manufacturers Association). Był rok 1997, JavaScript zaczął podbijać rynek i ewoluować.

Ewolucja JavaScript, czyli w pogoni za doskonałością

Przez te wszystkie lata JavaScript ulegał wielu transformacjom i nigdy nie przestał się rozwijać: ostatnią aktualizację wydano w czerwcu 2018 roku. Już pierwsza wersja JavaScript wprowadziła cechy obecne również dzisiaj jak na przykład model obiektowy. Ze względów marketingowych od początku starano się jak najbardziej upodobnić składnię JavaScript do języka Java. Widoczny był silny wpływ nie tylko Scheme (na przykład wyjątki), ale i Self (model obiektowy oparty na prototypach). Kiedy w 1995 roku w przeglądarce Netscape Navigator 2.0 zaimplementowano pierwszą wersję JavaScript, wiele z podstawowych funkcji jeszcze nie działało (na przykład funkcje anonimowe, łańcuch prototypów).

Zmiany pojawiły się wraz z ogłoszeniem pierwszej wersji standardu - ECMA-262 w 1997 roku. Już wtedy liczba stron używających JavaScript szacowana była na ponad 300 tysięcy. Wyjątki nie były jeszcze częścią JavaScript.

Poważna transformacja języka nastąpiła w 1999 roku wraz ze standardem ECMAScript 3. W tej wersji JavaScript zyskał wyrażenia regularne, pętlę do-while, wyjątki i bloki try/catch. Pojawiły się też wbudowane funkcje dla ciągów i tablic, poprawiono obsługę błędów. Ta wersja była już obsługiwana przez wszystkie najważniejsze przeglądarki internetowe. W tym czasie pojawił się także XMLHttpRequest, czyli API dostępne w postaci obiektu JS, które umożliwiło wykonywanie asynchronicznych żądań do serwera.

Niestety, kolejne lata nie były już takie dobre. W ECMA toczyły się zażarte spory o to, w jakim kierunku powinien ewoluować język, co paraliżowało jego rozwój. W końcu prace nad ECMAScript 4 zostały wstrzymane (ten standard rozwijano nieoficjalnie, wydano go później pod numerem 3.1). W 2011 roku wyszedł standard ECMAScript 5, ale była to niewielka aktualizacja, która wprowadziła między innymi getter/setters, JSON czy strict mode. Standard był o tyle ważny, że przerwał impas trwający niemal dziesięć lat. Przeglądarki szybko go zaadaptowały.

W 2015 i 2016 roku nadeszły kolejne zmiany. Nowością było na przykład wsparcie dla wbudowanych podklas, obsługa standardu Unicode, optymalizacja połączeń tail-call, domyślne argumenty dla funkcji i operatora reszty. Aktualizacja z 2017 przyniosła między innymi Object.values, Object.entries i Object.getOwnPropertyDescriptor, a najnowsza wersja funkcje znane jako Object Rest/Spread Properties czy asynchroniczne iteratory. To na pewno nie koniec.

Prawdziwy czy pozorny upadek?

W pewnym momencie JavaScript był tak popularny, że stało się to wręcz jego przekleństwem. Niektórzy programiści mówili o nim lekceważąco, traktując go jak język dla amatorów. Duża w tym zasługa banalizacji programów pisanych w JavaScript, których efektem nierzadko były latające po stronie www zwierzątka czy zwracanie bezużytecznych komunikatów w pasku statusu przeglądarek. W sieci można było znaleźć ogromne ilości darmowych skryptów, które często powodowały awarie. Popularne były generatory pluginów i efektów do dołączenia na swoją stronę. To właśnie JavaScript był odpowiedzialny za znienawidzone przez wszystkich, irytujące okienka pop-up.


Generator ważnego elementu każdej poważnej strony z początku XXI w. Przewijanie tekstu w pasku tytułu było trendy!

Znaczna część kodu napisana w JS w tym okresie była co najmniej dyskusyjnej jakości. Nikt nie brał tej technologii na poważnie. Często osoby, które używały JS, były postrzegane bardziej jako script kiddies, niż programiści. Jeśli chodzi o budowanie interaktywnych doświadczeń na stronach www, JavaScript miał w tym okresie paru poważnych konkurentów - przede wszystkim Flasha, stworzonego przez Macromedia. Dziś już wszyscy wiemy, że Flash to zło, a Adobe dobrze zrobił, uśmiercając go. Jednak w latach 2005-2010 wydawał się on doskonałą technologią do robienia efektownych, interaktywnych stron. Jeszcze dziesięć lat temu np. większość konfiguratorów producentów samochodów była napisana we Flashu. Dziś standardem jest kombinacja HTML5+CSS3+JS.

JS jest wszędzie, czyli odrodzenie

Na to, że JavaScript zaczęto traktować poważnie, złożyło się kilka czynników. Pierwszą iskrą było pojawienie się AJAX-a. W 2005 roku Jesse James Garrett opublikował pracę opisującą tę technologię. AJAX umożliwił tworzenie bardziej dynamicznych stron www poprzez wykorzystanie asynchronicznych wywołań serwerowych.

Wiele osób zauważyło w JavaScripcie nowy potencjał i zaczęło metodycznie eksplorować jego możliwości. Tu trzeba wyjaśnić: nie chodzi o to, że JS był szczególnie dobry, ale wspierały go niemal wszystkie przeglądarki. Forsowanie nowego, lepszego języka nie miało sensu w momencie, gdy możliwości już leżały na stole i wystarczyło tylko z nich skorzystać. To tchnęło nowe życie w społeczność JavaScriptu. Powstały Prototype, jQuery, Mootools, Dojo, czyli biblioteki znacznie ułatwiające development. Dodały one do arsenału programistów zbiór narzędzi, które były obecne w bibliotekach standardowych innych języków, a także znacznie ułatwiły pracę z DOM.

Pomogła też książka Douglasa Crockforda - „Javascript. Dobre strony”. Złośliwi twierdzą, że dobrych stron nie jest zbyt dużo i dlatego książka jest tak cienka. Mimo niewielkiej objętości wyznaczyła nowy standard w myśleniu o tym języku.

Chcąc przyspieszyć działanie JS w przeglądarce Chrome, Google stworzyło silnik V8. Został opracowany jako komponent, który może być używany samodzielnie lub wbudowany w inny program. Od tego czasu został wykorzystany między innymi w MongoDB czy Node.js. To właśnie Node.js miał olbrzymi wpływ na dalszy rozwój wypadków i rozpoczął reakcję łańcuchową, która trwa do dziś.

JavaScript przeżywa odrodzenie i trudno znaleźć poważny serwis, który go nie używa. jQuery jest niemal wszędzie, zastosowanie frameworków takich jak Angular, Vue.js cały czas rośnie, komponenty Reacta na stałe zagościły na wielu stronach, wiele serwerów działa wykorzystując Node.js. A to jeszcze nie koniec, bo asm.js umożliwia odpalanie innych języków programowania przy pomocy JS. Kto by pomyślał dziesięć lat temu, że uruchomienie aplikacji napisanej w C będzie możliwe wewnątrz przeglądarki?

JavaScript jest dziś jednym z najważniejszych i najpowszechniej używanych języków programowania. Łatwe tworzenie kombinacji HTML, CSS i właśnie JavaScript sprawia, że można bez problemu budować aplikacje na różne systemy mobilne. Posiada biblioteki, wtyczki i API, coraz częściej wykorzystywane przez Internet Rzeczy. Kto wie, czym jeszcze zaskoczy nas JavaScript? Nie tak dawno wydawało się, że to język bez przyszłości, a teraz jest jedną z najlepiej rozwijających się technologii.

JavaScript ma też swoje dziwactwa, z których programiści nieraz się nabijają - przeczytasz o nich w odrębnym artykule.

<p>Loading...</p>