Quelle est la base historique de l'utilisation de Javascript dans la programmation Web?

9

Je viens d'un milieu de biologie scientifique où nous utilisons également beaucoup Python.

Maintenant que j'ai commencé à développer le Web, je me suis toujours demandé pourquoi il s'agissait du fait que JavaScript est le principal langage côté client sur le Web.

La prédominance de JavaScript est-elle un accident historique ou autre chose? De plus, je suis curieux de savoir s'il existe des obstacles à l'intégration de Python dans les scripts côté client?

rd108
la source
Est-ce que cela nécessite l'attention du modérateur basé sur meta.programmers.stackexchange.com/questions/363/… ?
Rein Henrichs
@Rein - Vous pourriez le faire vote to closesi vous sentez que c'est hors sujet. Si d'autres ressentent la même chose, soit eux, soit un modérateur, suivront votre exemple.
jmort253
@ jmort253 (Je devrais peut-être passer à la méta) Il n'y a pas eu de consensus dans le fil lié et je suis ambivalent. :(
Rein Henrichs
@Rein - Le processus de réflexion dans les commentaires est correct (car il sert de panneau indiquant pourquoi ou pourquoi pas, la communauté a décidé d'agir sur un message. S'il n'y a pas d'accord, faites ce que vous pensez être le mieux. :) Personnellement, je pense que ces informations historiques pourraient aider les autres à comprendre l'avenir de JavaScript en tant que langage et pourquoi il est important de comprendre et d'adopter ce langage.
jmort253

Réponses:

16

JavaScript a été le premier langage de script à être mis à disposition dans un navigateur Web populaire, il a donc été implémenté presque universellement. Étant le seul langage de programmation disponible dans tous les navigateurs populaires, il n'y avait pas d'autre choix que d'être le langage de programmation côté client prédominant.

Internet Explorer a implémenté JavaScript d'une manière qui autorise les moteurs de script enfichables (il est venu avec VBScript et JScript). Si vous préférez (comme je l'ai fait) pour écrire votre code en PerlScript ou PythonScript, vous pourriez, mais tous vos clients devaient avoir ce langage de script installé, et ils devaient utiliser IE. Vous pouvez le faire pour des projets internes, mais il est impossible que cela fonctionne sur Internet.

Gabe
la source
Quelque chose d'autre que j'ai trouvé intéressant était des projets pour écrire des compilateurs python vers javascript, par exemple Pyjamas pyjs.org .
rd108
"Pyjamas est une plate-forme de développement RIA (Rich Internet Application) pour le Web et le bureau. Il contient un compilateur Python vers Javascript, un cadre AJAX et une API de l'ensemble de widgets. Les pyjamas ont commencé comme port Python de Google Web Toolkit, le Compilateur Java vers Javascript. Lisez la FAQ et la liste des fonctionnalités. "
rd108
Il existe des tonnes de compilateurs quelque chose en javascript. CoffeeScript, TypeScript, ClojureScript, LispyScript, etc.
Florian Margaine
7

JavaScript a été initialement créé par Brendan Eich. Il a d'abord été livré avec la version bêta de Netscape Navigator 2.0 en septembre 1995 en tant que LiveScript, mais a été renommé JavaScript dans une annonce conjointe avec Sun Microsystems en décembre 1995. Ce n'est que plus tard (en 1996) que JavaScript a été soumis à Ecma International et est finalement devenu ECMAScript standardisé.

Sa domination actuelle sur le marché est largement due à l'inertie historique.

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

Rein Henrichs
la source
2

Pas sûr, mais c'est un langage de script léger côté client. Je pense que ses origines remontent aux premiers navigateurs Netscape (bien que je puisse me tromper). En effet, son nom même a été changé avant sa sortie pour inclure le mot "java" même s'il n'avait rien à voir avec java. C'était une tactique rapide pour gagner en popularité à l'époque.

Michael Giovanni Pumo
la source
1

Je suis sûr que cela a beaucoup à voir avec l'histoire.

Mais je suis également sûr que je ne veux pas que les sites Web puissent exécuter des langages de programmation complets comme python sur mon navigateur. Les implications pour la sécurité m'effrayeraient loin de n'importe quel site comme ça (ou je devrais être très très certain que le sandbox du navigateur était étanche).

Martin York
la source
Ça n'a pas de sens. C'est à l'environnement de décider quelles API sont disponibles pour un langage de programmation. Bien sûr, si Python était expédié dans les navigateurs, il aurait accès aux mêmes API que Javascript a maintenant (comme le DOM), il n'aurait donc aucun moyen de créer des dommages.
Andrea
@Andrea - vous pourriez dire qu'un langage est autant ses bibliothèques standard que sa syntaxe et sa sémantique. Javascript n'a pas de bibliothèque standard pour les E / S de fichiers, et c'est intentionnel, pour des raisons de sécurité. Python dispose de bibliothèques standard pour les E / S de fichiers et pour beaucoup d'autres choses qui pourraient être considérées comme des problèmes de sécurité. Interdisez-les et sans doute vous ne traitez plus avec Python. Il y a longtemps, Python avait un bac à sable - je me souviens qu'il était là autour de la version 1.5 - mais il a été abandonné IIRC parce qu'il n'était pas assez utilisé et était loin d'être étanche à l'air.
Steve314
Des bibliothèques standard d'E / S en Javascript sont en cours d'écriture. Bien sûr, ceux-ci ne sont pas disponibles dans le navigateur. Je dis juste que si Python était implémenté dans le navigateur, les bibliothèques dangereuses ne seraient pas disponibles. Et sans doute, vous ne les manqueriez pas, car ils ne sont pas destinés à être utilisés sur un site Web.
Andrea
-2

