¿Cómo se hizo popular JavaScript?

27

En la historia antigua, Brendan Eich tenía un diseño de lenguaje, y en el mundo de hoy, JavaScript es un lenguaje popular implementado y utilizado en muchos lugares diferentes.

¿Qué hizo que el idioma se volviera popular? ¿Era la sintaxis tipo C familiar para los programadores anteriores? ¿Netscape tenía suficiente control del mercado para obligarlo a ser utilizado? ¿O hay alguna razón más profunda por la que JavaScript es popular y otros lenguajes no?

En particular, si tuviera que hacer un lenguaje tan popular como JavaScript, ¿qué condiciones iniciales necesitaría para recrear su crecimiento en popularidad?

Mathnerd314
fuente
2
JavaScript estaba casi muerto (+ - 2005) hasta que Google lo resucitó con los mapas de Google.
Todd Moses
1
@ToddMoses Fui a argumentar, pero algunas investigaciones mostraron que tienes razón: AJAX volvió a convertir a JavaScript en mainstream, inspirado en Gmail (2004) y google maps (2005). Sin embargo (y esto también se relaciona con la pregunta anterior), javascript realmente nunca desapareció: Actionscript (usado en Flash) apareció desde aproximadamente 2000 y es básicamente el mismo lenguaje. Durante los años de guerra de los navegadores, Flash / Actionscript se usaba para las mismas cosas que Javascript / AJAX es la tecnología por el momento. Llevé mis habilidades de Javascript a Actionscript en 2000, y las devolví a Javascript en 2008 :-)
Darren Cook
2
Ajax es importante pero está sobreacreditado, en mi opinión. El semi-cumplimiento generalizado del navegador con DOM API y CSS2 es lo que ayudó a que JS sea una herramienta poderosa en el lado del cliente. Eso comenzó más alrededor del IIRC 2002ish. Una vez que tuvimos las herramientas adecuadas para jugar con el HTML, la implementación rápida de características complejas de la interfaz de usuario fue un juego de pelota completamente nuevo. Sin embargo, no fue hasta alrededor de 2005 cuando todos comenzaron a darse cuenta realmente. También diría que no fue hasta alrededor de 2005 cuando una masa crítica comenzó a comprender que JS es en realidad un lenguaje general bastante rudo en sí mismo.
Erik Reppen

Respuestas:

31

Estaba comentando una respuesta anterior , pero se estaba volviendo grande, así que pensé en darle la vuelta.

Cualquier lenguaje nuevo solo puede tener éxito si aprovecha una frontera emergente en informática.

Ejemplos anteriores:

  • C para Unix
  • Objective-C para iOS
  • Perl y PHP para back-end Web 1.0
  • Python y Ruby para back-end Web 2.0
  • Java para la empresa de back-end habilitada para Internet

Para responder a su pregunta, JavaScript era el idioma de Netscape Navigator cuando ese era el navegador dominante. Específicamente, era el lenguaje para el desarrollo dinámico front-end.

El próximo gran lenguaje tendrá que resolver otra frontera. Todavía parece haber un acaparamiento de tierras en el espacio de desarrollo web de back-end. Además, la informática móvil no está totalmente resuelta, a pesar del dominio actual de Apple. Además, está surgiendo la computación en múltiples núcleos y en la nube, que es algo en lo que muchos lenguajes intentan capitalizar (como lenguajes concurrentes como Erlang y Go, o lenguajes funcionales como Haskell y OCaml).

Los empresarios tienen una expresión similar a "encontrar a alguien en llamas y venderle una manguera de incendios". Entonces, si quieres introducir un nuevo lenguaje, ¿a quién le estás apagando? Cada nueva frontera en computación trae una gran cantidad de dolores de cabeza; así que dale aspirina y serás dorado.

