Историята на JavaScript: ECMAScript, TC39 и по-нови версии

JavaScript е жив език, който постоянно добавя нови функции. Това, което искам да направя в тази публикация, е да разбия този процес и да покажа стъпките, необходими, за да може нова функция да премине от обикновена идея до част от официалната спецификация. За целта ще трябва да обхванем три неща: ECMA, ECMAScript и TC39.

Обърнете внимание, че записах и видео версия на тази статия, ако предпочитате да гледате това:

Да се ​​върнем към 1995 г. Култовата класика „Тежки тежести“ беше в театрите, Никола Кейдж спечели „Оскар“ и уебсайтовете изглеждаха така. Сега шансовете са начинът, по който сте гледали този уебсайт с Netscape Navigator.

По това време Netscape Navigator беше най-популярният уеб браузър с почти 80% пазарен дял. Основателят на Netscape, компанията зад Netscape Navigator, беше Марк Андресен. Той имаше визия за бъдещето на мрежата и това беше нещо повече от начин за споделяне и разпространение на документи. Той предвиди по-динамична платформа с интерактивност от страна на клиента - нещо като „лепило за езика“, което беше лесно за използване както от дизайнери, така и от разработчици.

Това е мястото, където Брендън Айх влиза в картината. Той беше нает от Netscape с цел да вгради езика за програмиране на схемата в Netscape Navigator. Но преди да успее да започне, Netscape си сътрудничи с Sun Microsystems, за да предоставят на браузъра си разработвания и идващ език за програмиране Java. Сега това повдига въпроса: „Ако Java вече беше подходящ език, защо да въвеждате Brendan, за да създадете друг?“.

Е, ако си спомняте за целта на Netscape, те искаха език за скриптове, който е достатъчно прост за използване от дизайнери и любители - Java не беше това. Така идеята стана, че Java може да се използва от професионалисти, а „Mocha“, което беше първоначалното име на JavaScript, ще бъде използван от всички останали.

Поради това сътрудничество между езиците, Netscape реши, че Mocha трябва да направи комплимент на Java и трябва да има сравнително подобен синтаксис. След това, само за 10 дни, Брендан създаде първата версия на Mocha, която все още имаше известна функционалност от Схема, ориентация на обекта на SmallTalk и синтаксиса на Java. В крайна сметка името Mocha се промени на LiveScript и след това LiveScript се промени на JavaScript като маркетинг, за да управлява Hype на Java. Така че в този момент JavaScript беше пуснат на пазара като скриптов език за браузъра - достъпен както за любители, така и за дизайнери, докато Java беше професионалният инструмент за изграждане на богати уеб компоненти.

Сега е важно да разберем контекста кога са се случвали тези събития. Освен Николас Кейдж, спечелил "Оскар", Microsoft работеше и върху Internet Explorer. Тъй като JavaScript коренно промени потребителското изживяване в мрежата, ако бяхте конкурентен браузър, нямаше друг избор, освен да излезете със собствената си JavaScript реализация, тъй като все още не беше стандартизиран. Точно това направи Microsoft и го нарекоха JScript.

Това доведе до доста известен проблем в историята на интернет. JScript попълни същия случай на използване като JavaScript, но прилагането му беше различно. Това означава, че не можете да създадете един уебсайт и очаквате той да работи както в Internet Explorer, така и в Nestscape Navigator. Всъщност двете реализации бяха толкова различни, че логотипите „Най-добре гледани в Netscape“ и „Най-добре гледани в Internet Explorer“ станаха обичайни за повечето компании, които не можеха да си позволят да изграждат и за двете реализации.

Това е мястото, където Ecma влиза в картината. Ecma International е „индустриална асоциация, основана през 1961 г., посветена на стандартизацията на информационните и комуникационни системи.“ През ноември 1996 г. Netscape представи JavaScript на Ecma, за да създаде стандартна спецификация.

Правейки това, той даде глас на други изпълнители в еволюцията на езика и в идеалния случай ще поддържа други изпълнения последователни в браузърите. Така че нека се потопим в това как работи Ecma

