¿Se justifica todo el odio que muchos programadores tienen para JavaScript?

La principal desventaja de JavaScript es que carece de los mecanismos de seguridad incorporados de otros lenguajes más robustos, por ejemplo, verificación de tipos, interfaces explícitas, encapsulación.

Alguien lo suficientemente familiarizado con el lenguaje a veces puede solucionar estas debilidades pero a menudo solo de forma limitada o saltando a través de aros con torpeza. Las bibliotecas también pueden ayudar a compensar; sin embargo, no son apropiadamente “JavaScript” pero las soluciones de terceros (aunque sofisticadas) a las deficiencias del idioma nativo. Una evaluación justa de JavaScript en sí mismo debería ignorarlos.

A cambio de esta pérdida de seguridad, JavaScript ofrece mayor flexibilidad y mayor velocidad de desarrollo. Se necesita una gran cantidad de tiempo adicional para definir una interfaz para cada tipo, para deletrear la firma completa de cada método, o para definir una clase completa para solo un pequeño objeto de parámetro o función cuya vida útil termina casi tan pronto como sea posible. comienza Por lo tanto, la fuente de la mayor debilidad de JavaScript es también la fuente de su mayor fortaleza: libera a los desarrolladores de estas restricciones .

Desafortunadamente, en manos de desarrolladores ingenuos o indisciplinados, este aumento de la flexibilidad conduce a la falta de cuidado, a la negligencia y, en última instancia, a una disminución de la flexibilidad y la velocidad de desarrollo a largo plazo . A los subtipos se les dan interfaces inconsistentes, los objetos se parchean misteriosamente de mono, el estado se muta en todas partes y por todos, y muy pronto nadie tiene idea de qué hace qué o para qué lo hacen.

Pero un desarrollador entusiasta mitiga estos riesgos con su propia perspectiva. Él sabe cuándo está tomando libertades excesivas y puede sobrevivir sin que un compilador controle cada uno de sus movimientos. Si ese desarrollador también es disciplinado, entonces se apoya en herramientas de terceros, protege su código con pruebas de unidad y se detiene antes de cometer delitos atroces.

Realmente no lo creo, pero los programadores son personas que se ponen muy nerviosas acerca de cosas como dónde colocar los corchetes o si usar pestañas o espacios. Entonces, es natural que se preocupen por las insuficiencias de Javascript como idioma.

Puedo decir que solía odiar el Javascript, pero jQuery y las herramientas mejoradas para desarrolladores en los navegadores solucionaron mucho de lo que odiaba. Sin embargo, cuando intentas usar Javascript para desarrollar algo complejo, tiene varias “características” que son bastante molestas.

Si crees que la programación orientada a objetos en Perl es un poco torpe, Javascript hace que Perl OO se vea bien pensado.

Las clases anónimas en Java pueden implicar el uso de la referencia “this” que es un poco confusa, pero los cierres y el alcance de Javascript hacen que parezca que no hay problema.

Luego está el horrible negocio de tratar de averiguar cuándo los documentos pesados ​​en Javascript han terminado de cargarse. Y el hecho de que Javascript le permite escribir instrucciones para incluir archivos Javascript mediante la generación de HTML, y hay desarrolladores que hacen eso con múltiples niveles de anidamiento. Chrome está empezando a restringir eso y es de esperar que otros navegadores sigan su ejemplo. Ya que incluso los desarrolladores de Google hacen esto, parece que hay algunas emociones conflictivas que están sucediendo allí.

El problema es que Javascript comenzó, como dice Garry, como una pequeña cosa que le permite hacer un poco de scripting en los navegadores. No creo que la gente realmente anticipara exactamente cuánto scripting sentiríamos la necesidad de hacer en los navegadores. Luego, una vez que se hizo necesario que casi todos los desarrolladores web aprendieran Javascript, la gente comenzó a pensar que podría ser bueno usarlo también para escribir todo tipo de cosas, ya que mucha gente lo sabe.

Además, sus orígenes de peso ligero probablemente le dieron una especie de sensación de “oh, es fácil y simple”, que en realidad es bastante engañosa, porque no es fácil y simple una vez que intentas escribir una cantidad sustancial de código con ella.

No veo por qué Javascript no pasará por un proceso de evolución hasta que se convierta en algo bueno, pero creo que va a llevar mucho tiempo, porque todo se trata de una erupción y no es como si hubiera una sola. Motor de facto estándar para su funcionamiento.