chrisaycock
fuente
44
Casi estoy de acuerdo, pero no puedo entender cómo se hizo tan popular la plataforma .NET.
Tomasz Nurkiewicz
55
@Tomasz Microsoft impulsó a .NET como la nueva plataforma para Windows (que todavía tiene la gran mayoría de las instalaciones de escritorio) y llegó a suspender VB 6.
chrisaycock
1
Ni Perl ni Python realmente deben su popularidad inicial a la web; pretendían ser idiomas para crear rápidamente herramientas para administradores de sistemas o servicios del sistema operativo (respectivamente) y tuvieron un gran éxito en esos dominios antes de ganar aún más tracción con el desarrollo web.
SingleNegationElimination
1
@TokenMacGuy: esos dominios (incluidos CAD / CAE) eran relativamente pequeños hasta que despegó la Web 1.0. Fue entonces cuando los estantes de las librerías comenzaron a desbordarse con libros en estos idiomas.
hotpaw2
2
@ hotpaw2: Perl era extremadamente popular por crear secuencias de comandos en UNIX algunos años antes de que el acceso a Internet en el hogar fuera muy común.
Kevin Cline
38

Es bastante simple: Netscape utilizó un motor de JavaScript en su navegador. Si lo que quería hacer secuencias de comandos en la web, JavaScript fue él . Internet Explorer tenía (y aún tiene) JavaScript y VBScript, pero obviamente si desea trabajar en algo más que solo IE, no tiene más remedio que usar JavaScript.

JavaScript es un gran lenguaje por derecho propio, pero no sería tan popular hoy en día si no fuera por el hecho de que es el único lenguaje que puede usar para escribir HTML.

Dean Harding
fuente
3
Entonces, ¿al aprovechar un software existente (popular) que necesitaba un lenguaje de nivel superior?
Mathnerd314
77
@ Mathnerd314: No es exactamente así. JavaScript (gracias, Sr. CRT: p) nunca estuvo separado del navegador: fue desarrollado por Netscape específicamente para su uso en su navegador, por lo que no es como si hubiera una decisión consciente de "aprovechar" la popularidad de Netscape para hacer el Lengua popular.
Dean Harding
2
@ Mathnerd314 No es tanto el piggybacking, ya que era el único lenguaje real para una nueva frontera de la informática , al igual que C para Unix. Cualquier persona que quisiera un front-end dinámico debía usar JavaScript.
chrisaycock
44
Para recrear el éxito, necesito encontrar una frontera informática completamente nueva y hacer que el nuevo lenguaje sea obligatorio. Ya veo ...
Mathnerd314
2
@ Mathnerd314 Las fronteras emergentes actuales incluyen la informática multinúcleo y en la nube. De hecho, esto es algo que un lenguaje como Erlang podría aprovechar. (Otro ejemplo es el surgimiento de Objective-C debido a la aparición de teléfonos inteligentes, ya que Apple es un jugador tan importante en ese espacio)
Chrisaycock
7

Voy a agregar una actualización a esto porque creo que la aparición de JS en la web del lado del cliente ha sido mal entendida en algunos puntos clave a lo largo de los años.

No fue Ajax

No digo que Ajax no fuera importante para la evolución de la comprensión de JS como lenguaje, pero la lucha por el dominio del navegador del lado del cliente terminó mucho antes de que se acuñara el término Ajax.

No fue porque era el único juego en la ciudad.

Había Java Applets, Flash y VBScript. Escuché que incluso había otras opciones de secuencias de comandos en los años 90 (pero requerían los complementos IIRC). Java es muy popular pero los applets fueron un fracaso total. Eran feos y, a menudo, de queso suizo de seguridad, pero lo que es más importante, no creo que Java sea una buena opción por las razones que abordaré más adelante. Flash fue muy popular y tuvo una sólida posición durante varios años, pero incluso cuando Flash finalmente tenía opciones de SEO, no se usaban normalmente, lo que hacía que los sitios exclusivamente Flash fueran muy difíciles de descubrir. Incluso ahora, la mayoría de nosotros actualizamos Flash regularmente para poder ver películas, pero ese es el verdadero talón de Aquiles. La tecnología patentada en los navegadores es molesta. Y, por supuesto, VB, que solo funcionaría con IE, así que no.

El lugar correcto en el momento correcto es relevante pero no la respuesta completa

