JavaScript oraz ECMAScript – dwa słowa, których wyjaśnienie często sprawia problemy zarówno początkującym jak i już bardzo doświadczonym developerom. Dokładając do tego wersjonowanie (ES5, ES6, ES2015, etc) możemy już utknąć w długiej wymianie zdań między różnymi programistami, którzy chcą przedstawić swoją interpretację tego tematu.

Co jest standardem, specyfikacją, implementacją, dialektem, itp. – mam nadzieję, że dzisiejszy wpis rzuci trochę więcej światła na to zagadnienie.

W pierwszej kolejności rozłóżmy wszystkie podane wcześniej nazwy na czynniki pierwsze.

Ecma

Ecma international (ang. European Association for Standardizing Information and Communication Systems; dawniej ang. European Computer Manufacturers Association) jest to organizacja, której zadaniem jest tworzenie standardów technologicznych. Nie jest ona związana tylko z JavaScript. Standardy wprowadzone przez Ecma dotyczą także płyt DVD, NFC czy algorytmów bezstratnej kompresji danych. Pełną listę możemy znaleźć pod tym adresem.

Na naszą szczególną uwagę powinien zasłużyć standard ECMA-262: ECMAScript® 2018 Language Specification, 9th edition (June 2018). ECMAScript jest więc nazwą standardu dla języków programowania ogólnego zastosowania (general-purpose programming language).

Początkowo, standard ten definiował specyfikację jedynie dla języków skryptowych. Skryptowych, czyli takich, które działają wewnątrz jakiegoś środowiska/systemu, który można obsługiwać przez interfejs użytkownika. Natomiast sam język skryptowy udostępniał nam możliwość wykonywania tych samych operacji w „programatyczny” sposób – poprzez pisanie skryptów (np. automatyzujących część prac).

ECMAScript

Obecnie, ECMAScript zdefiniowany jest już jako obiektowy język programowania ogólnego zastosowania, który wykonywany jest wewnątrz środowiska dostarczonego przez hosta. Nie jest on w stanie funkcjonować samodzielnie.

ECMAScript dostarcza nam więc zasady oraz wytyczne, którymi musi kierować się język programowania, aby mógł zostać uznany za kompatybilny ze standardem.

ES

ES jest niczym więcej niż tylko skrótem od ECMAScript. Za każdym razem, gdy zobaczymy skrót ES poprzedzający jakąś liczbę, możemy być pewni, iż mamy do czynienia z konkretną wersją standardu. Do dzisiaj (styczeń 2019) ukazało się 9 wersji standardu ECMAScript. Sześć pierwszy wersji oznaczone były nazwami ES1 (1997), ES2 (1998), ES3 (1999), ES4 (zaniechane), ES5 (2009). ES6 (2015).

Wersja ES6 była dość przełomowa, ponieważ od tej wersji Ecma International zdecydowała się na zmianę nazewnictwa kolejnych edycji. Zamiast numerować wersje, od teraz w nazwie konkretnej wersji znajduje się rok jej publikacji. ES6 został opublikowany w 2015r, dlatego też ta wersja, jako jedyna, posiada dwie nazwy – ES6 oraz ES2015. Wszystkie kolejne wydania są oznaczane już nazwami ES2016, ES2017, etc.

JavaScript

Idąc tym tropem, łatwo się domyśleć, iż JavaScript jest językiem programowania, który powstaje w zgodzie ze standardem ECMAScript i jest jego najpopularniejszą implementacją. Czytając specyfikację ECMAScript, możemy się nauczyć w jaki sposób stworzyć nowy język programowania. Natomiast czytając dokumentację JavaScript, uczymy się jak używać języka programowania.

Warto w tym momencie przytoczyć pewną ciekawostkę. JavaScript został stworzony w 1996r przez firmę Netscape i następnie wysłany do Ecma International w celu standaryzacji. W ten właśnie sposób został stworzony standard ECMAScript (ES1). Oczywistym więc było, iż JavaScript był w pełni zgodny z tym standardem. Tym samym doszliśmy dzisiaj do sytuacji w której ECMAScript bazuje na JavaScript i jednocześnie JavaScript implementuje ECMAScript.

Kolejna warta odnotowania rzecz, to fakt, iż człon Java w nazwie JavaScript, ze względów marketingowych został umieszczony tylko po to, aby skorzystać z rosnącej w tamtym czasie popularności języka Java.

I jak tu nie kochać tego języka!

Kamil Józwik

Front end developer👨‍💻 Autor małego narzędzia dla programistów - frontbook.dev oraz autor kolejnych postów na tym blogu. Ulubiony stack to React wraz z TypeScript oraz wszystko co "nowe" w tym pięknym dynamicznym front end-owym świecie 🙂

Dodaj komentarz