Por que não existem outras linguagens de script do lado do cliente para sites? [fechadas]


35

Por que existe apenas suporte para JavaScript e alguns VBScript nos navegadores hoje? Eu sei que o JavaScript é bom e tudo, mas a opção de usar outra linguagem de programação não ajudaria a promover diferentes estilos de desenvolvimento?


11
Veja esta pergunta no Stack Overflow: stackoverflow.com/questions/2872037/…
Corey

11
Sua pergunta é precisamente por que o Google criou o GWT .
Jhocking

11
Acredito que o objetivo da API DOM era fornecer suporte para vários idiomas. O fato é que JS é realmente muito adequado ao desafio. Normaliza como os negócios de ninguém e as funções de primeira classe são enormes em um paradigma fortemente orientado a eventos. O que realmente aconteceu foi que ninguém queria que a MS tomasse essa decisão e ninguém apresentou uma melhor que JS. Além disso, os Java Applets eram realmente MUITO coxos.
Erik Reppen

Respostas:


33

Não há necessidade de adicionar suporte para vários idiomas; uma solução seria padronizar em um bytecode genérico que possa ser usado por implementadores de idioma. Mas atualmente não há planos para isso (foi sugerido).

Os idiomas também podem ser implementados no Javascript. Javascript é bom o suficiente para permitir que outros idiomas sejam implementados em cima dele. E já existem muitos exemplos disso.


3
+1 - Por destacar que o JavaScript é uma linguagem poderosa que pode ser usada como uma abstração para outros idiomas. Seria um projeto interessante escrever uma extensão do Firefox que executasse o cliente C ++ ou Java! <script type="text/cpp" src="test.cpp"></script>.
precisa saber é o seguinte

2
@ jmort253, dê uma olhada no cliente nativo.
7119 dan_waterworth

O cliente nativo é definitivamente interessante, mas a menos que o Mozilla o adote também, não haverá tração. A última vez que verifiquei, eles ainda não estavam prontos para assumir.
Nkassis

11
Eu encontrei a Gestalt ~ há alguns anos: gestalt.codeplex.com é um bom exemplo de criação de outras linguagens de script sobre JavaScript.
Jim Schubert

2
Outro exemplo: Google Web Toolkit ? Java é compilado para JavaScript
MarkJ

21

O JavaScript é o padrão de fato e existe desde 1996. Ser um padrão simplesmente porque não há concorrência não é exatamente justo, mas não ouvi muitas reclamações sobre o motivo de não haver outro idioma incluído.

Adicionar outro idioma "padrão" promove todos os tipos de pequenos e divertidos problemas.

  • Como eles trabalharão com outros idiomas?
  • O DOM será compartilhado?
  • Os scripts escritos nos dois ainda funcionam?
  • Portando bibliotecas para ambos

8
Na verdade, acho que o JavaScript é a linguagem usada no Gecko da Mozilla. No IE, temos JScript. A maioria dos outros navegadores usa algo que mais ou menos segue as especificações do ECMAScript. Todas essas linguagens são, por uma questão de simplicidade, denominadas 'JavaScript', enquanto na verdade elas diferem.
Mchl 10/02

11
Você pode ter vários idiomas que geram o mesmo bytecode. Veja a JVM - Groovy, Java, Scala, Clojure, jRuby podem ser compilados diretamente no bytecode da JVM. Dessa forma, eles compartilharão a mesma API do DOM e podem ser interoperáveis. Embora seja exponencialmente mais difícil de implementar com JavaScript VM, uma vez que é interpretado.
David Sergey

21

Pense nas inconsistências entre os navegadores apenas para o suporte a javascript. Agora pense em como seria se houvesse mais idiomas.


5
Sim, ele já está lá, VBScript do lado do cliente ... uugh, estremece.
Ocodo 07/02

11
+1 Acho que nossas cabeças explodiriam se tivéssemos um subconjunto de outros idiomas para memorizar para cada um dos principais navegadores e suas versões. Boa resposta.
precisa saber é o seguinte

4
Isso pode ser difícil, mas ... o suporte do navegador ao JavaScript [ECMAScript] tem sido muito consistente desde o início. O que tem sido inconsistente é a implementação do DOM (e métodos associados). Do ponto de vista prático (e histórico), é difícil separar os dois - já que o único uso real de JS foi manipular o DOM em um navegador - mas com o aumento do JS do lado do servidor (coisas como NodeJS), isso realmente se torna uma distinção um tanto importante.
Josh3736

ia escrever exatamente isso como resposta, a internet tem padrões suficientes que não são seguidos ou suportados. o fato de que a bagunça confusa que temos funciona tão bem quanto a metade não é nada menos que um milagre.
Ryathal

