JavaScript (lenguaje de programación): ¿Por qué hay tantas variantes de JavaScript?

Hay una gran cantidad de variantes de Javascript por la misma razón que hay una gran cantidad de períodos de lenguajes de programación. Los diferentes idiomas están diseñados con diferentes características y necesidades en mente. Hay un montón de diferentes conjuntos de prioridades y un montón de cosas diferentes que puedes hacer con la programación.

Por ejemplo, LISP es, para todos los aspectos prácticos, un lenguaje principalmente para IA. Fortran, Matlab y R están diseñados para matemáticas complejas de alto nivel. ADA es para confiabilidad “y falló”. COBOL es para informes y matemáticas de negocios. PHP es para procedimientos para la generación de páginas. Haskell es para inclinarse ante las personas de matemáticas. Java era para la portabilidad. Finalmente, los lenguajes más exitosos están diseñados con algún tipo de objetivo en mente. Los derivados de Javascript no son diferentes a este respecto.

La razón por la que hay tantas variantes de Javascript específicamente es porque Javascript es el único idioma que admite cada navegador, por lo que todos los lenguajes de secuencias de comandos web deben ser traducibles a Javascript. Pero incluso entonces, hay mucho espacio para el desarrollo.

Todos los idiomas que enumera se encuentran dentro de estas dos reglas.

Por ejemplo, Coffeescript fue creado para personas que prefieren una gramática similar a la pitón en lugar de una gramática similar a la de C. En última instancia, es una cuestión de preferencia personal cuáles prefiere.

El sistema de tipeo de Javascript es más flexible que el butthole de Richard Simmon. Muchos fanáticos de Javascript, incluyéndome a mí, consideran esto una característica. Esto sucede por varias razones, como la simplicidad o la ideología. Algunas personas consideran que este aspecto del diseño es un defecto en lugar de una característica. La mecanografía fue una reacción hecha específicamente por y para el segundo campamento.

ClojureScript básicamente existe porque hay personas que son fanáticos de LISP que también son fanáticos de la programación funcional, y a veces necesitan su código para ejecutarse en un navegador. ScalaScript fue similar, pero para los fanáticos de Scala en lugar de los fanáticos de LISP.

Si bien me gusta más el Javascript de vainilla, admito y acepto que no es el mejor idioma para todo, y que a veces otro idioma es mejor para ciertas tareas. En definitiva, es una cuestión de especialización de herramientas. Sí, simplemente puede usar un martillo estándar para todo, pero las herramientas especializadas también pueden ser buenas: como mazos de goma, o tener diferentes pesos, o tener un removedor de clavos. Los lenguajes de programación son herramientas. Se aplican los mismos principios.

No son “variantes de JavaScript”, son (en su mayoría) lenguajes completamente separados que simplemente se compilan a JavaScript (algunas personas dicen “transpilar”, donde la idea es que con “compilar”, un lenguaje de alto nivel se traduce a un lenguaje de bajo nivel, mientras que aquí es de alto nivel a alto nivel, pero esto es principalmente una distinción irrelevante).

Acerca de por qué las personas no solo usan JavaScript simple, podría hacer la misma pregunta sobre por qué simplemente no escribimos todo en el código de la máquina: ¿por qué inventar ensamblador, C, JavaScript, si solo puede ingresar códigos hexadecimales para las instrucciones de la CPU?

Por ejemplo, si desea macros de estilo Lisp, no obtendrá eso de JS; podrías usar SweetJS, o incluso hackear algo de Esprima y Escodegen, pero ¿por qué no usar ClojureScript, que no solo te proporciona macros de estilo Lisp, sino un Lisp de estilo Lisp? O si desea un lenguaje estático, para un cálculo numérico rápido, ¿por qué no usar C ++?

En última instancia, diferentes personas, en diferentes situaciones, quieren cosas diferentes. ¡Y eso está bien! Nadie te está haciendo usar esos idiomas; pero están ahí si los necesitas.

Aquí hay un video de Brendan Eich, el creador de JavaScript:

Sobre cómo funciona esto:

Esas no son realmente “variantes”. Esos son lenguajes que se trasladan a JavaScript. (TypeScript es una excepción porque este lenguaje es un superconjunto estricto de JavaScript).

¿Por qué las personas usan idiomas transpilados? Para entender por qué, lea esto: JavaScript es un lenguaje de programación disfuncional.

Afortunadamente, hay muchos para elegir: The Super Surrogates of JavaScript.

