Qual é a base histórica do uso de Javascript na programação da Web?

9

Eu venho de uma formação científica em biologia, onde também usamos muito o Python.

Agora que comecei a iniciar o desenvolvimento da Web, sempre me perguntei por que o JavaScript é a principal linguagem do lado do cliente na Web.

A predominância do JavaScript é um acidente histórico ou algo mais? Além disso, estou curioso para saber se existem obstáculos para integrar o Python aos scripts do lado do cliente.

rd108
fonte
Isso precisa de atenção do moderador com base em meta.programmers.stackexchange.com/questions/363/… ?
Rein Henrichs
@ Rein - Você poderia vote to closese sentir que isso é fora de tópico. Se os outros pensam da mesma maneira, eles ou um moderador seguirão sua liderança.
Jmort253
@ jmort253 (Talvez eu deva passar para a meta) Não houve consenso no tópico vinculado e sou ambivalente. :(
Rein Henrichs
@ Rein - O processo de pensamento nos comentários é bom (pois serve como uma placa de sinalização, por que ou por que não, a comunidade decidiu agir em um post. Se não houver acordo, faça o que achar melhor. :) Pessoalmente, acho que essas informações históricas podem ajudar outras pessoas a entender o futuro do JavaScript como idioma e por que é importante entender e adotar esse idioma.
precisa saber é o seguinte

Respostas:

16

O JavaScript foi a primeira linguagem de script a ser disponibilizada em um navegador da Web popular, por isso foi implementada quase universalmente. Sendo a única linguagem de programação disponível em todos os navegadores populares, não havia escolha, a não ser que fosse a linguagem de programação predominante no lado do cliente.

O Internet Explorer implementou o JavaScript de uma maneira que permite mecanismos de script conectáveis ​​(fornecidos com VBScript e JScript). Se você preferiu (como eu) escrever seu código em PerlScript ou PythonScript, poderia, mas todos os seus clientes precisavam ter essa linguagem de script instalada e precisavam usar o IE. Você poderia fazer isso em projetos internos, mas não há como isso funcione na Internet.

Gabe
fonte
Outra coisa que achei interessante foram os projetos para escrever compiladores python para javascript, por exemplo, Pyjamas pyjs.org .
Rd108
"O Pyjamas é uma plataforma de desenvolvimento de Rich Internet Application (RIA) para Web e Desktop. Ele contém um compilador Python para Javascript, uma estrutura AJAX e uma API do Widget Set. O Pyjamas começou como uma porta Python do Google Web Toolkit, o Compilador Java para Javascript. Leia as Perguntas frequentes e a lista de recursos. "
Rd108
Existem muitos compiladores de algo em javascript. CoffeeScript, TypeScript, ClojureScript, LispyScript, etc etc #
Florian Margaine
7

JavaScript foi criado originalmente por Brendan Eich. Ele foi lançado pela primeira vez com a versão beta do Netscape Navigator 2.0 em setembro de 1995 como LiveScript, mas foi renomeado JavaScript em um anúncio conjunto com a Sun Microsystems em dezembro de 1995. Foi somente mais tarde (em 1996) que o JavaScript foi enviado à Ecma International e acabou se tornando o ECMAScript padronizado.

Seu domínio atual do mercado se deve em grande parte à inércia histórica.

Fonte: http://en.wikipedia.org/wiki/JavaScript#History

Rein Henrichs
fonte
2

Não tenho certeza, mas é uma linguagem de script leve e do lado do cliente. Eu acho que suas origens residem nos primeiros navegadores Netscape (embora eu possa estar errado). De fato, seu próprio nome foi alterado antes do lançamento para incluir a palavra "java", embora não tivesse nada a ver com java. Era uma tática rápida para ganhar popularidade na época.

Michael Giovanni Pumo
fonte
1

Tenho certeza de que tem muito a ver com história.

Mas também tenho certeza de que não quero que os sites possam executar linguagens de programação com todos os recursos, como python, no meu navegador. As implicações de segurança me afastariam de qualquer site como esse (ou eu teria que ter muita certeza de que a caixa de proteção do navegador era hermética).

Martin York
fonte
Isso não faz sentido. A TI depende do ambiente para decidir quais APIs estão disponíveis para uma linguagem de programação. Obviamente, se o Python fosse enviado nos navegadores, ele teria acesso às mesmas APIs que o Javascript possui agora (como o DOM), portanto, não haveria como criar nenhum dano.
217 Andrea
@ Andrea - você poderia argumentar que uma linguagem é tanto suas bibliotecas padrão quanto sua sintaxe e semântica. O Javascript não possui uma biblioteca padrão para E / S de arquivo, e isso é intencional, por motivos de segurança. O Python possui bibliotecas padrão para E / S de arquivos e para muitas outras coisas que podem ser consideradas problemas de segurança. Desaproveite isso e, sem dúvida, você não está mais lidando com Python. Há muito tempo, o Python tinha uma caixa de areia - lembro que ela estava lá na versão 1.5 - mas foi lançada no IIRC porque não era usada o suficiente e estava longe de ser estanque ao ar.
21311 Steve314
As bibliotecas padrão para E / S em Javascript estão sendo gravadas. Obviamente, eles não estão disponíveis no navegador. Estou apenas dizendo que se o Python fosse implementado no navegador, bibliotecas inseguras não estariam disponíveis. E, presumivelmente, você não sentiria falta deles, pois eles não devem ser usados ​​em um site.
Andrea
-2

"A predominância do JavaScript é um acidente histórico ou algo mais?"

Pessoalmente, sou da opinião de que o sucesso de JS é uma questão de design, tanto quanto muitos foram e continuará a ser odioso em admiti-lo e não apenas por um acidente ou simplesmente pelo fato de ter sido o primeiro garoto no playground.

Embora nomeado para atrair desenvolvedores Java e sintaxe como a sintaxe C baseada em Java também para atrair desenvolvedores Java, Brendan Eich tomou uma das decisões mais duras da história do www, que foi extraída principalmente do Scheme para a mecânica de linguagem real inspiração, algo que os desenvolvedores Java não parecem ter gostado muito (o que acho muito divertido).

O JavaScript usa herança prototípica altamente flexível / granular para OOP, possui fechamentos, tipos são 100% dinâmicos, funções são de primeira classe, permitindo que sejam transmitidos como qualquer outro objeto ou tipo de dados e sejam reutilizados em diferentes contextos e até são aplicados a objetos em tempo real como se tivessem sido declarados como membros reais do objeto desde o início. É praticamente lamentável ser usado para arquiteturas orientadas a eventos que precisam normalizar uma tonelada de lixo proprietário ou lidar com problemas de interface do usuário altamente não lineares.

No final dos primórdios da web, é o único idioma que já foi seriamente responsável pela normalização de navegadores por meio de uma guerra real de navegadores em que o Netscape e o IE tentaram fazer as coisas de maneira diferente de propósito, seguidos por mais de 10 anos de navegador. trégua em que o IE fez as coisas de maneira diferente porque o MS é preguiçoso e auto-arraigado em algumas práticas anticompetitivas justamente estúpidas, resultando em estagnação do navegador, e agora em um mundo em que os navegadores estão finalmente começando a concordar com a mesma especificação geral em relação ao HTML, O CSS e a API DOM com o IE estão apenas 2-3 anos atrás dos desenvolvimentos mais recentes, em vez de 10, devido ao Google e Mozilla eliminarem os compiladores JIT que faziam com que os números de desempenho do IE parecessem tão patéticos. O MS finalmente se envergonhou de modernizar adequadamente seus malditos navegadores.O IE9 é o primeiro a realmente atualizar seriamente o suporte à API do DOM para níveis que o Netscape estava suportando em 2000.

JS teve concorrência na forma de Java Applets e do ActionScript for Flash da Adobe. É sobre isso na frente séria dos contendores. MS tentou empurrar VB, mas falhou miseravelmente porque ... bem ... VB. Além disso, proprietário. Na verdade, havia muito mais sites em Flash do que a maioria das pessoas imagina. Você simplesmente não conseguia encontrar as coisas tolas nos mecanismos de pesquisa. Applets fizeram suas próprias coisas, e foi feio. Muito feio. JS foi a única linguagem que realmente resolveu o problema de trabalhar no contexto de vários navegadores por pessoas que não concordavam com quem estava definindo as especificações com as quais eles deveriam estar combinando.

Nos últimos anos, o JS tem explodido em um domínio de aplicação muito mais amplo. Em combinação com outras tecnologias da Web, ele é preparado para basicamente derrubar todas as outras soluções na frente móvel, uma vez que a tecnologia + web é realmente a única opção realista no momento, se você realmente deseja escrever um aplicativo e fazê-lo funcionar em tudo.

Então não, e sim, sou um grande fã, mas não acho que tenha derrotado todos os outros concorrentes no lado do cliente por acidente, assim como se tornar explosivamente popular fora do navegador, pode ser considerado um acidente agora. Antes do JS, não havia muitas linguagens semelhantes a Scheme por aí que não eram principalmente acadêmicas. Isso deu à JS algumas vantagens poderosas e as necessidades exclusivas do lado do cliente tornaram possível que essas vantagens se tornassem cristalinas lentamente.

Erik Reppen
fonte
Você menciona o esquema duas vezes sem nunca dizer como o JS se relaciona com o esquema. Certamente você não acha que JS possui macros, expressões S, recursão de cauda, ​​continuações ou qualquer outro recurso distintivo do Scheme - não é?
Gabe
@Gabe. Verifique o quarto bloco de texto. Encerramentos, digitação dinâmica e funções de primeira classe são bastante importantes. O fato de o JS usar sintaxe do tipo c não permitirá o uso de macros do esquema. Não é uma cópia característica a característica do esquema, mas certamente é influenciada por ela.
precisa
Então fechamentos e digitação dinâmica tornam a linguagem semelhante a um esquema? Isso significa que C # é semelhante ao esquema? E quanto a Ruby, Python e Perl? E por que Scheme, em vez de Lisp ou qualquer outra linguagem semelhante?
Gabe
@ Gabe Eu não sou especialista em Scheme, mas, na Wikipédia casual, eu diria que a combinação de escopo lexical, funções de primeira classe e fechamentos são os três que colocam o JS muito mais próximo do Scheme do que o Java. Caso contrário, eu estava apenas aceitando a palavra de Brendan Eich e assumindo que as funções adequadas de primeira classe eram o principal destaque.
Erik Reppen
OK, então o JS tem encerramentos (que, acredito, implica funções de primeira classe e escopo lexical) e tipagem dinâmica, como Scheme. Como o C # possui encerramentos, digitação dinâmica e uma forma limitada de expressões S, isso significa que o C # é ainda mais semelhante ao esquema do que o JS?
Gabe