nam: ECMAScript vs JavaScript

Ich Grüsse

molily unterscheidet in seinem Essay über «JavaScript und Webstandards» zwischen ECMAScript und Client-Side JavaScript.

Für mich ist diese Unterscheidung nicht so logisch. Ich sehe EMCA-Script als Programmiersprache, für welche die verschiedenen Hosts (oder Laufzeitumgenungen) wie Browser, Acrobat etc. verschiedene Objekte bereitstellen. Diese Objekte (z.B. window) dienen als Brücke zu den Funktionen des Hosts und ändern an sich nichts an der Programmiersprache.
(Genau so wie eine Library für C auch nichts an der Sprache C ändert.)

Diese Aufteilung mag vor dem Hintergrund der Entstehung von JavaScript nicht ganz an erster Stelle stehen, da ja diese Objekte z.T. schon länger bestanden als ECMA-Script definiert ist.

Trotzdem: was ist meiner Auffassung entgegenzuhalten?

Gruss,
Mathias

PS: ich stelle diese Frage hier im Forum und schreibe nicht direkt an molily, weil er (du) das auch liest und weil ich mir nicht so sicher bin.

  1. Hallo,

    Ich weiß nicht ganz, in welchem Punkt du mir widersprichst.

    Aus aktueller Sicht versteht man unter »JavaScript« eine ECMAScript-Implementierung mit gewissen Host-Objekten, die bisher unter keinem griffigen Namen standardisiert wurden, sondern sich aus unterschiedlichen Schnittstellen zusammensetzen.

    Historisch gesehen gab es eine Trennung in Sprachkern und konkreter Anwendung wie du sagst nicht, weil Netscape Client-Side JavaScript 1.3 der ECMAScript-Spezifizierung vorausging und danach nur noch das Host-neutrale Netscape Core JavaScript als ECMAScript-Anwendung definiert wurde.

    Ob die Trennung jetzt logisch ist, weiß ich nicht, ich kann nur sagen, warum ich sie im Artikel aufgemacht habe. Das soll bloß sagen, dass »JavaScript« kein monolithischer Standard von irgendeinem zentralen Gremium, sondern ein Konglomerat aus Techniken unterschiedlicher Provenienz. Ein riesiger Haufen ist nicht ausreichend spezifiziert, sondern wird erst teilweise z.B. im Laufe von HTML 5 definiert. Es gibt zudem standardisierte und proprietäre Techniken, wobei letzteres nicht heißt, dass man sie deeshalb nicht verwendet. Man muss sich nur jeweils bewusst sein, welche Technik man gerade benutzt, wo sie definiert ist, wo man nachschlagen kann, wie sie unterstützt ist, wie man Unterstützung abfragen kann usw. Das ist halt eine ziemlich besondere Situation, die man von anderen Webtechniken oder Programmiersprachen nicht gewohnt ist.

    Soviel zur Aussageabsicht des Artikels und daher die Trennung: ECMAScript ist standardisiert, während window & Co. lose auf das prähistorische Netscape Client-Side JavaScript zurückgehen und es nun Initiativen gibt, auch window zu standardisieren. Wobei natürlich auch die Entwicklung von ECMAScript weiterläuft. Edition 3 ist halt nur der kleinste gemeinsame Nenner.

    Mathias

  2. Hallo,

    molily unterscheidet in seinem Essay über «JavaScript und Webstandards» zwischen ECMAScript und Client-Side JavaScript.

    Für mich ist diese Unterscheidung nicht so logisch.

    Für mich auch nicht, jedenfalls nicht bisher. Nach Überfliegen des genannten Artikels wird die Sache aber klarer:

    molily versteht unter JavaScript oder Client-Side JavaScript eher die urprüngliche Erfindung von Netscape, die den Namen auch vergeben haben. Microsofts JScript heißt nur deswegen anders, weil der Name JavaScript bereits geschützt war, als Microsoft ihre eigene Implementation brachten, und dabei sogar konzeptionelle Fehler übernahmen (Quelle: Douglas Crockford).

    Unter EMCA-Script versteht molily dagegen die nachträgliche Standardisierung ECMA-262, die allgemeiner ist und prinzipiell weder an Browser noch an Server gebunden ist, sondern auch von jeder anderen Host-Anwendung implementiert werden kann und wird. Man denke z.B. an das "JavaScript" von Adobe Acrobat, Photoshop, Indesign oder auch ActionScript.

    Trotzdem: was ist meiner Auffassung entgegenzuhalten?

    Eigentlich nichts. Man muss nicht unbedingt molilys Auffassung sein über die klare Trennung der Begriffe. Vielleicht ist es nur ein Versuch, da etwas Klarheit hineinzubringen. Es nützt ja auch nicht unbedingt viel, wenn alle nur undifferenziert von "JavaScript" sprechen. Eine klare Trennung der Begriffe ist aber meines Wissens bis jetzt nicht wirklich erfolgt. Vielleicht setzt sich ja molilys Auffassung irgendwann allgemein durch...

    Gruß, Don P

    1. Hallo,

      molily versteht unter JavaScript oder Client-Side JavaScript eher die urprüngliche Erfindung von Netscape

      Wie gesagt, der Artikel geht über »JavaScript und Webstandards«, weil es eine Webstandards-Bewegung gibt und es mir nötig erschien, den Status von JavaScript in diesem Zusammenhang zu klären. (»Ist JavaScript ein Webstandard? Wie halte ich mich in Scripten an die Webstandards? Wo wird JavaScript standardisiert?«)

      Aus dieser Sicht ist »JavaScript« eben kein Standard wie W3C-Recommendations HTML, CSS, DOM oder Internet-RFCs, sondern der Name verweist auf eine Leerstelle. Historisch gesehen nahm diese Stelle einmal Netscape JavaScript ein.

      Wenn ich heute über JavaScript rede, meine ich deshalb aber nicht Netscape Client-Side JavaScript 1.3, sondern natürlich diese Leerstelle. Die Trennung mache ich im Artikel bloß auf, um auf den Patchwork-Charakter aufmerksam zu machen und zu vermitteln, wo welche Teiltechnik spezifiziert ist, wo man was nachschlagen kann usw.

      Die praktische Anwendung dieser Erkenntnisse sollte dieses Beispiel sein:
      http://aktuell.de.selfhtml.org/weblog/files/2006-04-javascript-standards.html
      Dort ist einmal aufgeschlüsselt, welche Objekte welcher Provenienz verwendet werden und wie es mit ihrer Spezifizierung und Standardisierung steht.

      Mathias

      1. Hallo molily,

        Wie gesagt, der Artikel geht über »JavaScript und Webstandards«, weil es eine Webstandards-Bewegung gibt und es mir nötig erschien, den Status von JavaScript in diesem Zusammenhang zu klären. (»Ist JavaScript ein Webstandard? Wie halte ich mich in Scripten an die Webstandards? Wo wird JavaScript standardisiert?«)

        Ach so...
        Anfangs habe ich gar nicht verstanden, warum »JavaScript« von Web allein für sich beansprucht wird. Auch in der Wikipedia stand als Definition, dass es eine Web-basierte Programmiersprache sei. Weil ich aber mit JavaScript erst über andere Hostanwendungen richtig zu tun bekam, schien mir das einfach falsch. Klar, die Sprache wurde ursprünglich für einen Browser entwickelt, aber man sagt ja z.B. auch nicht, nur weil Mathematik zuerst in Indien und Arabien entwickelt wurde, dass Mathematik ein indo-arabisches Denksystem sei.

        Aus dieser Sicht ist »JavaScript« eben kein Standard wie W3C-Recommendations HTML, CSS, DOM oder Internet-RFCs, sondern der Name verweist auf eine Leerstelle. Historisch gesehen nahm diese Stelle einmal Netscape JavaScript ein.

        Wenn ich heute über JavaScript rede, meine ich deshalb aber nicht Netscape Client-Side JavaScript 1.3, sondern natürlich diese Leerstelle.

        Verstehe. Inzwischen versuche ich mich damit anzufreunden, die Sprache selbst einfach ECMA-Script zu nennen, auch wenn der Name nicht so eingängig ist. Dann können die Web-Fans man von mir aus »JavaScript« behalten und für's Web standardisieren, wie sie lustig sind :-).

        Die praktische Anwendung dieser Erkenntnisse sollte dieses Beispiel sein:
        http://aktuell.de.selfhtml.org/weblog/files/2006-04-javascript-standards.html
        Dort ist einmal aufgeschlüsselt, welche Objekte welcher Provenienz verwendet werden und wie es mit ihrer Spezifizierung und Standardisierung steht.

        Wow, das hast du nicht weniger als sieben Codebestandteile verschiedener Herkunft ausgemacht. Da ist es wohl wirklich kein Fehler sich um Standardisierung zu bemühen. Ich beneide dich nicht um die Sysiphusarbeit, die du damit hattest bzw. noch hast. Wünsche jedenfalls weiterhin viel Erfolg.

        Gruß, Don P