Sí, sin la ola web para montar, es posible que nunca hayamos visto JavaScript o un lenguaje de uso popular como lo hicimos tan pronto como lo hicimos. O tal vez tendríamos ...

Terminó siendo la herramienta perfecta para el dominio del problema

Yo diría que alrededor del año 2000 tuvimos los siguientes problemas:

  • IE y Netscape solo habían acordado comenzar a jugar bien atendiendo a los mismos estándares DOM API y CSS y hemos tenido que lidiar con una tonelada de problemas heredados de navegador cruzado JS desde entonces, que apenas comienzan a ser manejables. sin la ayuda de herramientas de normalización JS DOM como jQuery post IE8
  • Hubo toda una nueva generación de desarrolladores / diseñadores web que no eran todos necesariamente pesos pesados ​​como programadores que buscaban mejorar su juego después de .com-bubble-burst cuando dejaron de darte un salario decente por presentarte en la puerta sin nada más. que la alfabetización básica en HTML y algunas habilidades de Photoshop.
  • Había un nuevo chico CSS en la ciudad que ofrecía posibilidades intrigantes para lo que finalmente se llamaría DHTML, (más apropiadamente) DOM Scripting, (ahora de manera inapropiada) HTML5 (zomghtml5!).

Así que necesitábamos un lenguaje que fuera profundo, que ofreciera la capacidad de estructurar y diseñar una aplicación más avanzada con componentes portátiles / reutilizables en el lado del cliente pero también accesible para personas que no sabían mucho y solo necesitaban cosas aparecer / reaparecer al hacer clic en un botón.

Además, MS es la bestia desgarbadora / incompetente y / o dominada a través de prácticas anticompetitivas que a veces son, no pudo realmente tocar su implementación de API DOM no compatible durante una buena década sólida, aunque lograron agregue algo ocasional como el objeto XHR original y querySelectors en IE8.

Lo importante a tener en cuenta es que alrededor de 2005 habíamos logrado enterrar por completo la complejidad involucrada en el manejo de problemas entre navegadores que ya no era realmente un problema grave en el frente de JavaScript. La incapacidad de soportar CSS2 correctamente durante el tiempo que lo hicieron causó mucho más dolor. Para tener una idea del gran volumen y la profundidad de los problemas, recomiendo visitar quirksmode.org . No creo que esta sea una hazaña que podría haberse logrado con tanta facilidad y en tantas bibliotecas en Java, ciertamente no en VB y definitivamente no con ninguna estrategia de complemento cuyo objetivo es evitar todo el problema convirtiéndose en un tema completamente nuevo tipo de molestia

Otras características del lenguaje que tienen mucho sentido para la interfaz de usuario:

  • Funciones de primera clase: en mi experiencia, nada se presta mejor para el procesamiento asíncrono y los paradigmas basados ​​en eventos que un lenguaje que haga que sus funciones sean de primera clase. Ambas preocupaciones se abordan regularmente en el trabajo de IU.

  • Tipos dinámicos: La conversión y verificación de tipos es una necesidad muy rara en JavaScript que ayudó a mantener el código conciso y ajustado. Las preocupaciones sobre la interfaz de usuario pueden volverse complejas y desordenadas muy rápidamente. Mantener el código estricto y ser absolutamente claro sobre el flujo de datos es fundamental para comprenderlo y modificarlo / mantenerlo.

  • No es proteccionista: durante muchos años, alguien ha estado predicando que debe protegerse de sus propios errores y de las cosas tontas que el otro tipo podría hacer con su código al hacer construcciones de código altamente rígidas e inflexibles e imposibles de entrometerse con la intención original que era escrito con y mucha gente ha estado escuchando. No diré que siempre están equivocados (podría pensarlo), pero diré que es el enfoque incorrecto para la interfaz de usuario web y creo que es un fenómeno que hemos estado produciendo, manteniendo y modificando clientes. Las interfaces gráficas de usuario secundarias a un ritmo mucho más rápido y con mayor facilidad que dicho trabajo se realizaban en lenguajes más restrictivos en el pasado. Ser capaz de cambiar las cosas sobre la marcha rápida y fácilmente hace que sea mucho más fácil tener esquemas de arquitectura dinámica / fluida que no requieran cantidades monumentales de indirección y abstracción, lo que en última instancia hace que sea más fácil ver qué demonios está sucediendo en su código y adelantar o manejar excepciones mucho más limpiamente. Es más fácil de mantener simplemente a través de la pura virtud de hacer posible ser más directo en todo lo que haces y con mucho menos código del que tomaría dada la otra filosofía.

