Comment JavaScript est-il devenu populaire?

27

Dans l'histoire ancienne, Brendan Eich avait une conception de langage, et dans le monde d'aujourd'hui, JavaScript est un langage populaire implémenté et utilisé dans de nombreux endroits différents.

Qu'est-ce qui a rendu la langue populaire? Était-ce la syntaxe de type C familière aux programmeurs précédents? Netscape avait-il suffisamment de contrôle sur le marché pour le forcer à être utilisé? Ou y a-t-il une raison plus profonde pour laquelle JavaScript est populaire et que d'autres langues ne le sont pas?

En particulier, si vous deviez rendre un langage aussi populaire que JavaScript, quelles conditions initiales auriez-vous besoin pour recréer sa croissance en popularité?

Mathnerd314
la source
2
JavaScript était presque mort (+ - 2005) jusqu'à ce que Google le ressuscite avec Google maps.
Todd Moses
1
@ToddMoses Je suis allé discuter, mais certaines recherches ont montré que vous aviez raison: AJAX a de nouveau intégré Javascript, inspiré de Gmail (2004) et de google maps (2005). Cependant (et cela concerne également la question ci-dessus), le javascript n'a jamais vraiment disparu: Actionscript (utilisé dans Flash) est apparu vers 2000 et est essentiellement le même langage. Pendant les années de guerre des navigateurs, Flash / Actionscript était utilisé pour les mêmes choses que Javascript / AJAX est la technologie de référence pour le moment. J'ai apporté mes compétences Javascript à Actionscript en 2000, et je les ai ramenées à Javascript en 2008 :-)
Darren Cook
2
Ajax est important mais est sur-crédité, OMI. La semi-conformité généralisée des navigateurs avec l'API DOM et CSS2 a contribué à faire de JS un outil puissant côté client. Cela a commencé davantage vers 2002ish IIRC. Une fois que nous avions les outils appropriés pour nettoyer le HTML, la mise en œuvre rapide de fonctionnalités d'interface utilisateur complexes était un tout nouveau jeu de balle. Ce n'est peut-être pas avant 2005, cependant, que tout le monde a commencé à vraiment s'en rendre compte. Je dirais également que ce n'est qu'en 2005 environ qu'une masse critique commençait à comprendre que JS était en fait un langage général assez dur à cuire à part entière.
Erik Reppen

Réponses:

31

Je commentais une réponse antérieure , mais elle devenait grande, alors j'ai pensé que j'allais tourner la page.

Tout nouveau langage ne peut réussir que s'il capitalise sur une frontière émergente en informatique.

Exemples précédents:

  • C pour Unix
  • Objective-C pour iOS
  • Perl et PHP pour le back-end Web 1.0
  • Python et Ruby pour le back-end Web 2.0
  • Java pour l'entreprise back-end compatible Internet

Pour répondre à votre question, JavaScript était la langue de Netscape Navigator à l'époque où c'était le navigateur dominant. Plus précisément, c'était le langage du développement frontal dynamique.

La prochaine grande langue devra résoudre une autre frontière. Il semble toujours y avoir une prise de terre dans l'espace de développement Web principal. De plus, l'informatique mobile n'est pas totalement résolue, malgré la domination actuelle d'Apple. De plus, il y a l'émergence du multicœur et du cloud computing, ce que de nombreux langages tentent de capitaliser (comme les langages concurrents comme Erlang et Go, ou les langages fonctionnels comme Haskell et OCaml).

Les entrepreneurs ont une expression dans le sens de "trouver quelqu'un en feu et lui vendre un tuyau d'incendie". Donc, si vous voulez introduire une nouvelle langue, à qui mettez-vous le feu? Chaque nouvelle frontière dans l'informatique apporte une multitude de maux de tête; alors fournissez de l'aspirine et vous serez en or.