Dos razones: grandes sistemas y tiempo.

En primer lugar, JavaScript nunca fue diseñado para construir aplicaciones grandes. Cuando se introdujo por primera vez, la idea era habilitar la interactividad básica de la página web, hacer algunos cálculos del lado del cliente, y eso es todo. No creo que nadie haya previsto que los navegadores se convertirían en uno de, si no el mecanismo principal, para entregar aplicaciones completas.

Por lo tanto, JavaScript carece de las características necesarias para grandes aplicaciones: seguridad de tipo, aislamiento, encapsulación. Puedes hackear algunos de ellos juntos usando cierres, y he encontrado algunas formas de hackear otros, pero el lenguaje luchará contra ti todo el tiempo.

TypeScript, especialmente, fue diseñado para permitir la construcción de aplicaciones grandes al proporcionar una superposición sobre JavaScript que agrega características diseñadas para ayudar a los desarrolladores a construir sistemas grandes.

Segunda vez. El tiempo había pasado y la barra mínima para los lenguajes de programación había subido. Pero JavaScript no evolucionó tan rápido como la comunidad lo necesitaba. Por lo tanto, se introdujeron lenguajes como coffeescript para proporcionar una forma de utilizar construcciones de programación modernas comunes, como la notación lambda.

También se han escrito muchas otras herramientas, por ejemplo, Google escribió un compilador Java -> JavaScript. Muchos de estos han sido intentos de proporcionar a los desarrolladores un lenguaje de programación robusto y marcos para su reutilización.

JavaScript fue el primer lenguaje de programación que aprendí.

La mayoría de los otros programadores no comparten mi experiencia.

Existen varios hábitos y prácticas de programación que las personas adquieren al usar otros lenguajes que son difíciles o imposibles de replicar en JavaScript. Por ejemplo, puede ser difícil para las personas acostumbradas a la herencia basada en clases usar la herencia prototípica de manera intuitiva. Esto está llegando a ES6, pero antes no era parte de JavaScript. Muchas de estas otras variantes y superconjuntos de JavaScript fueron diseñados para hacer que la escritura de código front-end sea más intuitiva para los programadores que están acostumbrados a otros idiomas.

En primer lugar, Javascript es el idioma de la web y no hay otras alternativas.

En segundo lugar, existe una mayoría de programadores de JavaScript. Javascript es el idioma más extraño entre todos y tiene su propia forma de hacer las cosas. Por lo tanto, la mayoría de los programadores que migran desde otros idiomas lo encuentran confuso, y las ‘variantes’ son el resultado de su insatisfacción. Intentan hacerlo similar a otro idioma agregando más características como la escritura estática en Typecript.

Pero detrás de escena, todos se trasladan a JavaScript nativo. Las variantes son solo una capa para ocultar las probabilidades.

Porque JavaScript es el único lenguaje disponible para la programación web.

Debido a que muchas personas quieren seguir usando las mismas prácticas con las que se han sentido más cómodas.

Porque hay muchos proyectos web diferentes con diferentes requisitos.

More Interesting

¿Por qué muchas empresas hacen preguntas generales o incluso secundarias para una posición de front-end?

¿Es efectivo tener un back-end y front-end separados?

¿Cuál es el lenguaje web de back-end más utilizado en Silicon Valley, especialmente por compañías conocidas y nuevas empresas emergentes que están impulsando las cosas?

¿Cuáles son las tecnologías utilizadas por los desarrolladores de back-end?

¿Qué proyecto sugeriría hacer para que un desarrollador de back-end lo practique?

Después de trabajar durante 2 años en la programación front-end, ¿puedo cambiar a programación back-end?

¿Qué tutoriales son mejores para el desarrollo de back-end en Python?

¿Qué significa "back end" en el desarrollo de software?

¿Qué debo hacer para crear un sitio web con back-end y front-end, incluida una base de datos para una tienda en línea?

¿Puedo concentrarme principalmente en la parte de back-end de un proyecto personal y descuidar el front-end si amo la ingeniería de back-end pero odio el front-end?

¿Qué se espera que sepas como desarrollador web de Python de back-end?

¿Es JavaScript el mejor para el back-end?

¿Cuáles son algunos lenguajes de fondo rápidos y modernos para desarrolladores avanzados?

¿Es una decisión correcta lanzar un proyecto antes de que esté completamente completo?

Además de crear una API y su implementación, ¿cuál es el conocimiento más importante que necesita saber para convertirse en un desarrollador de back-end?