A JavaScript története: ECMAScript, TC39 és azon túl

A JavaScript egy olyan élő nyelv, amely folyamatosan új funkciókat kínál. Amit ebben a bejegyzésben szeretnék elvégezni, lebontom a folyamatot, és megmutatom az új funkcióhoz szükséges lépéseket az egyszerű ötletből a hivatalos specifikáció részéig történő átváltáshoz. Ehhez három dolgot kell lefednie: ECMA, ECMAScript és TC39.

Vegye figyelembe, hogy a cikk video változatát is felvettem, ha inkább ezt szeretnéd nézni:

Vessünk vissza magunk 1995-ig. A kultikus klasszikus Heavy Weights a színházakban volt, Nicolas Cage Oscar-díjat nyert, és a weboldalak hasonlónak látszottak. Most az esélyek vannak arra, ahogyan a Netscape Navigator segítségével megtekintette ezt a weboldalt.

Abban az időben a Netscape Navigator volt a legnépszerűbb böngésző, közel 80% -os piaci részesedéssel. A Netscape alapítója, a Netscape Navigator mögött álló cég Mark Andreessen volt. Víziója volt a web jövőjéről, és ez nem csak a dokumentumok megosztásának és terjesztésének a módja volt. Elképzelte egy dinamikusabb platformot az ügyféloldali interaktivitással - egyfajta „ragasztóanyag-elemmel”, amelyet mind a tervezők, mind a fejlesztők könnyen használtak.

Itt jön a kép Brendan Eich. A Netscape toborozta azzal a céllal, hogy a Séma programozási nyelvet beágyazza a Netscape Navigatorba. Mielőtt elindult volna, a Netscape együttműködött a Sun Microsystems-kel, hogy elérhetővé tegyék a Java és a Java programozási nyelvüket a böngészőben. Most felmerül a kérdés: „Ha a Java már megfelelő nyelv volt, akkor miért kellene Brendanot létrehozni egy újabb nyelv létrehozására?”.

Nos, ha emlékszel vissza a Netscape céljára, azt akarták, hogy a szkriptnyelv elég egyszerű legyen a tervezők és amatőrök számára - a Java nem az volt. Így az az ötlet alakult ki, hogy a Java-t szakemberek használhatják, és a „Mocha” -ot, amely a JavaScript eredeti neve volt, mindenki más fogja használni.

A nyelvek közötti együttműködés miatt a Netscape úgy döntött, hogy Mochának a Java kiegészítésére van szüksége, és viszonylag hasonló szintaxissal kell rendelkeznie. Ezután mindössze 10 nap alatt Brendan elkészítette a Mocha első verzióját, amely még mindig rendelkezett bizonyos funkciókkal a Scheme-ből, a SmallTalk objektum-orientációjából és a Java szintaxisából. Végül a Mocha név LiveScript-re változott, majd a LiveScript JavaScript-re változott, mint marketingpálya a Java hype-jére. Tehát ezen a ponton a JavaScriptet szkriptnyelvként forgalmazták a böngésző számára - elérhetők mind az amatőrök, mind a tervezők, míg a Java volt a professzionális eszköz a gazdag webes összetevők készítéséhez.

Fontos megérteni a körülményeket, amikor ezek az események történtek. Amellett, hogy Nicolas Cage Oscar-díjat nyert, a Microsoft az Internet Exploreren is dolgozott. Mivel a JavaScript alapvetően megváltoztatta az internet felhasználói élményét, ha versengő böngésző volt, nem volt más választása, mint hogy saját JavaScript-megvalósításával álljon elő, mivel még nem volt szabványosítva. Tehát pontosan ezt tette a Microsoft, és JScript-nek hívták.

Ez egy nagyon híres problémához vezetett az internet történetében. A JScript ugyanazt a felhasználási esetet töltötte be, mint a JavaScript, de a megvalósítása más volt. Ez azt jelentette, hogy nem tudott létrehozni egy webhelyet, és elvárhatja, hogy működjön mind az Internet Explorerben, mind a Nestscape Navigatorban. Valójában a két megvalósítás annyira különbözött egymástól, hogy a „Legjobban megtekintett a Netscape-ben” és a „Legjobban megtekintett az Internet Explorerben” logók a legtöbb olyan vállalkozás számára elterjedtek, amelyek nem voltak megengedhetik maguknak, hogy mindkét megvalósításra építsenek.

Az Ecma itt kerül a képbe. Az Ecma International „egy 1961-ben alapított iparági szövetség, amely az információs és kommunikációs rendszerek szabványosítására törekszik.” 1996 novemberében a Netscape JavaScriptet küldött az Ecma-nak, hogy kidolgozza egy szabványos előírást.

Ezzel más szakembereknek is hangot adott a nyelv fejlődésében, és ideális esetben a többi megvalósítást egységesen tartja a böngészők között. Tehát mássuk bele az Ecma működésébe.

Minden új specifikációhoz szabvány és bizottság tartozik. JavaScript esetén a szabvány az ECMA-262, a bizottság, amely az ECMA-262 szabványon dolgozik, a TC39. Ha megnézi az ECMA262 szabványt, észreveszi, hogy a „JavaScript” kifejezést soha nem használják. Ehelyett az „EcmaScript” kifejezést használják, hogy a hivatalos nyelvről beszéljenek. Ennek oka az, hogy az Oracle a „JavaScript” kifejezés védjegye, így a jogi kérdések elkerülése érdekében az Ecma az EcmaScript kifejezést használja.