chrisaycock
la source
4
Je suis presque d'accord mais je n'arrive pas à comprendre comment la plate-forme .NET est devenue si populaire?
Tomasz Nurkiewicz
5
@Tomasz Microsoft a poussé .NET comme la nouvelle plate-forme pour Windows (qui a encore la grande majorité des installations de bureau) et est allé jusqu'à interrompre VB 6.
chrisaycock
1
Ni Perl ni Python ne doivent vraiment leur popularité initiale au Web; ils étaient destinés à être des langages permettant de créer rapidement des outils pour les administrateurs système ou les services de système d'exploitation (respectivement) et ils ont connu un énorme succès dans ces domaines avant de gagner encore plus de traction avec le développement Web.
SingleNegationElimination
1
@TokenMacGuy: Ces domaines (y compris CAD / CAE) étaient relativement petits jusqu'à ce que Web 1.0 décolle. C'est alors que les étagères des librairies ont commencé à déborder de livres sur ces langues.
hotpaw2
2
@ hotpaw2: Perl était extrêmement populaire pour l'écriture de scripts sous UNIX quelques années avant que l'accès à Internet à domicile ne soit du tout courant.
Kevin Cline du
38

C'est assez simple: Netscape a utilisé un moteur JavaScript dans son navigateur. Si vous vouliez faire des scripts sur le web, JavaScript était il . Internet Explorer avait (et a toujours) à la fois JavaScript et VBScript, mais évidemment si vous voulez travailler dans plus que juste IE, vous n'avez pas d'autre choix que d'utiliser JavaScript.

JavaScript est un excellent langage à part entière, mais il serait loin d'être aussi populaire aujourd'hui si ce n'était le seul langage que vous pouvez utiliser pour écrire du code HTML.

Dean Harding
la source
3
Donc, en vous appuyant sur un logiciel existant (populaire) qui avait besoin d'un langage de niveau supérieur?
Mathnerd314
7
@ Mathnerd314: Ce n'est pas tout à fait comme ça. JavaScript (merci, M. CRT: p) n'a jamais été séparé du navigateur: il a été développé par Netscape spécifiquement pour une utilisation dans leur navigateur, donc ce n'est pas comme s'il y avait une décision concise de "se greffer" sur la popularité de Netscape afin de rendre le langue populaire.
Dean Harding
2
@ Mathnerd314 Ce n'est pas tant le ferroutage que le seul vrai langage pour une nouvelle frontière de l'informatique , tout comme C pour Unix. Quiconque souhaitant un frontal dynamique devait utiliser JavaScript.
chrisaycock
4
Afin de recréer le succès, je dois trouver une toute nouvelle frontière informatique et rendre le nouveau langage obligatoire. Je vois ...
Mathnerd314
2
@ Mathnerd314 Les frontières émergentes actuelles incluent le multicœur et le cloud computing. En effet, c'est une chose sur laquelle une langue comme Erlang pourrait capitaliser. (Un autre exemple est la montée d'Objective-C en raison de l'émergence des smartphones, car Apple est un si grand acteur dans cet espace.)
chrisaycock
7

Je vais ajouter une mise à jour car je pense que l'émergence de JS sur le Web côté client a été mal comprise sur quelques points clés au fil des ans.

Ce n'était pas Ajax

Je ne dis pas que Ajax n'était pas important pour l'évolution de la compréhension de JS en tant que langage, mais la lutte pour la domination du navigateur côté client était terminée bien avant que le terme Ajax ne soit inventé.

Ce n'était pas parce que c'était le seul jeu en ville

Il y avait des applets Java, Flash et VBScript. J'ai entendu dire qu'il y avait même d'autres options de script dans les années 90 (mais des plug-ins IIRC requis). Java est extrêmement populaire, mais les applets ont été un échec lamentable. Ils étaient laids et souvent des fromages de sécurité suisses, mais plus important encore, je ne pense pas que Java était un bon choix pour des raisons que j'irai plus tard. Flash était très populaire et avait une forte emprise pendant un certain nombre d'années, mais même lorsque Flash avait finalement des options de référencement, elles n'étaient généralement pas utilisées, ce qui rend les sites exclusivement Flash très difficiles à découvrir. Même maintenant, la plupart d'entre nous mettons régulièrement à jour Flash pour que nous puissions voir des films, mais c'est le vrai talon d'Achille. La technologie propriétaire des navigateurs est agaçante. Et bien sûr VB, qui ne fonctionnerait qu'avec IE, donc non.

Le bon endroit au bon moment est pertinent mais pas la réponse complète

Oui, sans la vague Web pour naviguer, nous n'aurions peut-être jamais vu JavaScript ou un langage populaire comme celui-ci dès que nous l'avons vu. Ou peut-être que nous aurions ...