No creo que el odio esté justificado, es solo un lenguaje de programación, después de todo.

Es un mal lenguaje, pero realmente el problema es que es la única opción. Si pudieras programar para el navegador en C #, a nadie le importaría Javascript, y no atraería la burla que recibe ahora, simplemente porque a nadie le importaría.

Creo que a medida que Javascript se mueve en el espacio del servidor, para mí, deja un mal sabor de boca porque la razón principal por la que se ha hecho popular en el servidor es porque la gente está familiarizada con él en la parte frontal.

¡Esa no es una buena razón para elegir un idioma!

Ningún buen programador tiene problemas para aprender un nuevo lenguaje.

Además, me parece desagradable el entorpecimiento , la arquitectura de un solo hilo, cosas así. Al igual que estamos obteniendo abundantes núcleos en nuestras computadoras, estamos obteniendo tiempos de ejecución de subprocesos simples solo porque algunos principiantes tienen miedo de aprender un nuevo idioma.

No odio Javascript, pero no me gusta el estado de la industria que ha permitido que Javascript sea un lenguaje de uso común. Simplemente seguimos cometiendo error tras error con la web, y combinando ideas de mierda sobre ideas de mierda. HTML es basura, CSS es peor, y Javascript es realmente la guinda del pastel.

Siento que con la web, hemos cavado un gran agujero y, en lugar de rellenarlo, seguimos cavando y fingimos que estamos innovando, cuando en realidad estamos empeorando las cosas.

Javascript es una especie de víctima en esto, en realidad solo se suponía que era un pequeño lenguaje de scripts, hecho en una semana, para resolver un problema en ese momento. Nadie pensó que lo usaríamos para proyectos adecuados.

No es que Javascript sea malo (aunque lo sea) es que es la única opción en el navegador (TypeScript mejora las cosas, pero aún no es genial), y la única razón por la que se usa en los servidores es la moda , seamos honestos.

Si el navegador permitiera el idioma que queríamos, y la gente no tenía miedo de aprender nuevos idiomas, probablemente JavaScript ya no se usaría más, y todos lo recordaríamos con cariño como un pequeño lenguaje con el que probamos en los años noventa.

Realmente no veo ningún odio, excepto, quizás, especialmente en personas jóvenes y entre amateurs.

ECMAScript ha recorrido un largo camino, y con lenguajes como TypeScript en capas, herramientas como NPM y WebPack y hosts V8 como Chrome y Node, así como IDEs como VS Code, tenemos un conjunto sólido de herramientas para crear aplicaciones de producción.

Entonces, si alguien dice que “odian” a JS, entonces puedes usar eso como un indicador de que simplemente no son profesionales serios. El resto de nosotros hemos avanzado y estamos ganándonos la vida construyendo sistemas del mundo real con JS / TS como una de las muchas, muchas herramientas en nuestra caja de herramientas.

Definitivamente no se justifica.

Javascript es fantástico, pero los programadores tienen un fuerte sesgo en su contra. Deben darse cuenta de que la mayoría de los trabajos de programación son para javascript, y se puede usar para la interfaz con React Native, js frameworks, así como para el backend. Realmente puedo hacer la mayoría de las cosas con él, y es fantástico. A muchos de los que odian no les gusta que no sea POO y que no tengan escritura estática, pero literalmente puede agregar esto con un manuscrito de Babel para que no sea una queja válida.

Javascript es increíble y una vez que la gente se familiariza con eso, se dan cuenta de eso. Aquellos que son ignorantes o tercos probablemente continuarán odiándolo.

Para hacer lo que se supone que debe hacer, JavaScript en su encarnación más reciente es un gran lenguaje. Hace unos años, estaba en un estado tan desorganizado que merecía un poco de desagrado, pero principalmente se debía a que diferentes proveedores hacían las cosas de manera diferente y, en particular, Microsoft parecía ser incompatible.

Pero ahora, con Node y ES7, JavaScript es un excelente lenguaje para problemas de enlace de E / S asíncronas, especialmente todo lo relacionado con la red. La adopción de async / await en el lenguaje central hace que diseñar cosas como un oyente en una fuente de datos de transmisión sea una brisa absoluta. Las promesas fueron geniales, y eliminaron una gran cantidad de maldad de la programación asíncrona, pero las versiones de ES7 son aún mejores. Hay otras cosas que realmente se están volviendo útiles, como iteradores, generadores, observables y proxies. La sintaxis también ha evolucionado mucho, y el comportamiento de desestructuración / reposo / propagación es realmente poderoso. Si deja caer un transpiler de tipo seguro como TypeScript encima, entonces una gran parte de las críticas restantes se vuelven discutibles.