A való világban az ECMAScript-et általában hivatalos szabványra, az EMCA-262-re utalják, míg a JavaScriptet használják, amikor a nyelvről beszélünk a gyakorlatban. Mint korábban említettük, az Ecma262 szabvány fejlődését felügyelő bizottság a TC39, amely a 39. műszaki bizottságot képviseli.

A TC39 „tagokból” áll, akik tipikusan böngészőszolgáltatók és nagyvállalatok, akik jelentős erőfeszítéseket tettek az internetbe, mint például a Facebook és a PayPal. Az üléseken való részvételhez a „tagok” (ismét nagyvállalatok és böngészőgyártók) „küldötteket” küldnek, akik képviselik az említett társaságot vagy böngészőt. Ezek a küldöttek felelnek a nyelvi javaslatok létrehozásáért, jóváhagyásáért vagy elutasításáért.

Új javaslat létrehozásakor a javaslatnak bizonyos szakaszokban kell mennie, mielőtt a hivatalos specifikáció részévé vált. Fontos szem előtt tartani, hogy minden javaslatnak az egyik szakaszból a másikba történő elmozdulásához a TC39 közötti konszenzusra van szükség. Ez azt jelenti, hogy a nagy többségnek egyet kell értenie, míg senki sem határozottan nem ért egyet azzal, hogy megvétóztassa egy adott javaslatot.

Minden új javaslat a 0. szakaszban kezdődik. Ezt a szakaszt Strawman szakasznak hívják. A 0. szakasz javaslata „olyan javaslat, amelyet egy TC39 bajnok tervez a bizottság elé terjeszteni, vagy amelyet a bizottság elé terjesztenek, és amelyet nem utasítanak el véglegesen, de még nem teljesítették az 1. szakaszba lépés kritériumának egyikét”. A 0. szakasz javaslatává válásának egyetlen feltétele az, hogy a dokumentumot felül kell vizsgálni a TC39 ülésén. Fontos megjegyezni, hogy a 0-es számú szolgáltatás használata a kódbázisban rendben van, de még ha továbbra is a hivatalos specifikáció részévé válik, szinte biztosan néhány iterációt áthalad azelőtt.

Az új javaslat érettségének következő szakasza az 1. szakasz. Az 1. szakaszba lépéshez meg kell határozni a TC39 részét képező hivatalos „bajnokot”, aki a javaslatért felel. Ezenkívül a javaslatnak leírnia kell a megoldott problémát, szemléltető példákat kell tartalmaznia a felhasználásra, magas szintű API-ra, és meg kell határoznia az esetleges problémákat és a végrehajtási kihívásokat. Az első szakaszra vonatkozó javaslat elfogadásával a bizottság jelzi, hogy hajlandó forrásokat költeni a javaslat alaposabb megvizsgálására.

A következő szakasz a 2. szakasz. Ezen a ponton több mint valószínű, hogy ez a szolgáltatás végül a hivatalos specifikáció részévé válik. A 2. szakasz elérése érdekében a javaslatnak hivatalos nyelven tartalmaznia kell az új elem szintaxisának és szemantikájának leírását. Más szavakkal, a tervezet vagy annak első változata meg van írva. Ebben a szakaszban valóban lezárjuk a szolgáltatás összes aspektusát. A jövőbeni változások valószínűleg továbbra is előfordulhatnak, ám ezeknek csak kismértékű, növekményes változásoknak kell lenniük.

A következő lépés a 3. szakasz. Ezen a ponton a javaslat többnyire befejeződött, és most már csak visszajelzésre van szükség a végrehajtók és a felhasználók részéről, hogy tovább haladjanak. A 3. szakasz eléréséhez a specifikációt el kell készíteni, és legalább két specifikus megvalósítást létre kell hozni.

Az utolsó szakasz a 4. szakasz. Ezen a ponton készen áll a javaslat beillesztésére a hivatalos specifikációba. A 4. szakasz eléréséhez teszteket kell írni, két speciális megvalósításnak meg kell felelnie ezeknek a teszteknek, a tagoknak jelentős gyakorlati tapasztalatokkal kell rendelkezniük az új funkcióval kapcsolatban, és az EcmaScript specifikáció-szerkesztőnek ki kell jelentkeznie a specifikáció szövegére. Alapvetõen, amint egy javaslat eljut a 4. szakaszba, készen áll arra, hogy ne legyen javaslat, és belekerüljön a hivatalos specifikációba. Ez előhozza az utolsó dolgot, amelyet tudnia kell az egész folyamatról, azaz a TC39 kiadási ütemezése.

2016-tól kezdődően minden évben megjelenik az ECMAScript új verziója, bármilyen funkcióval, amely akkor készen áll. Ez azt jelenti, hogy az új kiadás bekövetkezésekor létező 4. szakasz javaslatait belefoglalják az adott évre szóló kiadásba. Az éves kiadási ciklus miatt az új funkcióknak sokkal növekvőnek és könnyebben alkalmazhatónak kell lenniük.

Ez a tylermcginnis.com „Modern JavaScript” kurzusom része.