Was ist die historische Grundlage für die Verwendung von Javascript in der Webprogrammierung?

9

Ich komme aus der wissenschaftlichen Biologie, wo wir auch viel Python verwenden.

Nachdem ich mit der Webentwicklung begonnen habe, habe ich mich immer wieder gefragt, warum JavaScript die primäre clientseitige Sprache im Web ist.

Ist die Vorherrschaft von JavaScript ein historischer Unfall oder etwas anderes? Ich bin auch gespannt, ob es Hürden gibt, Python in clientseitige Skripte zu integrieren.

rd108
quelle
Benötigt dies die Aufmerksamkeit des Moderators basierend auf meta.programmers.stackexchange.com/questions/363/… ?
Rein Henrichs
@Rein - Sie könnten, vote to closewenn Sie der Meinung sind, dass dies nicht zum Thema gehört. Wenn andere genauso denken, folgen entweder sie oder ein Moderator Ihrem Beispiel.
jmort253
@ jmort253 (Vielleicht sollte ich zu Meta wechseln) Es gab keinen Konsens in dem verknüpften Thread und ich bin ambivalent. :(
Rein Henrichs
@Rein - Der Denkprozess in Kommentaren ist in Ordnung (da er als Wegweiser dient, warum oder warum nicht, hat die Community beschlossen, Maßnahmen für einen Beitrag zu ergreifen. Wenn es keine Einigung gibt, tun Sie, was Sie für am besten halten. :) Persönlich denke ich, dass diese historischen Informationen anderen helfen könnten, die Zukunft von JavaScript als Sprache zu verstehen und warum es wichtig ist, diese Sprache zu verstehen und zu übernehmen.
jmort253

Antworten:

16

JavaScript war die erste Skriptsprache, die in einem beliebten Webbrowser verfügbar war, und wurde daher nahezu universell implementiert. Als einzige Programmiersprache, die in allen gängigen Browsern verfügbar ist, blieb keine andere Wahl, als die vorherrschende clientseitige Programmiersprache zu sein.

Internet Explorer hat JavaScript so implementiert, dass steckbare Skript-Engines möglich sind (es wurde mit VBScript und JScript geliefert). Wenn Sie es vorziehen (wie ich), Ihren Code in PerlScript oder PythonScript zu schreiben, können Sie dies, aber alle Ihre Clients mussten diese Skriptsprache installiert haben und IE verwenden. Sie könnten dies für interne Projekte tun, aber es gibt keine Möglichkeit, dass dies jemals im Internet funktionieren würde.

Gabe
quelle
Etwas anderes, das ich interessant fand, waren Projekte zum Schreiben von Python-zu-Javascript-Compilern, z . B. Pyjamas pyjs.org .
rd108
"Pyjamas ist eine RIA-Entwicklungsplattform (Rich Internet Application) für Web und Desktop. Sie enthält einen Python-zu-Javascript-Compiler, ein AJAX-Framework und eine Widget-Set-API. Pyjamas wurde als Python-Port von Google Web Toolkit, dem Java-zu-Javascript-Compiler. Lesen Sie die FAQ und die Liste der Funktionen. "
rd108
Es gibt Unmengen von Javascript-Compilern. CoffeeScript, TypeScript, ClojureScript, LispyScript usw. usw.
Florian Margaine
7

JavaScript wurde ursprünglich von Brendan Eich erstellt. Es wurde erstmals mit der Beta-Version von Netscape Navigator 2.0 im September 1995 als LiveScript ausgeliefert, aber in einer gemeinsamen Ankündigung mit Sun Microsystems im Dezember 1995 in JavaScript umbenannt. Erst später (1996) wurde JavaScript bei Ecma International eingereicht und wurde schließlich das standardisierte ECMAScript.

Die derzeitige Marktbeherrschung ist weitgehend auf die historische Trägheit zurückzuführen.

Quelle: http://en.wikipedia.org/wiki/JavaScript#History

Rein Henrichs
quelle
2

Ich bin mir nicht sicher, aber es ist eine leichte, clientseitige Skriptsprache. Ich denke, seine Ursprünge lagen in frühen Netscape-Browsern (obwohl ich mich irren könnte). Tatsächlich wurde sein Name vor der Veröffentlichung geändert, um das Wort "Java" aufzunehmen, obwohl es nichts mit Java zu tun hatte. Es war eine schnelle Taktik, um zu dieser Zeit an Popularität zu gewinnen.

Michael Giovanni Pumo
quelle
1

Ich bin sicher, es hat viel mit der Geschichte zu tun.

Ich bin mir aber auch sicher, dass Websites nicht in der Lage sein sollen, Programmiersprachen wie Python in meinem Browser mit allen Funktionen auszuführen. Die Auswirkungen auf die Sicherheit würden mich von solchen Websites abhalten (oder ich müsste sehr sicher sein, dass die Browser-Sandbox luftdicht ist).

Martin York
quelle
Das macht keinen Sinn. Die IT muss entscheiden, welche APIs für eine Programmiersprache verfügbar sind. Wenn Python in Browsern ausgeliefert würde, hätte es natürlich Zugriff auf dieselben APIs, über die Javascript jetzt verfügt (wie das DOM), sodass es keine Möglichkeit gibt, Schaden zu verursachen.
Andrea
@Andrea - Sie könnten argumentieren, dass eine Sprache genauso ihre Standardbibliotheken ist wie ihre Syntax und Semantik. Javascript verfügt nicht über eine Standardbibliothek für Datei-E / A, und dies ist aus Sicherheitsgründen beabsichtigt. Python verfügt über Standardbibliotheken für Datei-E / A und für viele andere Dinge, die als Sicherheitsprobleme angesehen werden können. Verbieten Sie diese und wahrscheinlich haben Sie es nicht mehr mit Python zu tun. Vor langer Zeit hatte Python eine Sandbox - ich erinnere mich, dass sie um Version 1.5 herum vorhanden war -, aber sie wurde vom IIRC gestrichen, weil sie nicht genug verwendet wurde und alles andere als luftdicht war.
Steve314
Standardbibliotheken für E / A in Javascript werden geschrieben. Natürlich sind diese im Browser nicht verfügbar. Ich sage nur, wenn Python im Browser implementiert wäre, wären unsichere Bibliotheken nicht verfügbar. Und vermutlich würden Sie sie nicht verpassen, da sie nicht für die Verwendung auf einer Website gedacht sind.
Andrea
-2

"Ist die Vorherrschaft von JavaScript ein historischer Unfall oder etwas anderes?"

Ich persönlich bin der Meinung, dass der Erfolg von JS ebenso eine Frage des Designs ist wie viele andere und es auch weiterhin ablehnen wird, dies zuzugeben, und nicht nur einen Unfall oder nur die Tatsache, dass es das erste Kind auf dem Spielplatz war.

Obwohl Brendan Eich so benannt wurde, dass er Java-Entwickler anspricht und wie die C-basierte Syntax von Java auch Java-Entwickler anspricht, traf er eine der schlimmsten Entscheidungen in der Geschichte des WWW, die hauptsächlich aus dem Schema für die eigentliche Sprachmechanik abgeleitet werden sollte Inspiration, die Java-Entwicklern anscheinend überhaupt nicht gefallen hat (was ich sehr amüsant finde).

JavaScript verwendet eine hochflexible / granulare prototypische Vererbung für OOP, verfügt über Abschlüsse, Typen sind zu 100% dynamisch, Funktionen selbst sind erstklassig, sodass sie wie jedes andere Objekt oder jeder andere Datentyp weitergegeben und in verschiedenen Kontexten und sogar wiederverwendet werden können werden im laufenden Betrieb auf Objekte angewendet, als wären sie von Anfang an als tatsächliche Objektmitglieder deklariert worden. Es ist praktisch schreiend, für ereignisgesteuerte Architekturen verwendet zu werden, die eine Menge proprietären Mülls normalisieren oder hochgradig nichtlineare UI-Probleme behandeln müssen.

Am Ende des Web-Beginns war es die einzige Sprache, die jemals ernsthaft der Aufgabe gewachsen war, Browser durch einen tatsächlichen Browserkrieg zu normalisieren, in dem Netscape und IE absichtlich versuchten, die Dinge anders zu machen, gefolgt von mehr als 10 Jahren Browser Waffenstillstand, in dem der IE die Dinge einfach anders gemacht hat, weil MS faul und in einigen zu Recht dummen wettbewerbswidrigen Praktiken verankert ist, was zu einer Stagnation des Browsers führt, und jetzt eine Welt, in der sich die Browser endlich auf dieselbe allgemeine Spezifikation in Bezug auf HTML einigen. CSS und die DOM-API mit IE sind nur 2-3 Jahre hinter den neuesten Entwicklungen zurück und nicht 10 Jahre, da Google und Mozilla JIT-Compiler aus dem Weg geräumt haben, die die Leistungszahlen des IE so erbärmlich erscheinen ließen. MS wurde schließlich beschämt, ihre verdammten Browser ordnungsgemäß zu modernisieren.IE9 ist das erste Unternehmen, das die DOM-API-Unterstützung tatsächlich auf ein Niveau aktualisiert, das Netscape bereits im Jahr 2000 unterstützt hat.

JS hatte Konkurrenz in Form von Java Applets und Adobe ActionScript for Flash. Das war's auch schon an der Front der ernsthaften Konkurrenten. MS hat versucht, VB zu pushen, ist aber kläglich gescheitert, weil ... nun ... VB. Auch proprietär. Es gab tatsächlich viel mehr Flash-Sites, als die meisten Leute glauben. Mit Suchmaschinen konnte man die dummen Dinge einfach nicht finden. Applets machten ihr eigenes Ding und es war hässlich. Wirklich hässlich. JS war die einzige Sprache, die sich wirklich mit dem Problem befasste, im Kontext mehrerer Browser von Personen zu arbeiten, die sich nicht einig waren, wer die Spezifikationen festlegte, mit denen sie übereinstimmen sollten.

In den letzten Jahren ist JS in einen viel breiteren Anwendungsbereich explodiert. In Kombination mit anderen Webtechnologien ist es darauf ausgerichtet, im Grunde alle anderen Lösungen auf der mobilen Front umzuwerfen, da die + Webtechnologie derzeit wirklich die einzig realistische Wahl ist, wenn Sie wirklich eine App schreiben und sie auf alles anwenden möchten.

Also nein, und ja, ich bin ein großer Fan, aber ich glaube nicht, dass es alle anderen Konkurrenten auf der Client-Seite aus Versehen überfordert hat, genauso wenig wie es jetzt als Unfall angesehen werden könnte, wenn es außerhalb des Browsers explosionsartig populär wird. Vor JS gab es nicht viele schemaähnliche Sprachen, die nicht primär akademisch waren. Dies hat JS einige starke Vorteile verschafft, und die besonderen Bedürfnisse der Kundenseite haben es möglich gemacht, dass diese Vorteile langsam kristallklar werden.

Erik Reppen
quelle
Sie erwähnen das Schema zweimal, ohne jemals zu sagen, wie sich JS auf das Schema bezieht. Sicherlich glauben Sie nicht, dass JS Makros, S-Ausdrücke, Schwanzrekursion, Fortsetzungen oder andere Unterscheidungsmerkmale von Scheme hat - oder?
Gabe
@ Gabe. Überprüfen Sie den 4. Textblock. Verschlüsse, dynamisches Tippen und erstklassige Funktionen sind ziemlich wichtig. Die Tatsache, dass JS eine c-ähnliche Syntax verwendet, verbietet die Verwendung von Schemamakros. Es ist keine Feature-by-Feature-Kopie von Scheme, aber es wird sicherlich davon beeinflusst.
Mike30
Verschlüsse und dynamisches Tippen machen eine Sprache also schemaartig? Bedeutet das, dass C # schemaartig ist? Was ist mit Ruby, Python und Perl? Und warum eher Schema als Lisp oder eine andere ähnliche Sprache?
Gabe
@Gabe Ich bin kein Scheme-Experte, aber in Bezug auf gelegentliches Wikipedia-ing würde ich sagen, dass die Kombination aus lexikalischem Umfang, erstklassigen Funktionen und Abschlüssen die drei sind, die JS dem Scheme viel näher bringen als Java. Ansonsten habe ich nur Brendan Eichs Wort darauf genommen und angenommen, dass ordnungsgemäße erstklassige Funktionen das Hauptmerkmal sind.
Erik Reppen
OK, JS hat also Verschlüsse (was meiner Meinung nach erstklassige Funktionen und lexikalisches Scoping impliziert) und dynamische Typisierung wie Scheme. Bedeutet das, dass C # noch schemaähnlicher ist als JS, da C # Verschlüsse, dynamische Typisierung und eine begrenzte Form von S-Ausdrücken aufweist?
Gabe