¿Por qué hay una necesidad de un lenguaje front-end y back-end?

Nota 1: Javascript está disponible como una pila completa y es POSIBLE (e incluso deseable en algunos casos) usar solo JavaScript con html / css como presentación.

Nota 2: lo siguiente se basa en mi experiencia personal y puede diferir de las necesidades de su aplicación.

TL; DR: hay diferentes idiomas porque las personas tienen diferentes preferencias y ningún idioma es la respuesta correcta en una situación determinada.

Javascript es un lenguaje muy adecuado para la lógica de presentación. El tipeo de pato y la coerción de tipo son cosas que simplemente tienen sentido cuando se trata de la entrada e interacción del usuario durante todo el día. Su estructura de bucle de eventos y eventos basados ​​en todo tiene mucho sentido para el trabajo de UI y UX (es por eso que muchos juegos usan una estructura similar, aunque rara vez están escritos en Javascript).

Javascript no es un lenguaje adecuado para grandes cantidades de procesamiento de datos sincrónicos. Javascript no tiene ninguna capacidad de subprocesamiento múltiple inherente, por lo que su salida máxima de un proceso está necesariamente limitada a un núcleo. Ahora, la tecnología como los trabajadores web y otros le dan acceso a múltiples núcleos, pero luego se enfrenta a problemas y desafíos de sincronización. La mayoría de los otros idiomas tienen un consumo multinúcleo “gratuito”, que en última instancia es lo que necesitamos para obtener el mejor rendimiento de los servidores en la actualidad. Para muchas tareas de backend que no están vinculadas a IO, Javascript no es el mejor lenguaje. Los servidores que manejan cientos de usuarios y toman decisiones por ellos, a menudo se benefician de los modelos de subprocesos por solicitud que requieren poca o ninguna sincronización. Tienden a usar una CPU ligeramente más alta que las operaciones basadas en bucles de eventos, pero pueden usar de manera más efectiva todos los recursos disponibles en un servidor determinado y pueden escalarse verticalmente con mucha facilidad.

La simple realidad es que no existe un lenguaje perfecto. Cada lenguaje de programación tiene sus altibajos. Algunos de ellos son simplemente molestos en ciertos casos (interoperabilidad de Java con código nativo) y otros son simplemente diferentes (Ruby), pero todos existen porque hay un caso de uso legítimo para todos ellos. Excepto PHP, no existe un caso de uso legítimo para PHP. La única razón para usar PHP es porque ya se estaba usando y le dijeron que no lo arrancara. De lo contrario, no use PHP. ¿Mencioné que no me gusta PHP?

Ok, con toda seriedad no existe un lenguaje perfecto. Javascript es el idioma del cliente solo porque se dirige a los navegadores web. Si proporcionó una aplicación real, podría escribir tanto el cliente como el servidor en Java o C # o C ++ o cualquier otra cosa que su corazón desee. Sin embargo, Javascript es justo con lo que puedes trabajar en el navegador. En el caso de que desee utilizar un navegador como cliente y desee el mismo idioma en el servidor, utilice nodeJs. De lo contrario, elija el idioma que mejor funcione.

Nota 3: NO ODIO PHP per se, simplemente no me gusta. He escrito mi parte de aplicaciones en PHP porque me contrataron para hacerlo, y las personas pagarán mucho más por una aplicación PHP que pueden pretender mantener después de que vayas, luego lo harán por un equivalente entregado más rápido en otro idioma. Contratar es raro de esa manera.

Había una vez una necesidad porque JavaScript no era lo suficientemente rápido o maduro como para ser un candidato fuerte para un lenguaje del lado del servidor. Eso ha cambiado en gran medida con motores JavaScript más rápidos como V8 que conducen a marcos JS del lado del servidor como NodeJs.

Algunas personas aún elegirán usar otros idiomas porque están más familiarizados con ellos o los prefieren. En algunos casos requieren un lenguaje como C ++ porque necesitan que su servidor sea increíblemente eficiente para que pueda ejecutar grandes cantidades de tráfico (piense en Google). Pero afortunadamente hoy en día la mayoría de los desarrolladores tienen una amplia gama de opciones de idioma del lado del servidor. Usar JavaScript en ambos lados es una opción perfectamente respetable, al igual que usar cualquiera que sea su idioma favorito.

Puede usar javascript en el back-end, se llama node.js.

Aún así, el back end y el front end son muy diferentes. La mayoría de las cosas que usted usa en el frente no se aplican al back end en absoluto y viceversa. Las diferencias de sintaxis son solo la punta del iceberg, pero el mismo idioma diferente hace que sea ​​un punto de entrada más fácil. Siempre que conozca JavaScript bastante bien.

Ya no necesita diferentes idiomas para el front-end y el backend.

Por un tiempo, javascript es un lenguaje de pila completa. Así que enciende node o iojs y disfruta …