Il s'est avéré être l'outil parfait pour le domaine problématique

Je dirais que vers 2000, nous avons eu les problèmes suivants:

  • IE et Netscape venaient tout juste d'accepter de commencer à jouer en se conformant aux mêmes normes DOM API et CSS et nous avons dû faire face à une tonne de problèmes hérités de cross-browser JS depuis, qui commencent à peine à devenir gérables sans l'aide des outils de normalisation JS DOM comme jQuery post IE8
  • Il y avait une toute nouvelle génération de développeurs / concepteurs Web qui n'étaient pas nécessairement tous des poids lourds en tant que programmeurs cherchant à améliorer leur jeu après l'éclatement de la bulle après avoir cessé de vous donner un salaire décent pour se présenter à la porte sans rien de plus. que l'alphabétisation HTML de base et certaines compétences Photoshop.
  • Il y avait ce nouveau gamin CSS en ville qui offrait des possibilités intrigantes pour ce qui serait finalement appelé DHTML, (plus adéquatement) DOM Scripting, (maintenant de manière inappropriée) HTML5 (zomghtml5!).

Nous avions donc besoin d'un langage à la fois profond, offrant la possibilité de structurer et d'architecturer une application plus avancée avec des composants portables / réutilisables côté client, mais également accessible aux personnes qui ne connaissaient pas grand-chose et qui avaient juste besoin de choses. pour apparaître / réapparaître lorsque vous avez cliqué sur un bouton.

De plus, MS étant la bête maladroite / incompétente et / ou dominante par le biais de pratiques anti-concurrentielles qu'ils schématisent parfois, n'a pas vraiment touché à leur implémentation DOM DOM non conforme pendant une bonne décennie, bien qu'ils aient réussi à ajoutez la chose occasionnelle comme l'objet XHR d'origine et querySelectors dans IE8.

La chose importante à noter est que vers 2005, nous avions réussi à enterrer si complètement la complexité impliquée dans la gestion des problèmes inter-navigateurs que ce n'était plus vraiment un problème sérieux sur le front de JavaScript. L'incapacité à prendre correctement en charge CSS2 aussi longtemps que cela a causé beaucoup plus de douleur. Pour avoir une idée du volume et de la profondeur des problèmes, je recommande de consulter quirksmode.org . Je ne pense pas que ce soit un exploit qui aurait pu être réalisé aussi facilement et dans autant de bibliothèques en Java, certainement pas en VB et certainement pas avec une stratégie de plug-in dont le but est de contourner tout le problème en devenant un tout nouveau sorte de nuisance.

Autres fonctionnalités linguistiques qui font beaucoup de sens pour l'interface utilisateur:

  • Fonctions de première classe: D'après mon expérience, rien ne se prête mieux au traitement asynchrone et aux paradigmes événementiels qu'un langage qui rend ses fonctions de première classe. Ces deux préoccupations sont régulièrement abordées dans les travaux sur l'assurance-chômage.

  • Types dynamiques: la conversion et la vérification de type sont un besoin très rare en JavaScript, ce qui a aidé à garder le code concis et léger. Les problèmes d'interface utilisateur peuvent devenir complexes et désordonnés très rapidement. Garder le code serré et être absolument clair sur le flux de données est essentiel pour le comprendre et le modifier / le maintenir.

  • Ce n'est pas protectionniste: pendant de nombreuses années, quelqu'un a prêché que vous devez vous protéger de vos propres erreurs et des choses stupides que l'autre gars pourrait faire avec votre code en rendant les constructions de code très rigides et inflexibles et impossibles à se mêler de l'intention initiale qu'il était. écrit avec et beaucoup de gens ont écouté. Je ne dirai pas qu'ils ont toujours tort (pourrait le penser), mais je dirai que c'est la mauvaise approche de l'interface utilisateur Web et je crois que c'est quelque chose d'un phénomène que nous avons lancé, maintenu et modifié par le client- les interfaces graphiques secondaires à un rythme beaucoup plus rapide et avec une plus grande facilité que ce travail était généralement accompli dans des langages plus restrictifs dans le passé. Pouvoir changer les choses rapidement et facilement rend beaucoup plus facile d'avoir des schémas d'architecture dynamiques / fluides qui ne nécessitent pas de quantités monumentales d'indirection et d'abstraction, ce qui rend finalement plus facile de voir ce qui se passe dans votre code et anticiper ou gérer les exceptions beaucoup plus proprement. Il est plus facile à maintenir simplement grâce à la simple possibilité d'être plus direct dans tout ce que vous faites et avec beaucoup moins de code qu'il n'en faudrait compte tenu de l'autre philosophie.