¿Cómo se hizo popular JS? Ha demostrado ser una excelente herramienta para el trabajo una y otra vez. No es el lenguaje con el que estamos "atrapados" Es el lenguaje que puede haber inspirado una gran evolución en los idiomas populares en general. Y por eso, puedes agradecer a Brendan Eich y a todos los contemporáneos que ayudaron a poner la idea en su cabeza, por considerar a Scheme como una inspiración de diseño adecuada para el problema en cuestión más de lo que le gustaba Java.

Erik Reppen
fuente
2

Una táctica utilizada inicialmente fue el nombre: "JavaScript" estaba destinado a aprovechar la popularidad de Java, que había estado en aumento durante un tiempo.

Grant Palin
fuente
1

¿No ha sido el único lenguaje de script del lado del cliente para varios navegadores? Su popularidad parece haber crecido al ritmo de la web, lo cual tiene sentido.

Ben Hughes
fuente
1

Momento correcto, lugar correcto. Y no fue del todo malo.

Es la misma razón por la que Facebook está ganando.

Yevgeniy Brikman
fuente
0

En mi opinión, Javascript es popular porque es compatible.

Primero, es el único lenguaje para Netscape e IE en su momento. Después de que se establezca una "comunidad javascript" y se estabilice, nadie podría pensar en "otro bien" que requiera construir desde cero. Simplemente contribuyen a hacerlo cada vez mejor.

Si desea crear un nuevo lenguaje popular, lo primero que pienso es que debe determinar quién usa ese idioma . Los primeros clientes siempre son difíciles de conseguir, y debe hacer que su lenguaje sea superior al javascript de una forma u otra. Quizás incluso en un campo restringido / comunidad restringida de programadores, por ejemplo, "un motor javascript mejor / más rápido para iPhone móvil" puede ser una buena opción.

Además, su idioma debe ser fácil de usar y personalizar por comunidad, porque es la comunidad la que determina qué idioma podría sobrevivir.

Hoàng Long
fuente
Lo importante es cómo hacerlo popular "suficiente". Entonces funcionará solo.
Hoàng Long
0

No me vas a creer, pero Flash y (en algunos pequeños applets de Java antes) hicieron una gran contribución en el crecimiento de la popularidad de JavaScript y en la evolución del lenguaje en sí.

Cuando apareció Flash, fue la primera evidencia de que vale la pena pensar en las aplicaciones web.

En cierto sentido, la competencia con los complementos, los intentos constantes de mostrar: mire lo que podemos hacer sin los complementos, convirtió a JavaScript en un lenguaje con un espectro más amplio de aplicaciones y, por lo tanto, lo hizo popular.

shabunc
fuente
-1

Por mi parte, creo que la gente pensó que Javascript tenía que hacer algo con Java.

(Como hoy en día todo comienza con una "i")

La estrategia de marketing / publicidad juega un papel importante.

Simon
fuente
-1

Realmente creo que tiene que ver con su C-como sintaxis . Según Wikipedia, Javascript apareció en el '95. En ese momento, C estaba en su punto más alto y Java era el lenguaje próximo. Creo que la sintaxis fue realmente atractiva (para ese momento) y su asociación de nombres con el próximo gran lenguaje, Java , le dio una ventaja.

Permitió un cruce fácil en ese momento para que los programadores de C se adaptaran a un lenguaje dinámico.

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

Índice Tiobe

Si tuviera que recrear el éxito de Javascript , vería los problemas que afectan a los programadores modernos y les daría una solución con una sintaxis familiar.

