¿Por qué estoy luchando para aprender JavaScript?

JavaScript es en muchos sentidos su propio idioma. A pesar de sus similitudes en la sintaxis de los lenguajes tipo C (como Java), no se parece en nada a la misma en términos de cómo funciona.

Diferencias

  • Java está basado en clases, JavaScript está basado en prototipos.
  • JavaScript se escribe de forma flexible, donde una variable que contenía un valor booleano puede contener una cadena. En Java, un booleano es solo un booleano.
  • JavaScript, de forma predeterminada, le permite evitar muchas prácticas de codificación incorrectas (busque “modo estricto de JavaScript” si tiene curiosidad)
  • En JavaScript, todos los objetos son mutables de manera predeterminada (busque “JavaScript Object.defineProperty ()” para ver cómo cambiar eso. Otros métodos similares son Object.defineProperties () y Object.create ())
  • Además, los objetos de JavaScript son lo que otros idiomas llaman diccionarios, si no me equivoco.
  • Hay una serie de otras cosas confusas en JavaScript, como la forma en que los arreglos son en realidad objetos, typeof null == “object” (no “null”), y otros.

Sin mencionar el hecho de tener un montón de marcos estándar que uno debería conocer y una variedad de navegadores y versiones de navegadores para admitir porque las personas se niegan a actualizar el IE 9 anterior * * se estremece *

Con Node, obtiene un único tiempo de ejecución de JavaScript que debe admitir, lo que probablemente sea parte de por qué es más fácil para usted. Además, no está la parte de tener que interactuar con interfaces de cliente (¿no estándar?).

No te sientas mal por luchar con JavaScript. Es una bestia propia que es lo suficientemente diferente de Java como para que no puedas aprovechar el conocimiento existente. No eres estúpido, solo estás aprendiendo algo nuevo.

Vine de C ++ a javascript hace 10 años. Es una transición difícil, no tanto porque javascript es un lenguaje duro, es más porque es un lenguaje diferente que es superficialmente similar. Creo que es aún más difícil venir de Java, que impone la seguridad de tipos más que C ++ con su uso de punteros. Cuanto más sepa sobre la programación del lado del servidor tradicional, más difícil será utilizar Javascript. La forma correcta de desarrollar en Javascript a menudo va en contra de muchos principios estándar. es decir, todo es un objeto mutable, no tiene seguridad de tipos … Se pueden usar como ventajas, pero tiene que usarlos correctamente y estar constantemente al tanto de ellos o le morderán. En otras palabras, tan pronto como construye un gran proyecto en javascript, no puede salirse con las malas prácticas de programación que permite el tiempo de ejecución, por lo que su trabajo anterior no se puede escalar y no hay una mano en manos de un compilador para decirle lo que está Lo estás haciendo mal, solo tienes que saberlo por experiencia.

Las preocupaciones de rendimiento también son a menudo completamente diferentes. Particularmente si estás haciendo desarrollo de UI vs desarrollo node.js. Por lo general, no le importa nada el rendimiento en tiempo de ejecución de su código directamente. Casi nunca es el verdadero cuello de botella. La manipulación de DOM y las llamadas de red son. es decir, su bucle O (n ^ 2) que manipula algunos conjuntos de datos no es el problema. Cuando renderiza esos n elementos en la pantalla o los saca del servicio, es así. Además, js no es multiproceso, lo que debería simplificar las cosas. No lo hace Los hace diferentes. Ahora simula otros subprocesos a través de promesas u otros patrones que simplemente no necesitas en el lado del servidor.

Si está desarrollando UI, tampoco tiene que saber solo javascript, sino también HTML más que la programación del lado del servicio, ya que tiene que usar las bibliotecas de los navegadores para manipular el DOM a través de javascript, no solo analizar cadenas HTML. Sus conjuntos de herramientas también son diferentes en un nivel fundamental. Usas cosas como gruñido para “compilar” tu código en una forma distribuible. Es otra cosa que aprender y hay varias alternativas entre las que elegir, lo que hace que sea más difícil comenzar.

Las bibliotecas de Javscript agregan mucha más estructura que en los lenguajes del lado del servidor y significan que incluso si conoce javascript por dentro y por fuera, una biblioteca puede cambiar toda la estructura y la sensación de programación en ella. Similar a cómo Hibernate cambia la forma en que trabajas fundamentalmente con una base de datos. Cada biblioteca de javascript de nivel de marco parece funcionar en ese nivel y cambiar todo tu mundo de pensamiento. Angular en particular es también un paradigma de programación muy diferente dentro de javascript. Incluso como experto en javascript, me tomó un buen mes antes de sentirme cómodo y otros 3 meses antes de que empezara a gustarme.

Deberías desarrollarte un poco más.

JavaScript no es un lenguaje fácil (y bueno) para empezar (si es el caso). Los subprocesos múltiples, los cierres, etc. no son parte de muchos idiomas, por lo que son tan específicos