"La prédominance de JavaScript est-elle un accident historique ou autre?"

Je suis personnellement d'avis que le succès de JS est une question de design autant que beaucoup l'ont été et continueront à détester l'admettre et pas seulement un accident ou simplement parce qu'il a été le premier enfant sur le terrain de jeu.

Bien que nommé pour attirer les développeurs Java et syntaxé comme la syntaxe basée sur C de Java pour attirer également les développeurs Java, Brendan Eich a pris l'une des décisions les plus graves de l'histoire du www qui devait s'appuyer principalement sur Scheme pour la mécanique du langage réel l'inspiration, ce que les développeurs Java ne semblent pas avoir aimé du tout (ce que je trouve très amusant).

JavaScript utilise un héritage prototypique hautement flexible / granulaire pour la POO, il a des fermetures, les types sont 100% dynamiques, les fonctions elles-mêmes sont de première classe leur permettant d'être transmises comme tout autre objet ou type de données et d'être réutilisées dans différents contextes et même être appliqué à des objets à la volée comme s'ils avaient été déclarés membres d'objet réels depuis le début. Il est pratiquement criant d'être utilisé pour des architectures événementielles qui doivent normaliser une tonne de déchets propriétaires ou gérer des problèmes d'interface utilisateur hautement non linéaires.

À la fin de l'aube du Web, c'est la seule langue qui ait jamais été sérieusement à la hauteur de la tâche de normaliser les navigateurs à travers une véritable guerre des navigateurs où Netscape et IE ont essayé de faire les choses différemment exprès, suivi par plus de 10 ans de navigateur trêve où IE vient de faire les choses différemment parce que MS est paresseux et auto-implanté dans certaines pratiques anticoncurrentielles justement stupides entraînant la stagnation du navigateur, et maintenant un monde où les navigateurs commencent enfin à se mettre d'accord sur les mêmes spécifications générales en ce qui concerne HTML, CSS et l'API DOM avec IE n'ont que 2-3 ans de retard sur les derniers développements plutôt que 10 en raison de la suppression par Google et Mozilla des compilateurs JIT qui rendaient les performances d'IE si pathétiques. MS a finalement été honteux de moderniser correctement ses foutus navigateurs.IE9 est le premier à réellement mettre à niveau le support de l'API DOM vers des niveaux que Netscape supportait en 2000.

JS a fait concurrence sous la forme d'applets Java et d'ActionScript d'Adobe pour Flash. C'est à peu près tout sur le front des candidats sérieux. MS a essayé de pousser VB mais a échoué misérablement parce que ... eh bien ... VB. En outre, propriétaire. Il y avait en fait beaucoup plus de sites Flash que la plupart des gens ne le pensent. Vous ne pouviez tout simplement pas trouver les choses idiotes avec les moteurs de recherche. Les applets ont fait leur propre truc, et c'était moche. Vraiment moche. JS était le seul langage qui a vraiment abordé le problème de travailler dans le contexte de plusieurs navigateurs par des personnes qui n'étaient pas d'accord sur qui définissait les spécifications auxquelles ils étaient censés correspondre.

Ces dernières années, JS a explosé dans un domaine d'application beaucoup plus large. En combinaison avec d'autres technologies Web, il est essentiellement conçu pour renverser toutes les autres solutions sur le front mobile, car la technologie informatique + Web est vraiment le seul choix réaliste en ce moment si vous voulez vraiment écrire une application et la faire fonctionner sur tout.

Alors non, et oui, je suis un grand fan, mais je ne pense pas que cela ait frappé tous les autres concurrents côté client par accident, pas plus qu'il ne devenait explosif en dehors du navigateur pourrait être considéré comme un accident maintenant. Avant JS, il n'y avait pas beaucoup de langues similaires à Scheme qui n'étaient pas principalement académiques. Cela donne à JS des avantages puissants et les besoins uniques du côté client ont permis à ces avantages de devenir progressivement limpides.

Erik Reppen
la source
Vous mentionnez Scheme deux fois sans jamais dire comment JS est lié à Scheme. Vous ne pensez certainement pas que JS a des macros, des expressions S, une récursivité de queue, des continuations ou l'une des autres caractéristiques distinctives de Scheme - avez-vous?
Gabe
@Gabe. Vérifiez le 4e bloc de texte. Les fermetures, le typage dynamique et les fonctions de première classe sont assez importants. Le fait que JS utilise une syntaxe de type c interdira l'utilisation des macros Scheme. Ce n'est pas une copie fonctionnalité par fonctionnalité de Scheme mais il est certainement influencé par cela.
mike30
Les fermetures et la frappe dynamique font donc un langage semblable à un schéma? Est-ce à dire que C # ressemble à Scheme? Qu'en est-il de Ruby, Python et Perl? Et pourquoi Scheme plutôt que Lisp ou tout autre langage similaire?
Gabe
@Gabe Je ne suis pas un expert de Scheme, mais sur wikipedia occasionnel, je dirais que le combo de portée lexicale, de fonctions de première classe et de fermetures sont les trois qui mettent JS beaucoup plus près de Scheme que de Java. Sinon, je prenais simplement la parole de Brendan Eich à ce sujet et je supposais que les fonctions appropriées de première classe étaient la principale différence.
Erik Reppen
OK, JS a donc des fermetures (qui, je crois, impliquent des fonctions de première classe et une portée lexicale) et un typage dynamique, comme Scheme. Étant donné que C # a des fermetures, un typage dynamique et une forme limitée d'expressions S, cela signifie-t-il que C # est encore plus semblable à Scheme que JS?
Gabe