11
Josh está certo. É aí que você se conecta à idéia mal interpretada do navegador individual de como as coisas devem renderizar e ser acessadas pelo JS, essas coisas ficaram feias, mas o IE finalmente está pelo menos atendendo a problemas de API proprietários de longa data nessa frente (mesmo que continue a ficar atrás do mais recente em quase tudo devido à decisão fatídica da MS de vincular seu navegador ao navegador de arquivos - idiotas).
Erik Reppen

6

Os navegadores precisam ser padronizados, para que o que você desenvolva funcione em qualquer lugar, em todos os navegadores.

Se você tem vários idiomas, precisa garantir que todos eles tenham um desempenho muito semelhante. Se você é um desenvolvedor da Web e tem uma escolha de idiomas, que podem ou não ser suportados em alguns locais, isso é uma dor de cabeça adicional.

Javascript é uma linguagem muito flexível, é imperativa, é funcional, pode ser OOP (de certa forma com protótipos) e é interpretada. Agora, com mecanismos decentes, como no Chrome, é razoavelmente capaz de fazer algumas coisas boas. Idiomas extras apenas colocariam as coisas de volta aqui, olhem apenas o VBScript, IE e, portanto, tudo o que estiver escrito nele será vinculado a um navegador e plataforma específicos, o pesadelo.


2
O ponto importante aqui é "com mecanismos decentes como no Chrome". Fazer qualquer coisa, mesmo tributando levemente, faz com que até o IE8 comece a mancar, como se tivesse uma perna quebrada, enquanto as versões recentes do Firefox e Chrome desde sempre que eu a usei (foi por isso que mudei de fato) pularam sem perder o ritmo.
Matthew Scharley

11
@ Matthew Scharley: O IE geralmente é lento, na verdade parece piorar a cada versão. Eles precisam melhorar o jogo ou ficarão de fora dele. A única razão pela qual o IE tem alguma influência é por causa da inclusão do SO, agora eles precisam colocar um seletor no primeiro uso, que caiu muito.
Orbling

"Pode ser OOP" ... Ele é OOP! Herança não é o que define OOP. Objetos são.
precisa saber é o seguinte

@KaptajnKold: Isso é assunto de algum debate nos círculos acadêmicos, surpreendentemente. Concordo que o JS é capaz de POO, pois possui objetos, mas nem sempre são excessivamente usados ​​por alguns. O sistema de protótipo também é bem diferente do sabor usual de POO, o que o remove da definição padrão de "uma linguagem de POO". Como na maioria dos idiomas, depende de como você o usa - quando eu uso, é OOP.
Orbling 07/12/11

3

Em vez de incorporá-los aos navegadores, os fornecedores gostam de criar plug-ins de navegador desajeitados - Java, Flash, Silverlight etc. Isso garante a consistência entre plataformas.


Bem, não se trata de garantir a consistência entre plataformas, mas de garantir o controle. Como você controla o plug-in e não precisa responder a mais ninguém.
Jhocking

Comparado à dificuldade de executar o javascript sujo rapidamente, os plug-ins "desajeitados" são muito melhores. Eu costumava me sentir negativamente com toda a coisa de baixar o plugin do navegador, mas é definitivamente mais aberto do que "javascript implementado universalmente".
Milind R

2

Uma das razões é que é praticamente impossível para diferentes fornecedores de navegadores concordarem com uma implementação Javascript padrão e o Javascript existe há muito tempo, pelo menos da perspectiva da linguagem da Web. Portanto, a maioria das pessoas pensa, com razão, que colocar outra linguagem do lado do cliente no ecossistema e obter todos os fornecedores para suportá-la é praticamente impossível, e a maioria das pessoas que poderiam fazer isso acontecer já está envolvida em problemas de padronização de Javascript, que eu acho muito melhor uso de seu tempo.


Praticamente o que eu ia dizer. A diferença importante (nesta discussão) entre os idiomas do lado do cliente e do servidor é que os navegadores precisam implementar o idioma do lado do cliente.
precisa saber é o seguinte

2

Existem várias respostas aqui que afirmam que o suporte a vários idiomas tornaria muito odioso para os construtores de navegadores da Web garantir que eles sejam compatíveis com todos os idiomas. Para mim, isso parece incorreto.

Java, por exemplo, é um padrão extremamente bem definido. Basicamente, tudo o que você precisa fazer é expor o DOM do navegador como uma API Java e executar a Java Virtual Machine (JVM) dentro do seu navegador da web. Você pode especificar que o código de script precise ser entregue na forma de arquivos JAR compilados e assinados ou como código-fonte JavaScript. Se o navegador encontrar JavaScript, ele poderá ser executado através de um intérprete dedicado (como acontece hoje) ou através do Rhino na parte superior da JVM. Se encontrar arquivos jar, ele cria um novo carregador de classes e sandbox de segurança, carrega o bytecode java na memória e o executa. Isso seria completamente compatível com as páginas da web existentes e permitiria ao navegador, com um único toque, suportar as dezenas de idiomas que são executados na JVM.

