¿Qué aplicaciones están haciendo los programadores con JavaScript que no deberían?

Tengo 23 años desarrollando con C ++ y C #. Voy a darle una respuesta concreta a esta pregunta.

La mayoría del desarrollo que no se realiza para un navegador web no debe realizarse con JavaScript.

La verdadera pregunta que debe hacerse no es si una aplicación debe escribirse en JavaScript, sino si otra tecnología podría ser más adecuada para la tarea.

La razón clave para usar JavaScript es francamente que los desarrolladores conocen JavaScript. Si utiliza una gran cantidad de bibliotecas de soporte con JavaScript, puede combinar funcionalidades que le permitirán crear una funcionalidad similar o de reemplazo para muchas cosas para las que otros idiomas se adaptan mejor.

No voy a criticar herramientas como Node.js; de hecho, son brillantes y nos dan más herramientas para elegir. Si quiere algo simple y con recursos limitados, use JavaScript si lo desea.

Para ilustrar la razón por la que JavaScript no suele ser la mejor opción todo el tiempo, compare la construcción de software con la construcción de edificios. Si está construyendo una casa para perros, la chapa de madera está bien. Si quieres construir un establo para caballos, puedes ir con toda la madera. Para una casa de dos pisos para personas, ciertamente usaría acero y concreto en algunos lugares. Para un edificio de oficinas de 20 pisos, dependería casi por completo de acero y concreto.

Si desea construir algo que sea grande y duradero, utilice quizás Java o C #. Si está lanzando una aplicación para enviarla, entonces JavaScript está bien.

Sé que hay algunos desarrolladores de JavaScript que pensarán que estoy loco por decir que JavaScript no es el mejor para todo, pero no está diseñado para todo.

En resumen, use JavaScript si es todo lo que sabe, pero de lo contrario use mejores herramientas para partes del sistema además de los navegadores y obtendrá mejores resultados más rápido.

Gracias por el A2A, pero probablemente no soy el mejor para preguntar. Solía ​​preocuparme profundamente la calidad de los lenguajes de programación pero, a medida que envejezco, eso parece insignificante. Por lo tanto, me preocupa qué idioma puede ofrecer la mejor solución de rendimiento / mantenimiento para la aplicación que necesito y si hay bibliotecas / marcos apropiados disponibles para proporcionar un nivel de asistencia decente para la solución.

Veo sistemas integrados escritos en JavaScript (es decir, PhantomJS) porque existe la necesidad de representar gráficos en un lienzo que se ensamblan a partir de imágenes en sitios web. Veo servidores desarrollados en JavaScript (NodeJS), ya que proporciona una solución en un solo idioma tanto para el cliente como para el servidor. Veo JavaScript en el navegador que se extiende mucho más allá de su intención original. ¿Y adivina qué? No tengo problemas con eso. Seguro que pueden ser soluciones subóptimas y tal vez menos mantenibles / escalables, pero el programador puede haber tenido requisitos de mayor prioridad, como experiencia de personal, interfaces y código heredados, y plazos.

También hay muchas ventajas sutiles que no se dicen. Por ejemplo, si uno usa NodeJS como back-end, faltan bibliotecas para el cálculo pesado y similares, lo que alienta a los desarrolladores a mantener la capa del servidor muy delgada y a llamar a servicios web, a menudo escritos en Java u otros idiomas . Esa capa delgada de servidor es una mejor práctica. Y es fácil encontrar desarrolladores y diseñadores que conozcan JavaScript, lo cual es un factor muy importante. Incluso si odiaba JavaScript, podría recomendar su uso en tales entornos.

Considere qué es lo que quiere lograr y si el idioma tiene un soporte decente para eso. ¿El lenguaje es ampliamente compatible y hay muchos trabajos y bien remunerados? ¿Te gusta usar el lenguaje y lo entiendes bien para que puedas ser productivo mientras creas un código confiable y fácil de mantener? Estos son mucho más importantes que la “calidad” académica del idioma. (Aunque aprecio los lenguajes bien diseñados, ese es un tema diferente).

Si está construyendo un cobertizo y está en el techo y nota que varios clavos no han sido golpeados por completo, pero su martillo está en el camión, está bien usar la cabeza de una llave inglesa para golpear esas cabezas de clavos hacia abajo. Incluso el mejor carpintero podría hacerlo.

También podrías hacer la misma pregunta sobre Smalltalk.

Como cualquier herramienta, hay cosas para las que node.js es bueno, y algunas que no. Ejemplo: acabo de escribir un motor de encuestas SNMP que puede manejar un par de miles de encuestas por minuto con alrededor de 120 líneas de JavaScript (sin incluir comentarios y corchetes). Claro que es de un solo subproceso, pero con ese tipo de rendimiento, ¿a quién le importa?

El nodo es excelente cuando realiza E / S, porque con E / S pasa la mayor parte del tiempo esperando. ¿Qué parte de su código está simplemente barajando datos de una cosa a otra?

Muchas opiniones de idiomas están formadas por personas que creen que un idioma no es lo suficientemente machista. En algún momento de tu vida, simplemente no te importa el macho y quieres algo que haga el trabajo de manera fácil, rápida y fácil de mantener. Si ese lenguaje y tiempo de ejecución es A, B, C, entonces úselo.

Eso no quiere decir que deba escribir todo en shell … pero a veces esa es una forma correcta de hacerlo.

Estoy de acuerdo con Joe Francis en que no deberías usar Javascript, excepto que escribes código de interfaz o cosas de fondo muy básicas. Javascript se puede usar para backends, pero no creo que sea una buena opción, excepto que necesita un servidor básico para entregar sus cosas iniciales de una aplicación de una sola página. Por lo general, otros idiomas ofrecen características mucho mejores, tienen un administrador de paquetes mucho mejor y bibliotecas mucho mejores para no hablar sobre algunos comportamientos cansados ​​que a veces tiene Javascript con respecto a cómo manejar los errores.

Javascript es bueno para frontend y creo que es válido tener un servidor NodeJS que entregue este frontend y existen casos de uso realmente válidos y razones por las cuales uno debería usarlo para estos fines. Cualquier otra cosa me parece mal.

Probablemente la mayoría de las aplicaciones implementadas actualmente en Javascript. Se utiliza como una herramienta de “talla única” incluso para aplicaciones que se implementarían mejor en otros idiomas.

Parte de esto es la falacia de que “todo debería implementarse en la web”. Esto es basura: la web es una mala interfaz particular y, a menudo, la sobrecarga involucrada es un desperdicio profundo de tiempo y energía consumida.

Una falacia similar es “solo debería saber un idioma”. Esto también es basura. Ningún idioma es “tan bueno” que esto sea cierto.

Otra falacia más: “Hago sitios web; Soy programador ahora “. Bueno, Javascript no es todo eso y la web no está realmente programando en sentido estricto.

JavaScript se utiliza principalmente para el desarrollo web porque es el idioma nativo del navegador web . No tienes elección en el asunto.

De lo contrario, no deberías usar este lenguaje para nada más porque es realmente execrable. Es cierto que Node.js es una buena pieza de tecnología para el back-end. Lástima que esté basado en JavaScript. Si fuera cualquier otro idioma, me encantaría usar Node. Prefiero ir idioma en su lugar.