Cuando veo a alguien criticando el comportamiento de un solo hilo de Node, inmediatamente asumo que no es un programador de JavaScript muy experimentado o experto. Para la mayoría de las cosas, todo lo que necesita es async dentro de un solo hilo, y se deshace de una gran cantidad de dolores de cabeza que inevitablemente surgen al hacer multihilo. Si absolutamente necesitas una ejecución simultánea, entonces, demonios, no uses JavaScript . Utilice Go, o C ++, o Objective C, o Java, o lo que sea. Ir es fabuloso y me encanta, pero la mayoría de las veces no necesito ese nivel de concurrencia.

Pero tampoco es realmente tan malo en los números a pequeña escala, tampoco. El motor V8 en el nodo es muy bueno para convertir JS en un código de máquina ajustado; Tiene muchas dependencias de ensambladores y es realmente bueno en la optimización de código. Por supuesto, ejecutar un motor de renderizado 3D en JS no es una buena idea, pero es sorprendente cuánto trabajo de cómputo puede hacer con él.

Ya no.

Entiendo por qué era un lenguaje odiado. Es muy indulgente y le permite hacer cosas que no debe hacer. Debido a esto, cada segunda persona en Internet pensaba que era un programador, y había (y todavía hay, hasta cierto punto) una gran cantidad de “Programadores de JavaScript”.

Yo digo que fue por dos cosas. El lenguaje ahora se ha desarrollado, y ahora se parece mucho menos a un juguete. El desarrollo en JS sigue siendo diferente a otros idiomas, y por una buena razón. Ningún otro idioma tiene la tarea de ejecutarse en una variedad de dispositivos con una sintaxis de tan alto nivel, en un entorno donde nada puede darse por sentado.

La otra razón es que las expectativas de los sitios web han explotado últimamente, y con eso, la experiencia necesaria para que un desarrollador conozca sus herramientas. Todavía hay muchos desarrolladores ‘malos’ de JS, pero también hay muchos que realmente saben lo que hacen.

Eres la única persona que supongo. Es una broma .

No. Solo los principiantes odian un lenguaje de programación porque no pueden entender su sintaxis o propósito.

No conozco muchos lenguajes de programación, pero no los odio ni las personas que los usan.

Improvisar. Adaptar. Superar.

El odio es quizás una palabra demasiado fuerte, pero sí, a muchos programadores no les gusta el lenguaje o no lo respetan. Y, sí, JavaScript merece desdén.

Como resultado de su diseño inicial deficiente, JavaScript está en posesión de una gran cantidad de hobgoblins, los numerosos WAT y WTF que lo han convertido en el blanco de las bromas durante años. JavaScript tiene muchos inconvenientes serios e inconsistencias internas que no pueden ser reparadas por ECMA TC39, al menos no sin romper la web.

Todo lo que ECMA puede hacer es acumular una característica tras otra, haciendo que el lenguaje se convierta en un gigante. De hecho, ES8.0, la última encarnación tiene una especificación de idioma de más de 885 páginas. Espere que ES9.0 y ES10.0 sean aún más grandes.

JavaScript es, pues, innecesariamente grande y complejo. Ya no era el lenguaje poco ventoso que hacía que JavaScript fuera atractivo para los principiantes, ahora es un desastre horrible como lenguaje de enseñanza o como lenguaje de inicio.

Odiar javascript es como odiar un martillo. Es solo una herramienta.

¿Odio? ¡Odio es una palabra muy fuerte!

¿Me gusta el idioma? ¡Yo lo uso casi todos los días!

¿Lo recomiendo para proyectos grandes o complejos? No, porque no creo que sea la elección correcta para muchos proyectos.

Pero como han dicho los demás, los programadores profesionales no lo odian.

¡Usamos la herramienta adecuada para el trabajo, independientemente de nuestros sentimientos personales!

Lo odié en mis primeros años, pero después de aprender C, C ++ y luego Python, comencé a entender cómo todo tiene su uso y que no todo es un clavo.

Ya no. La implementación de Microsoft en IE 5.5 fue terrible, pero no es un mal lenguaje. Estoy de acuerdo con lo que dice Noam Ben-Ami: los programadores profesionales no lo odian.

El problema es que JavaScript no es lo suficientemente odiado .