Comment JS est-il devenu populaire? Il s'est avéré être un excellent outil pour le travail à maintes reprises. Ce n'est pas la langue avec laquelle nous sommes «coincés». C'est la langue qui a peut-être inspiré beaucoup d'évolution dans les langues populaires en général. Et pour cela, vous pouvez remercier Brendan Eich et tous les contemporains qui ont aidé à mettre l'idée dans sa tête, pour avoir aimé Scheme comme une inspiration de conception adaptée au problème actuel plus qu'il n'aimait Java.

Erik Reppen
la source
2

L'une des tactiques utilisées au départ était le nom - "JavaScript" était destiné à tirer parti de la popularité de Java, qui avait ensuite augmenté pendant un certain temps.

Grant Palin
la source
1

N'est-ce pas le seul langage de script côté client multi-navigateur? Sa popularité semble avoir évolué au même rythme que celle du Web, ce qui est logique.

Ben Hughes
la source
1

Au bon moment, au bon endroit. Et ça n'a pas été complètement nul.

C'est la même raison pour laquelle Facebook gagne.

Yevgeniy Brikman
la source
0

À mon avis, Javascript est populaire car il est bien pris en charge.

Tout d'abord, c'est le seul langage pour Netscape et IE en son temps. Une fois qu'une "communauté javascript" est établie et est devenue stable, personne ne pourrait jamais penser à "un autre bien" qui nécessite de construire à partir de rayures. Ils contribuent simplement à le rendre de mieux en mieux.

Si vous voulez construire une nouvelle langue populaire, la première chose à laquelle je pense est que vous devez déterminer qui utilise cette langue . Les premiers clients sont toujours difficiles à obtenir, et vous devez rendre votre langue supérieure au javascript d'une manière ou d'une autre. Peut-être même dans un domaine restreint / une communauté restreinte de programmeurs, par exemple, "un moteur javascript meilleur / plus rapide pour iPhone mobile" peut être un bon choix.

De plus, votre langue doit être facile à utiliser et à personnaliser par communauté, car c'est la communauté qui détermine quelle langue pourrait survivre.

Hoàng Long
la source
L'important est de savoir comment le rendre «assez» populaire. Ensuite, cela fonctionnera lui-même.
Hoàng Long
0

Tu ne vas pas me croire, mais le flash et (dans un peu les applets java plus tôt) ont fait une énorme contribution à la croissance de la popularité de javascript et à l'évolution du langage lui-même.

Lorsque le flash est apparu, c'était la première preuve que les applications Web valaient la peine d'être réfléchies.

Dans un certain sens, la concurrence avec les plugins, les tentatives constantes de montrer - regardez ce que nous pouvons faire sans plugins a fait du javascript un langage avec un plus large éventail d'applications, et, par conséquent, l'a rendu populaire.

shabunc
la source
-1

Pour ma part, les gens pensaient que Javascript devait faire quelque chose avec Java.

(Comme de nos jours, tout commence par un "i")

La stratégie de marketing / publicité joue un rôle important.

Simon
la source
-1