La programación paralela de la OMI es el próximo gran problema que enfrentan los programadores. Creo que los lenguajes funcionales realmente hacen un gran trabajo para superar ese obstáculo. Si tuviera que crear el próximo Javascript , crearía un lenguaje funcional con una plataforma común . Además, creo que debería ser lo suficientemente flexible como para ser un lenguaje envolvente pero lo suficientemente potente como para ser un lenguaje estáticamente tipado, con un gran marco.

Aunque no todos pueden estar de acuerdo, en esas condiciones, creo que F # puede tener muchos méritos en el futuro.

snmcdonald
fuente
2
@Señor. CRT: Anders Hejlsberg, el creador de Turbo Pascal, tuvo una gran influencia en C # y el marco .NET. Así que no habría descontado a Pascal si Netscape hubiera adoptado a Pascal. Todavía hay toneladas de desarrolladores de Delphi que lo juran.
snmcdonald
3
Lo sentimos, eliminé mi comentario antes de que respondiera: de todos modos, fue un sarcasmo y, por lo tanto, no fue particularmente útil. Debo decir que, si bien es útil para lograr que los programadores existentes "sumerjan los dedos de los pies en el agua", una sintaxis tipo C no es garantía de éxito. Considere el Objetivo C: más de una década en relativa oscuridad, luego Apple compra NeXT y lo convierte en su base para todo tipo de pequeños y divertidos gadgets ...
Shog9
1
@Señor. CRT. Comentario muy interesante La sintaxis definitivamente no es el todo, aunque creo que es importante para los programadores existentes. Objective-C no me parece muy C-like. Quizás es por eso que no despegó inicialmente. Sin embargo, podría ser la asociación con la próxima tecnología lo que la hace relevante, como Java en los años 90. En cuanto a la sintaxis, creo que la próxima generación de programadores se está sintiendo más cómoda con lenguajes funcionales y dinámicos.
snmcdonald
@Señor. CRT: O Python con Google, etc. Diría que la "popularidad" (como en general) generalmente tiene poco que ver con el lenguaje en (después de todo, hay muchos idiomas fantásticos que no son muy populares [por ejemplo, Haskell , Erlang] y otros que son feos y extremadamente populares [por ejemplo, PHP])
Dean Harding
@Dean Harding: comentario interesante porque realmente disfruto PHP. Aprecio que los nombres de las funciones de la biblioteca tengan una similitud con la Biblioteca C y, sin embargo, adopten una sintaxis similar a Perl, sin ocultarla con la pluralidad sigil. Al mismo tiempo, entiendo las críticas, ya que veo la implementación de OO en Perl y PHP como un pensamiento de último minuto. PHP tiene una sintaxis similar a C y Perl (tal vez más lenguajes) que es familiar para muchos programadores y, sin embargo, está diseñada para un dominio muy popular. Realmente creo que es una combinación de sintaxis y tecnología popular.
snmcdonald
-1

JavaScript se hizo popular debido a AJAX y buenas herramientas de inspección como Firebug. Por supuesto, el hecho de que funcionó en todos los principales navegadores y era la única forma de hacer DHTML ayudó.

Básicamente para que el lenguaje más feo sea exitoso, tiene que ser capaz de hacer algo realmente útil que ningún otro idioma pueda hacer. También debe proporcionar herramientas que permitan a los programadores realmente sentir que controlan lo que hace el lenguaje, que no era el caso de JavaScript antes de Firebug.

Kamil Szot
fuente
2
JavaScript obtuvo una nueva oportunidad de vida con AJAX (y posiblemente Firebug, aunque creo que es secundario), pero había ganado la guerra antes de que comenzara (y hace casi quince años) porque no había competencia en su espacio.
wyatt
-4

Javascript es popular como un truco para superar las deficiencias del marcado HTML para hacer que las páginas web aparezcan como los diseñadores quieren que aparezcan. Sin Javascript, todas las páginas web se verían así : HTTP 1.1 . Apenas un paso adelante del protocolo Gopher .

ja72
fuente
2
Protocolo! = Diseño! = Secuencias de comandos. Puedes crear páginas bastante hermosas sin Javascript usando HTTP 1.0.
deceze