Wszystko zaczęło się, gdy szukałem sposobu na przetestowanie mojej strony internetowej pod kątem zgodności z JavaScript, takiej jak W3C HTML Validator . Jeszcze nie znalazłem. Daj mi znać, jeśli znasz jakieś ...
Szukałem oficjalnej strony JavaScript i znalazłem skrypt ECMA . Ci ludzie znormalizowali język skryptowy (nie mam już ochoty nazywać go JavaScript!) I nazwali go ECMA-262 ( Wikipedia ). Ich najnowszą pracą jest edycja 5.1
JavaScript został opracowany przez Mozilla Corporation, a ich ostatnia stabilna wersja to 1.8.5 ( zobacz to ), która jest oparta na wydaniu ECMA 5.1
Strona Wikipedii związane wspomina dialektów. JavaScript 1.8.5 Mozilli jest wymieniony jako dialekt wraz z JScript 9 (IE) i JavaScript (Chrome V8 [ Wiki ]) i wiele innych. Czy rozumiem, że JavaScript 1.8.5 jest pochodną ECMA-262, a SpiderMonkey [ Wiki ] to silnik, który go obsługuje? A Chrome ma własny dialekt, a silnik V8 to program, który go uruchamia?
Biorąc pod uwagę wszystkie te dialekty oparte na ECMA-262, nie rozumiem już „Czym jest JavaScript ”? Czy istnieją naprawdę języki skryptowe dla różnych przeglądarek? Czy różni realizatorzy spotykają się, aby uzgodnić zgodność krzyżową dialektów? Czy to wysiłek ECMA?
źródło
Odpowiedzi:
Prawie wszystkie dojrzałe języki są zdefiniowane w specyfikacji, a kompilatory lub tłumacze próbują postępować zgodnie ze standardem zdefiniowanym w tej specyfikacji. Ale bardzo rzadko się to udaje, chyba że standard określa autor języka.
Można znaleźć standardu C ++ 2003 , w specyfikacji C # 4 , w specyfikacji Java 7 i wiele innych online. Wiele z nich ma numery normalizacyjne ECMA lub ISO. To tylko organizacje, w których możesz zarejestrować standard i uczynić go bardziej oficjalnym.
Ruby historycznie robiła rzeczy nieco inaczej, mając jako specyfikację wykonywalny zestaw testów . Tak więc, jeśli chcesz napisać tłumacza i nazwać go standardowym Ruby, po prostu musiałeś stworzyć tłumacza, który przeszedł wszystkie te testy. Ale nawet Ruby może ostatecznie stać się bardziej formalną specyfikacją .
JavaScript nie różni się, chyba że w sposób, w jaki ewoluował.
Javascript został stworzony po raz pierwszy przez Netscape. Nazwali go LiveScript, ale wyglądał podobnie do Java i zawarli umowę z Sunem nad tą nazwą, co było korzystne zarówno dla marketingu Netscape, jak i Java. Microsoft miał VBScript i (z powodów prawdopodobnie nie do pomyślenia) w zasadzie skopiował Javascript, ale nazwa była własnością Sun, więc bezczelnie nazwali ją JScript.
Ale JScript, chociaż jest bardzo podobny do JavaScript w składni, często korzysta z COM - na przykład IE5 i 6 tworzą instancję obiektu XMLHttpRequest
new ActiveXObject("Microsoft.XMLHTTP");
.I tak narodziły się równoległe, podobne, ale także różne „dialekty” Javascript. Z czasem różne grupy posiadające przeglądarki o mniejszym udziale w rynku niż IE próbowały ujednolicić język i przez lata Microsoft stawiał opór. Do wersji V8.
V8 był szybki. Wyznacza zupełnie nowy standard rynkowy. Sprawiało, że wszystko inne wyglądało kiepsko.
W wyniku różnych spraw antymonopolowych przeciwko Microsoftowi IE tracił udział w rynku. Nagle w interesie Microsoftu było wsparcie standaryzacji. Jeszcze nas tam nie ma, ale jest na dobrej drodze.
Tymczasem V8 był open-source, co pozwoliło ludziom zacząć myśleć nowych zastosowań dla szybkiego parsera JavaScript, takich jak node.js .
Wróćmy jednak do pytania: co to jest Javascript? Jest to pospolita (i oryginalna) nazwa ECMAScript, specyfikacja języka prototypowego, powszechnie, ale nie wyłącznie, używana do nawigacji i manipulowania modelem obiektowym domeny w przeglądarce.
ECMA-262 jest tylko standardową definicją, podobnie jak ECMA-334 jest standardową definicją języka C #. ECMAScript to jedyna nazwa, na którą wszystkie zainteresowane strony mogły się zgodzić jeszcze w roku 99, kiedy napisano ECMA-262.
źródło
Javascript jest powszechnie stosowaną implementacją ECMAScript. Jest to bardzo podobna sytuacja do rodziny Scheme . W schemacie masz wysoce sformalizowaną specyfikację. Obecna wersja to R6RS, chociaż R5RS jest zdecydowanie częściej wdrażanym standardem od tego postu. Wdrożenia są bardziej rozproszone niż ECMAScript ze względu na wiek Scheme i ogólne filozofie.
JavaScript jest obecnie powszechny, głównie ze względu na gwałtowny wzrost udziału w rynku zarówno przeglądarki Mozilla Firefox, jak i Google Chrome. Zdobył przyczółek z Netscape Navigator, który ostatecznie zmienił się w przeglądarkę Mozilla, a następnie w Firefox (i Iceweasel, jeśli biegasz z tłumem Scheme).
Teraz tutaj jest trochę groźnie. Większość wydajności Javascript pochodzi z analizatora składni i silnika, który go obsługuje. To tutaj ujawniają się prawdziwe różnice między przeglądarkami. Spidermonkey uruchamia Javascript inaczej niż V8. JavaScript wciąż ma poważne problemy, takie jak brak w pełni powszechnej biblioteki, choć nad tym pracujemy.
Więc jeśli Javascript to C ++, to ECMAScript byłby C ++ 11, przy czym UNIX i G ++ byłyby najbliższe „standardowi”, podczas gdy C ++ dla .NET i Objective C ++ leżą znacznie dalej, jak robi to ActionScript z ECMAScript
źródło