Je pense vraiment que cela a à voir avec son C-comme la syntaxe . Selon Wikipedia, Javascript est apparu en 1995. A cette époque, C était à un niveau record et Java était le langage à venir. Je pense que la syntaxe était vraiment attrayante (pour l'époque) et son association de nom avec le prochain grand langage, Java , lui a donné un avantage.

Il permettait à ce moment-là aux programmeurs C de s'adapter facilement à un langage dynamique.

Programming Language    Dec 2010    Dec 2005    Dec 1995        Dec 1985
Java                    1           1           -               -
C                       2           2           1               1

Indice Tiobe

Si je devais recréer le succès de Javascript , j'examinerais les problèmes qui tourmentent les programmeurs modernes et je leur donnerais une solution avec une syntaxe familière.

La programmation parallèle de l'OMI est le prochain gros problème auquel les programmeurs sont confrontés. Je pense que les langages fonctionnels font vraiment un excellent travail pour surmonter cet obstacle. Si je devais créer le prochain Javascript, je créerais un langage fonctionnel avec une plate-forme commune . De plus, je pense qu'il devrait être suffisamment flexible pour être un langage scirpting mais suffisamment puissant pour être un langage typé statiquement, avec un excellent cadre.

Bien que tout le monde ne soit pas d'accord, dans ces conditions, je pense que F # pourrait avoir beaucoup de mérite à l'avenir.

snmcdonald
la source
2
@M. CRT: Anders Hejlsberg, le créateur de Turbo Pascal, a eu une grande influence sur C # et le framework .NET. Je n'aurais donc pas réduit Pascal si Netscape avait adopté Pascal. Il y a encore des tonnes de développeurs Delphi qui ne jurent que par cela.
snmcdonald
3
Désolé, j'ai supprimé mon commentaire avant de répondre - c'était de toute façon un sarcasme, et donc pas particulièrement utile. Je dois dire que, bien que certainement utile pour amener les programmeurs existants à "tremper leurs orteils dans l'eau", une syntaxe de type C n'est guère une garantie de succès. Considérez Objective-C: plus d'une décennie dans une obscurité relative, Apple achète NeXT et en fait la base de toutes sortes de petits gadgets amusants ...
Shog9
1
@M. CRT. Commentaire très intéressant. La syntaxe n'est certainement pas la clé du succès, bien que je pense qu'elle soit importante pour les programmeurs existants. Objective-C ne me semble pas très semblable à C. C'est peut-être pour cela qu'il n'a pas décollé au départ. Pourtant, c'est peut-être l'association avec la technologie émergente qui la rend pertinente, comme Java l'était dans les années 90. En ce qui concerne la syntaxe, je pense que la prochaine génération de programmeurs devient plus à l'aise avec les langages fonctionnels et dynamiques.
snmcdonald
@M. CRT: Ou Python avec Google, etc ... Je dirais que la "popularité" (comme dans, répandue) a généralement peu à voir avec la langue elle-même (après tout, il existe de nombreuses langues fantastiques qui ne sont pas très populaires [par exemple Haskell , Erlang] et d'autres qui sont laids et extrêmement populaires [par exemple PHP])
Dean Harding
@Dean Harding: Commentaire intéressant car j'aime vraiment PHP. J'apprécie que les noms des fonctions de bibliothèque aient une similitude avec la C-Library et adoptent pourtant une syntaxe semblable à Perl, sans la masquer avec la pluralité de sigils. En même temps, je comprends la critique car je vois l'implémentation d'OO en Perl et PHP comme une pensée de dernière minute. PHP a une syntaxe similaire à C et Perl (peut-être plus de langages) qui est familier à beaucoup de programmeurs et pourtant est conçu pour un domaine très populaire. Je pense vraiment que c'est une combinaison de syntaxe et de technologie populaire.
snmcdonald
-1

JavaScript est devenu populaire grâce à AJAX et à de bons outils d'inspection tels que Firebug. Bien sûr, le fait qu'il fonctionnait sur tous les principaux navigateurs et n'était que le moyen de faire DHTML a aidé.

Fondamentalement, pour que le langage le plus laid soit réussi, il doit être capable de faire quelque chose de vraiment utile qu'aucune autre langue ne peut faire. Vous devez également fournir des outils qui permettent aux programmeurs de vraiment sentir qu'ils contrôlent le langage, ce qui n'était pas le cas pour javascript avant le firebug.

Kamil Szot
la source
2
JavaScript a pris un nouveau souffle avec AJAX (et sans doute Firebug, bien que je pense que ce soit secondaire), mais il avait gagné la guerre avant de commencer (et il y a près de quinze ans) parce qu'il n'y avait pas de concurrence dans son espace.
wyatt
-4

Javascript est populaire comme hack pour surmonter les lacunes du balisage HTML pour faire apparaître les pages Web comme les concepteurs le souhaitent. Sans Javascript, toutes les pages Web ressembleraient à ceci - HTTP 1.1 . À peine un pas en avant par rapport au protocole Gopher .

ja72
la source
2
Protocole! = Design! = Scripting. Vous pouvez créer de très belles pages sans Javascript en utilisant HTTP 1.0.
déceler