Всяка нова спецификация се предлага със стандарт и комитет. В случая на JavaScript стандартът е ECMA-262, а комитетът, който работи по стандарта ECMA-262, е TC39. Ако погледнете стандарта ECMA262, ще забележите, че терминът „JavaScript“ никога не се използва. Вместо това те използват термина „EcmaScript“, за да говорят за официалния език. Причината за това е, защото Oracle притежава запазената марка на термина „JavaScript“, така че за да избегне правни проблеми, Ecma използва вместо това термина EcmaScript.

В реалния свят ECMAScript обикновено се използва за позоваване на официалния стандарт EMCA-262, докато JavaScript се използва, когато говорим за езика на практика. Както бе споменато по-рано, комитетът, който контролира развитието на стандарта Ecma262, е TC39, който означава Технически комитет 39.

TC39 е съставен от „членове“, които обикновено са доставчици на браузъри и големи компании, които са инвестирали сериозно в мрежата като Facebook и PayPal. За да присъстват на срещите, „членове“ (отново големи компании и доставчици на браузъри) ще изпратят „делегати“, които да представляват посочената компания или браузър. Именно тези делегати са отговорни за създаването, одобряването или отказването на езикови предложения.

Когато се създава ново предложение, то трябва да премине през определени етапи, преди да стане част от официалната спецификация. Важно е да се има предвид, че за да може всяко предложение да премине от един етап в друг, трябва да се постигне консенсус между TC39. Това означава, че голямо мнозинство трябва да се съгласи, докато никой не е категоричен, за да наложи вето върху конкретно предложение.

Всяко ново предложение започва от Етап 0. Този етап се нарича етап на лосато. Предложенията от етап 0 са „предложения, които се планират да бъдат представени пред комисията от шампион на TC39 или са представени пред комисията и не са отхвърлени окончателно, но все още не са постигнали нито един от критериите за преминаване в етап 1.“ Така че единственото изискване за получаване на предложение от етап 0 е документът да бъде прегледан на заседание на TC39. Важно е да се отбележи, че използването на функция Stage 0 във вашата кодова база е добре, но дори и да продължава да става част от официалната спецификация, почти сигурно ще премине през няколко повторения преди това.

Следващият етап от зрелостта на ново предложение е етап 1. За да преминете към етап 1, трябва да бъде идентифициран официален „шампион“, който е част от TC39 и отговаря за предложението. В допълнение, предложението трябва да опише проблема, който решава, да има илюстративни примери за използване, API на високо ниво и да идентифицира всички потенциални проблеми и предизвикателства пред прилагането. Приемайки предложение за етап 1, комисията сигнализира, че са готови да изразходват ресурси, за да разгледат предложението по-задълбочено.

Следващият етап е етап 2. В този момент е повече от вероятно тази функция в крайна сметка да стане част от официалната спецификация. За да се стигне до етап 2, предложението трябва на официален език да съдържа описание на синтаксиса и семантиката на новата функция. С други думи, е написана чернова или първа версия на това, което ще бъде в официалната спецификация. Това е етапът за наистина заключване на всички аспекти на функцията. Бъдещите промени все още могат да настъпят, но те трябва да са само незначителни, постепенни промени.

Следва етап 3. На този етап предложението е предимно завършено и сега просто се нуждае от обратна връзка от изпълнителите и потребителите, за да напредне по-нататък. За да преминете към етап 3, спецификационният текст трябва да бъде завършен и да бъдат създадени поне две изпълнения на спецификацията.

Последният етап е етап 4. На този етап предложението е готово да бъде включено в официалната спецификация. За да стигнете до етап 4, трябва да бъдат написани тестове, две спецификации за съвместимост трябва да преминат през тези тестове, членовете трябва да имат значителен практически опит с новата функция, а редакторът на спецификациите на EcmaScript трябва да излезе от текста на спецификацията. По принцип след като едно предложение стигне до етап 4, то е готово да спре да бъде предложение и да влезе в официалната спецификация. Това извежда последното нещо, което трябва да знаете за целия този процес и това е графикът за пускане на TC39.

От 2016 г. всяка година излиза нова версия на ECMAScript с каквито и функции да са готови по това време. Това означава, че всички предложения за етап 4, които съществуват, когато се случи ново издание, ще бъдат включени в изданието за тази година. Поради този годишен цикъл на издаване, новите функции трябва да бъдат много по-постепенни и по-лесни за възприемане.

Това е част от курса ми „Съвременен JavaScript“ на tylermcginnis.com.