¿Qué tan importante es usar el mismo idioma para el cliente y el servidor?

11

He estado evaluando soluciones de arquitectura para un proyecto móvil que tendrá un servicio / aplicación web además de aplicaciones nativas y he estado buscando en varias bibliotecas, marcos y pilas como Meteor , que es una especie de "marco de paquete de pila abierta" , está estrechamente ligado con Node.js .

Se habla mucho sobre los beneficios de usar el mismo idioma tanto del lado del cliente como del servidor, y no lo entiendo. Podría entender si desea reflejar todo el estado de una aplicación web tanto en el cliente como en el servidor pero luchando por encontrar otras victorias ... ¿Eficiencia del flujo de trabajo?

Estoy tratando de entender por qué la paridad del lenguaje cliente / servidor se considera un santo grial. ¿Por qué es importante la paridad del lenguaje cliente / servidor en el desarrollo de software?

Makita
fuente
12
Yo diría que esto no es necesariamente una gran cosa, especialmente cuando JavaScript es el idioma en cuestión.
Latty
44
Debo admitir que aún no he llegado al momento de la epifanía con JS y, por lo tanto, no he comprendido por qué querrías escribir código de servidor con él, pero ese es otro tema ...
Makita
1
Gracias por hacer tu primera publicación en Stack Exchange Programmers. Para obtener más información sobre cómo maximizar los votos positivos y minimizar los votos negativos, lea las preguntas frecuentes. Es posible que haya sido rechazado porque su pregunta es más un tema de chat que algo con una respuesta específica. Puede llevar un tiempo acostumbrarse al formato aquí. Las respuestas cortas que carecen de detalles son rechazadas. Así son las respuestas que debaten un tema. Hay un término medio en el que una pregunta o una respuesta es específica pero lo suficientemente universal y toca un tema con la cantidad correcta de detalles.
DesarrolladorDon
1
Incluso argumentaría en contra. Al usar el mismo idioma tanto para el servidor como para el cliente, corre el riesgo de enredarse y características específicas del idioma en la comunicación.
Pieter B
3
@Makita Creo que es una pregunta válida, pero las personas tienden a contentarse con los votos negativos cuando piden ejemplos. Eliminé ciertas partes de la pregunta original y enfocé su pregunta en torno a por qué es importante la paridad del lenguaje cliente / servidor.
maple_shaft

Respuestas:

5

En el lado PRO:

  • Si los esquemas y el código pueden ser reutilizados por ambos lados, hay mucha eficiencia en la implementación de lógica y datos similares solo una vez.

En el lado CON:

  • El cliente puede ser principalmente una vista que es adecuada para un lenguaje de marcado o script, mientras que el servidor puede ser principalmente una lógica de negocios que se adapta mejor a un idioma diferente.

En el desarrollo web, los idiomas han proliferado, creando herramientas poderosas para partes específicas del sistema, así como la necesidad de que los desarrolladores o equipos de desarrolladores aprendan muchas especialidades. En otras áreas, como el procesamiento de transacciones o los sistemas integrados que siguen un enfoque de diseño de sistemas, puede haber ahorros con un lenguaje común.

Parece que los nuevos marcos de Javascript nos llegan muy rápido, y se realiza un trabajo para agrupar las API para el back-end y las herramientas para el front-end. Puede ser inteligente mantener la flexibilidad y la separación de preocupaciones entre el código del lado del cliente y del servidor para que pueda flotar entre ellos sin estar demasiado atrapado durante demasiado tiempo con una herramienta en particular.

DesarrolladorDon
fuente
14

Presumiblemente los beneficios percibidos son:

es decir, facilita la gestión de recursos para los gerentes de proyecto y tiene poco o ningún beneficio técnico (posiblemente incluso un beneficio técnico negativo si está contratando un grupo de ponis trucos)

jk.
fuente
1
Es un beneficio si está desarrollando por su cuenta, porque no hay un cambio "mental" entre el servidor y el cliente. Si desea hacer algo y tener una gran experiencia en JavaScript, probablemente obtendrá mejores y más rápidos resultados de esta manera, pero eso es probablemente todo ...
K ..
¿Diría también que no existe una desventaja técnica, posiblemente una ventaja en el uso de un lenguaje diferente para cada subsistema?
Michael Borgwardt
1
@MichaelBorgwardt, suponiendo que cada idioma es una buena opción para el subsistema, diría que sí, sin desventajas técnicas (aunque quizás no sea una gran ventaja), pero podría haber un gran impacto en la dinámica y la contratación del equipo. por supuesto, la mayoría de los subsistemas serán bastante fáciles de implementar en cualquier idioma, por lo que no esperaría ver este extremo.
jk.
La observación acerca de que esta es una mala idea no está justificada. Hay muchos idiomas que pueden compilarse para JavaScript y un lenguaje del lado del servidor, incluido Lisp , que de hecho es el idioma utilizado en el curso SICP elogiado por la publicación del blog de Joel.
back2dos
@ back2dos con suerte eso lo aclara
jk.
2

El beneficio es que puede reutilizar (hasta cierto punto) la experiencia y el código de las personas en ambos lados.

Personas

Los desarrolladores necesitan dominar un solo idioma y formar un solo grupo. En lugar de dos grupos de experiencia. Esto facilita la transferencia de conocimiento entre ellos y también les permite cambiar su trabajo entre el lado del cliente y el servidor con mayor facilidad. Por último, facilita la comunicación con los miembros del equipo del "otro lado" cuando discuten cuestiones técnicas porque comparten la misma formación técnica.

Código

A veces es útil tener algún estado en el lado del cliente, o algoritmos, o ambos. A veces, lo mismo se hace en ambos lados. Tomemos el ejemplo de un juego multijugador: debe representar el estado del juego tanto en el cliente como en el servidor. Además, debe implementar las reglas en el lado del cliente (para la capacidad de respuesta) y también en el lado del servidor (para validar las acciones de un jugador). Poder reutilizar el código para estas cosas puede ser una gran ventaja. ... en algunas otras aplicaciones, no necesitarías esto en absoluto ... todo depende del caso.

... por supuesto, también hay inconvenientes, pero eso es para otra publicación;)

dagnelies
fuente