Outras vantagens:

  1. A JVM se beneficiou de uma década de melhorias de desempenho. Agora é muito rápido, estável e maduro. Aposto que você verá uma grande melhoria no desempenho em relação ao javascript interpretado.
  2. À medida que os aplicativos do lado do cliente se tornam maiores e mais complexos, os benefícios de linguagens estruturadas e digitadas, como Java e Scala, aumentam.
  3. Você teria acesso ao verdadeiro multi-threading e, através do Scala, uma biblioteca de coleções otimizada para computação com vários núcleos.
  4. Você pode usar qualquer uma das milhares de bibliotecas java de código aberto dentro do navegador.
  5. Por meio de bibliotecas como o openGL, o navegador pode fornecer acesso a recursos avançados de computação gráfica e de placa gráfica.
  6. Se você tivesse o java em execução no lado do cliente e do servidor, poderia se beneficiar ainda mais das comunicações cliente-servidor por meio de serialização de gráfico de objeto binário extremamente compactada = carregamento e execução mais rápidos de páginas da web.

11
Você já pode executar o código da JVM. É chamado de applet java
Raynos

1

Acredito que o JavaScript ganhará ainda mais terreno como linguagem padrão para a Web. Estamos vendo um aumento no JavaScript do servidor. Aqui estão alguns exemplos de implementações dessa linguagem poderosa no servidor:

  • SJS do servidor Web POW - JavaScript do servidor para o servidor Web POW, que é executado como uma extensão do Firefox ou como um aplicativo XULRunner. O SJS desempenha um papel semelhante ao do PHP no Apache, pois pode se conectar aos bancos de dados e gerar conteúdo do lado do cliente.

  • NodeJS - JavaScript do lado do servidor que usa um modelo baseado em evento. Ele é construído usando o V8 JavaScript Engine do Google . O NodeJS é anunciado como uma ferramenta para criar programas de rede escaláveis. Um servidor da Web "Hello World" pode ser escrito em apenas 6 linhas curtas!

  • Jaxer - Um servidor JavaScript que interpreta todos os blocos de script runat="server"como JavaScript do lado do servidor. Aplicativos da Web inteiros podem ser escritos em JavaScript.

  • Rhino - JavaScript para Java - A Mozilla criou esta implementação JavaScript do lado do servidor que é executada em Java. É essencialmente um conceito semelhante ao Querces PHP para Java , Jython, JRuby e muitas outras abstrações de outras linguagens executadas na JVM. O Rhino é normalmente usado para incorporar JavaScript no Java para fornecer ferramentas de script aos usuários finais, mas também pode ser usado para mover o código do cliente para o servidor sem precisar reescrever a lógica de negócios em outro idioma!

  • JQuery Claypool - estrutura JavaScript do lado do servidor usando o poder do JQuery no servidor. Muito legal! Ele foi desenvolvido usando a implementação JavaScript do servidor EnvJs de um navegador.

  • EnvJs - Um navegador sem cabeça, construído sobre o Rhino.

O que muitas dessas implementações e estruturas demonstram é que o JavaScript está se tornando uma força tão poderosa no desenvolvimento da Web que os líderes da comunidade já começaram a mover o JavaScript para o servidor. O JavaScript é uma linguagem de programação funcional extremamente poderosa e, com o passar do tempo, sinto que vamos vê-lo evoluir.

Em resumo, parece uma contradição portar os outros idiomas para o navegador. Em vez disso, podemos portar esse único idioma do navegador para o servidor e preencher essa lacuna de uma maneira mais unificada.


+1 por apontar que o JavaScript não se limita ao navegador
Gary Rowe

1

Existem vários exemplos de ferramentas que compilarão outras linguagens para javascript, incluindo Haskel, Lisp e Python (provavelmente outras). Portanto, se você deseja trabalhar em um desses idiomas, pode fazê-lo.

E acho que um dos meus professores da universidade escreveu uma implementação de esquema em Javascript. Então, se você gosta de esquema, também pode fazer isso.


0

As pessoas resolveram a falta de variedade embutida de duas maneiras: usando plug-ins como applets flash ou java e criando camadas que usam o javascript como seu "código de máquina", como o jquery ou o Google Web Toolkit. Se houvesse um novo estilo de desenvolvimento bastante popular, as pessoas encontrariam uma maneira de incorporá-lo.

Esteja ciente de que, se você criar um tempo de execução .net em javascript, e ele se tornar popular, certos círculos amaldiçoarão seu nome na Internet para sempre.


Culpe webforms e IE. Você mijaria menos os desenvolvedores da interface do usuário da web, empurrando-os com jogadores quentes. Não é bom para associação de marca.
quer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.