Eu fiz essa pergunta no SO, mas foi sugerido que tente aqui. Então aqui vai:
Até agora, meu entendimento do Javascript é que é uma linguagem do lado do cliente que captura eventos e torna uma página da web dinâmica.
Mas, ao ler a comparação entre o MongoDB e o CouchDB , notei que ambos estão usando Javascript. Isso me faz pensar na razão por trás da escolha do JavaScript em relação a outras linguagens convencionais.
Acho que estou tentando entender o papel do JavaScript e suas vantagens sobre outros idiomas.
Atualização: não estou perguntando sobre os idiomas / drivers suportados pelos dois bancos de dados. A comparação diz:
O CouchDB e o MongoDB usam Javascript. O CouchDB usa o Javascript extensivamente, inclusive na construção de visualizações .
O MongoDB também suporta a execução de funções javascript arbitrárias do lado do servidor e usa javascript para operações de mapeamento / redução.
Minha falta de entendimento diz respeito ao motivo pelo qual o Javascript está sendo usado no trabalho de back-end. Por que é preferível criar vistas no CouchDB ou usar operações de mapa / redução? Por que C / C ++ ou Java não foram usados? Quais são as vantagens em usar o Javascript para esse trabalho de back-end?
fonte
Respostas:
Código móvel e multiplataforma
JavaScript é o que chamamos de código para celular , o código é transportado do servidor (MongoDB e CouchDB nesse caso) para o cliente (o navegador da web) e executado no cliente sem um processo de instalação.
Os ambientes de tempo de execução JavaScript (navegadores da web) também estão amplamente disponíveis em muitas plataformas. Isso faz do JavaScript uma boa linguagem de plataforma cruzada .
JavaScript não é usado como idioma principal de back-end
O back-end do MongoDB é implementado em C ++ e o CouchDB é implementado em Erlang. Portanto, o JavaScript não é usado como idioma principal para o back-end para esses sistemas.
From mongodb.com :
Em couchdb.apache.com :
fonte
Porque o JavaScript é uma linguagem de script.
É uma linguagem flexível e dinâmica, familiar às pessoas.
A outra razão pela qual o JavaScript é usado é porque ele se alinha bem ao formato JSON que esses bancos de dados usam.
E, finalmente, esses bancos de dados precisam de uma linguagem que possa ser interpretada. Porque o código para essas consultas é enviado pela rede.
Então você precisa de um
língua. Eu não acho que o JavaScript é uma má escolha aqui. Provavelmente foi escolhido por ter sintaxe no estilo C.
Agora, por que o JavaScript foi escolhido sobre outra linguagem de script é uma boa pergunta.
fonte
Now why JavaScript was chosen over another scripting language
: Eu poderia especular que é porque o JavaScript é a linguagem de script mais usada, extremamente bem testada por meio do uso em navegadores, e existem algumas excelentes implementações de interpretadores de código aberto. O CouchDB usauneval()
, uma dica de que eles construíram seu intérprete sobre o SpiderMonkey .Todos teremos que comer torta humilde quando percebermos que o JS está sendo usado para escrever:
Bases de dados
Servidores
Sistema operacional
e uma infinidade de bibliotecas, estruturas, mecanismos de renderização e linguagens de compilação,
... porque é melhor.
Sério, por favor ... me ouça. Não atire no mensageiro.
Pergunte à Microsoft por que eles estão criando o Windows 8 com JS como cidadão de primeira classe. Ou o novo sistema operacional móvel da Mozilla, ou Rivertrail, PhoneGap, ExtJS ou WebGL da IBM.
Mas, melhor é subjetivo: portanto, precisamos fazer uma pesquisa detalhada e comparar. O que é melhor?
Começou com o AJAX ... e não parou.
E / S sem bloqueio. Este é realmente um grande negócio e vale a pena conhecer. Em JS, este é o padrão de retorno de chamada. Acontece que o uso de retornos de chamada pode ativar um servidor sem bloqueio: Node.js ~ cerca de 8 linhas de código. setTimeout () é um retorno de chamada. Processamento assíncrono de thread único.
Flexibilidade. O que? -Java e C têm classes e interface, mas são chamados de orientação a objetos. JavaScript possui apenas objetos. Mas é chamado ... outra coisa.
Ter apenas objetos é uma boa opção para flexibilidade, porque membros e métodos são totalmente dinâmicos no tempo de execução. A herança prototípica não é assustadora. Alguns especialistas a descrevem como um pacote de objetos. -JS é amigável em erros. -Code pode se misturar para resultar em componentes compostos, sem muito esforço ou conhecimento de ... 'interfaces', 'abstração', 'herança', 'encapsulamento', 'polimorfismo'. Coisas boas, mas como a Nike, em JS; você apenas faz.
Tradução de dados. Com o JSON, os objetos podem ser transferidos de frente para trás e de trás para frente. Nenhuma conversão de dados XML. JSON é claramente simples.
Baixa curva de aprendizado. É possível recortar e colar código extremamente complexo e depois depurá-lo. Eu ouço um colega ... 'noobs'. Mas não é apenas para noobs.
- Acontece que esse é um recurso muito bom para a prototipagem rápida. E sites estão surgindo por todo o lado, alavancando essa coisa de design no navegador e mais amplamente; prototipagem em tempo de execução. Checkout JSFiddle e CodePen, também MicroJS. GitHub.
UPDATE: uma vez que esta postagem, o JavaScript agora é usado extensivamente por outros idiomas.
fonte
Você pode fazer menos com mais - existem algumas escolas sobre isso. A escola de verbosidade quer tudo explicado em detalhes super finos que qualquer idiota pode entender. JS é um membro da escola oposta, onde você pode estratificar a complexidade de maneira que seja mais fácil entender o cenário antes de entender como os detalhes mais refinados funcionam. É muito mais fácil gravar em uma interface em JS do que na maioria dos idiomas, o IMO.
Funções de primeira classe, fechamentos, herança prototípica - é uma combinação muito, muito flexível. Podemos imitar aulas, se quisermos. Mas isso é visto como um esforço sem sentido por aqueles que entendem JS muito bem. A composição combina com JS muito melhor do que a herança encadeada.
O bloqueio é útil em um nível superior. Sim, você me ouviu. Ajuda a manter o foco no JS como mensageiro, e não no cavalo de trabalho, e os processos se enfileiram, permitindo interrupções do comportamento assíncrono entre chamadas de função.
Eu diria que a curva de aprendizado é um pouco íngreme para escrever JS poderosos, mas quando você está lá, é uma piada. No entanto, não é difícil implementar coisas pré-cozidas em JS no nível de habilidade mais baixo.
fonte
Esta questão é um pouco antiga, mas o motivo para usar JavaScript vs Java / C ++ é que nem Java nem C ++ suportam facilmente fragmentos de código.
Mesmo que o JavaScript nunca tenha sido inventado, Java e C ++ seriam uma boa opção para os fragmentos de código-fonte que serão executados no servidor. Eles escolheriam outro idioma ou inventaram o seu. No passado, os produtos usados para criar seu próprio idioma, definir suas próprias regras de produção, AST, intérprete etc. especializados em seu domínio.
Porém, com JavaScript, é extremamente fácil criar uma DSL (Linguagem Específica de Domínio) para o seu produto e incorporar o mecanismo sem ter que se preocupar em criar todas as outras infraestruturas não relacionadas ao domínio.
fonte
Modelo de programação orientada a eventos
O JavaScript foi criado com uma abordagem de memória não compartilhada orientada a eventos. No desenvolvimento da interface do usuário, isso é completamente antigo. Não há suposição de que seu "aplicativo" esteja no controle de um processo. Não há API de processo. Também não há uma função principal.
Seu "aplicativo" é uma coleção de scripts que serão executados quando algo específico acontecer, como
Isso combina muito bem com os pequenos pedaços da lógica de processamento necessários para as transformações de dados.
Linguagem de script
Ser capaz de executar sem um estágio de compilação significa que as instruções de processamento podem ser armazenadas facilmente. Você pode salvar o script facilmente como texto e transmiti-lo sem nenhum tipo de dado ou conhecimento especial.
Bastante simples, estável e compatível com versões anteriores
O código que você escreve hoje não é muito diferente de 10 anos atrás. O controle de versão provavelmente não será um grande problema para as pessoas que o incorporam.
Desempenho
Existem vários bons mecanismos de código aberto por aí com uma tonelada de trabalho neles. Ele executa um pouco mais rápido do que muitas alternativas.
Aparelho Encaracolado
Muitas pessoas têm um conforto restrito com uma variedade de linguagens de programação. Eles sabem apenas como programar Java ou C #, por exemplo. Portanto, eles esperam aprender JavaScript facilmente, porque parece familiar. Isso é obviamente uma ilusão. Quando eu aprendi Python, estava praticamente no mesmo ritmo que o aprendizado de JavaScript. A sintaxe é apenas emocionalmente significativa, desde que não seja completamente obscura.
fonte