Otras respuestas se han centrado en lo que es la programación del lado del cliente y del servidor: qué lenguajes se utilizan en su mayoría, qué tareas deben realizarse, etc.
Esto es absolutamente correcto, pero me falta un poco de enfoque en cuáles son las diferencias entre ambos tipos de programación, en el contexto de la programación web. Déjame tratar de abordar eso.
Seguridad y permisos
En la programación del lado del cliente, no tiene acceso a todo el sistema, debido a problemas de seguridad. El usuario no necesariamente confía en todos y cada uno de los códigos que se descargan de la web y se ejecutan en su máquina, y este es el principal objetivo de diseño del entorno del lado del cliente (el navegador y el motor de JavaScript): proporcionar un entorno aislado donde el código del cliente puede ejecutarse pero no puede acceder a nada que esté fuera del alcance permitido.
En la programación del lado del servidor, es una buena práctica también limitar el acceso de cada aplicación al sistema subyacente, pero esto se aplica mucho menos a usted, ya que al final, usted o su empresa tienen el control de ese sistema. . Este diseño de 'jaula aislada' no está incorporado en las herramientas de programación y lenguajes del lado del servidor, sino que se logra a través de la configuración de la instalación (usando usuarios dedicados con permisos restringidos, eligiendo puertos que requieren o no requieren permisos de root, etc).
Implementación y plataforma
En la programación del lado del servidor, la implementación debe realizarse desde fuera de su código, utilizando algún tipo de herramienta (incluso si es make install
o un git clone
), y esta implementación suele ser manual, o al menos, Se espera que suceda de forma semi-supervisada. El sistema (es decir, el sistema operativo) en el que se implementa es generalmente uniforme en una cantidad de máquinas, pero puede ser altamente personalizado para sus necesidades.
En la programación del lado del cliente, la implementación se realiza desde el código del lado del servidor, que sirve a los clientes automáticamente y sin supervisión. El sistema subyacente (es decir, principalmente el navegador) puede ser muy diferente en un número mucho mayor de máquinas. Para hacer que la implementación sea factible en todo, se deben mantener los estándares, y hay una tendencia mucho más fuerte a un solo idioma y entorno.
Esta es la razón por la que copiar el código del lado del servidor de una máquina a otra puede llevar semanas, mientras que el código del lado del cliente suele ser trivial para ejecutar en diferentes máquinas.
Efectos secundarios y estatales
(Descargo de responsabilidad: este es, con mucho, el punto más subjetivo de todos. Probablemente hay muchos aspectos erróneos en mi argumentación. En mi opinión, es solo una hipótesis interesante.)
En la programación del lado del servidor, el estado es una preocupación mucho mayor, es decir, cómo recuperar y actualizar los datos a petición del usuario con la posibilidad de conflictos debido a la concurrencia. Incluso si la mayor parte de esta complejidad se descarga a un servidor de base de datos, es responsabilidad del código del servidor permitir que la base de datos mantenga sus garantías sobre la integridad de los datos utilizando su interfaz correctamente (por ejemplo, no utilice un caché para actualizaciones que nunca son vistas por La base de datos), aunque también es un objetivo del código del lado del servidor no sobrecargar la base de datos con el trabajo y mantener al usuario en espera de respuesta.
En la programación del lado del cliente, presentar los resultados al usuario es una preocupación mucho mayor, y esto implica efectos secundarios (en su mayoría, impresión en la pantalla). Esto no quiere decir que no haya un estado involucrado (por ejemplo, cookies), solo que el objetivo principal del código es realmente interactuar con el usuario, y esto no puede ocurrir sin efectos secundarios.
Esta es la razón por la que la programación del lado del cliente generalmente requiere (en algún momento) mirar la pantalla con una demostración, para verificar que todos los colores y el diseño son correctos, mientras que la programación del lado del servidor puede realizarse casi exclusivamente en un entorno orientado a texto , donde las pruebas automatizadas comprueban que la lógica sigue haciendo lo que se supone que debe hacer.