Qual a importância do uso do mesmo idioma para cliente e servidor?

11

Estive avaliando soluções de arquitetura para um projeto móvel que terá um serviço / aplicativo da Web, além de aplicativos nativos, e observei várias bibliotecas, estruturas e pilhas como o Meteor , sendo uma espécie de "estrutura de pacote de pilha aberta" , está firmemente ligado com o Node.js .

Fala-se muito sobre os benefícios de usar o mesmo idioma no lado do cliente e do servidor, e não estou entendendo. Eu poderia entender se você deseja espelhar todo o estado de um aplicativo Web no cliente e no servidor, mas está lutando para encontrar outras vitórias ... Eficiência no fluxo de trabalho?

Estou tentando entender por que a paridade de linguagem cliente / servidor é considerada um santo graal. Por que a paridade de linguagem cliente / servidor é importante no desenvolvimento de software?

Makita
fonte
12
Eu diria que isso não é necessariamente uma grande coisa, especialmente quando o JavaScript é o idioma em questão.
Latty
4
Devo admitir que eu ainda tenho que chegar o momento epifania com JS e, portanto, não entenderam por que você iria querer código do servidor de gravação com ele, mas isso é outro assunto ..
Makita
1
Obrigado por fazer sua primeira postagem nos Stack Exchange Programmers. Para obter mais informações sobre como maximizar os votos positivos e minimizar os votos negativos, leia as Perguntas frequentes. Você pode ter sido rejeitado porque sua pergunta é mais um tópico de bate-papo do que algo com uma resposta específica. Pode demorar um pouco para se acostumar com o formato aqui. Respostas curtas, desprovidas de detalhes, são rejeitadas. O mesmo acontece com as respostas que debatem um tópico. Há um meio termo em que uma pergunta ou resposta é específica, mas universal o suficiente e atinge um tópico com a quantidade certa de detalhes.
Página
1
Eu até argumentaria contra. Ao usar o mesmo idioma para servidor e cliente, você corre o risco de recursos específicos de emaranhamento e idioma na comunicação.
Pieter B
3
@ Makita Eu acho que é uma pergunta válida, mas as pessoas tendem a ficar felizes com votos negativos quando pedem exemplos. Eu removi algumas partes da pergunta original e concentrei sua pergunta em relação à importância da paridade do idioma cliente / servidor.
maple_shaft

Respostas:

5

No lado PRO:

  • Se esquemas e códigos puderem ser reutilizados por ambos os lados, haverá muita eficiência na implementação de lógica e dados semelhantes apenas uma vez.

No lado CON:

  • O cliente pode ser principalmente uma exibição adequada para uma linguagem de marcação ou script, enquanto o servidor pode ser principalmente uma lógica comercial mais adequada para um idioma diferente.

No desenvolvimento da Web, as línguas proliferaram, criando ferramentas poderosas para partes específicas do sistema, bem como a necessidade de muitas especialidades serem aprendidas pelos desenvolvedores ou equipes de desenvolvedores. Em outras áreas, como processamento de transações ou sistemas incorporados que seguem uma abordagem de design de sistemas, pode haver economia em um idioma comum.

Novas estruturas de Javascript parecem chegar muito rapidamente, e um pouco de trabalho é feito para agrupar APIs para o back-end e ferramentas para o front-end. Pode ser inteligente manter a flexibilidade e a separação de preocupações entre o código do lado do cliente e do servidor, para que você possa flutuar entre elas sem ficar muito tempo parado por uma ferramenta específica.

DesenvolvedorDon
fonte
14

Presumivelmente, os benefícios percebidos são:

isto é, facilita o gerenciamento de recursos para os gerentes de projeto e tem pouco ou nenhum benefício técnico (possivelmente até um benefício técnico negativo se você estiver contratando vários pôneis de um truque)

jk.
fonte
1
É um benefício se você estiver desenvolvendo por conta própria, porque não existe uma opção "mental" entre servidor e cliente. Se você quer fazer alguma coisa e ter uma grande experiência em JavaScript, provavelmente obtém resultados melhores e mais rápidos dessa maneira, mas isso provavelmente é tudo ...
K ..
Você também diria que não há desvantagem técnica, possivelmente uma vantagem no uso de um idioma diferente para cada subsistema?
Michael Borgwardt
1
@MichaelBorgwardt, assumindo que cada idioma é um bom ajuste para o subsistema, eu diria que sim, nenhuma desvantagem técnica (talvez também não seja uma grande vantagem), mas pode haver um grande impacto na dinâmica e na contratação da equipe. é claro que a maioria dos subsistemas será facilmente implementável em qualquer idioma, então eu não esperaria ver isso extremo.
jk.
A observação sobre ser uma má ideia é injustificada. Existem muitas linguagens que podem ser compiladas para JavaScript e uma linguagem do lado do servidor, incluindo o Lisp , que de fato é a linguagem usada no curso SICP elogiada pela publicação de Joel no blog.
Back2dos # 25/12
@ back2dos espero que isso esclareça
jk.
2

O benefício é que você pode reutilizar (até certo ponto) o conhecimento e o código das pessoas de ambos os lados.

Pessoas

Os desenvolvedores precisam dominar um único idioma e formar um único pool. Em vez de dois conjuntos de conhecimentos. Isso facilita a transferência de conhecimento entre eles e também permite que eles alternem seu trabalho entre o cliente e o servidor com mais facilidade. Por fim, facilita a comunicação com os membros da equipe do "outro lado" ao discutir questões técnicas porque elas compartilham o mesmo background técnico.

Código

Às vezes, é útil ter algum estado no lado do cliente, algoritmos ou ambos. Às vezes, o mesmo é feito dos dois lados. Vamos dar o exemplo de um jogo multiplayer: você precisa representar o estado do jogo no cliente e no servidor. Além disso, você precisa implementar as regras no lado do cliente (para capacidade de resposta) e também no lado do servidor (para validar as ações de um jogador). Ser capaz de reutilizar o código para essas coisas pode ser uma grande vantagem. ... em algumas outras aplicações, você não precisaria disso ... tudo depende do caso.

... é claro que também existem desvantagens, mas isso é para outro post;)

dagnelies
fonte