Enquanto a pergunta era "Os objetivos das linguagens são os mesmos?", A verdadeira questão é: "Como podemos melhorar a programação da Web de onde estamos?" .
Ambos os projetos tentam fazer isso considerando
linguagem de programação (o TypeScript dá um passo pequeno, mas muito limpo, o Dart faz o movimento mais revolucionário que ainda está em movimento)
interoperabilidade com o código js existente (transição 0 no TypeScript que é compilada com js, complicada no Dart, já que 2 VMs conversam entre si)
práticas de engenharia de software (somente Dart, componentes da Web e shadow dom)
Nos últimos 3 dias, mergulhei profundamente no Dart e depois no TypeScript. Minha base de código do CoffeeScript foi para as linhas de código dos anos 2000, muito para serem manuseadas com o adorável, mas muito macio CoffeeScript. Os problemas que enfrentei foram o fato de o CoffeeScript não possuir recursos que as linguagens projetadas para programação de médio a grande porte tenham: interfaces, módulos, segurança de tipo. Mas havia uma ainda muito mais grave problema com café e js: Os js "este ponteiro" estranheza afetou minha sanidade e não CoffeeScript não ajuda nada aqui.
Então, aqui estão meus resultados após 3 dias de avaliação e uso:
Dardo
Passou por todo o tutorial, lendo um livro, percorrendo o segundo livro e testando as demos. Eu pensei, Dart, que é o futuro . Depois, tentei migrar meu aplicativo para o Dart. Foi aí que meu entusiasmo caiu de 100 para 10. Aqui está o porquê:
O Dart Editor é a única maneira de programar o Dart. Embora existam plugins para Sublime Text, eles não fornecem recursos como intellisense, conclusão de código (corrija-me se estiver errado). O Dart Editor, no entanto, possui qualidade pré-alfa. Embora ele suporte coisas mágicas super-legais, como atualizar a página da web quando você edita o arquivo CSS (! Muito legal), ele trava ou trava várias vezes por minuto. Então, você digita 5 letras e 2 vezes precisa esperar 2 ou 15 segundos entre a digitação. E eu tinha um projeto com algumas linhas de código, por isso não queria esperar o que acontece quando as linhas de 1000s chegaram. Movi um arquivo de uma pasta para outra dentro do Dart Editor, travar. Depuraçãocom o Dart Editor, à primeira vista, é melhor do que todas as ferramentas de depuração de js que conheço (o cromo é a minha escolha), mas ainda há muitas coisas faltando: nenhuma janela imediata (isso torna a depuração de js muito melhor no momento), sem relógios.
Política e possibilidades de fuga : Alguns dizem que Apple, MS e Firefox nunca fornecerão VMs Dart. Bem, não tenho tanta certeza, mas pelo menos para a Apple isso parece no momento muito certo. Para os outros, é mais provável que o contrário. Portanto, não há problema, podemos converter Dart em JavaScript. A maneira como essa integração funciona é realmente ótima. O Dart mantém um stub js que mantém o código js conectado ao Dart Editor; portanto, uma print()
declaração ainda aparece no Dart Editor, legal. Mas aqui vem o mas: a pegada desse código convertido é alta. 150kB ou mais (antes da minificação). Eu não cavei muito no tamanho exato, então não me preste atenção nisso.
Maturidade da linguagem . Além das questões muito sérias com o Dart Editor aparecendo na minha cara três vezes por minuto, também achei inaceitável que todas as fontes do código Dart encontradas usassem um Dart diferente. O idioma muda todos os dias. Você encontrou um post de 5 semanas atrás? Está desatualizado. Você tenta as amostras do tutorial do Google? Pelo menos 1 amostra não é compilada desde que uma API foi alterada. Até coisas mundanas, como anexar um evento a um elemento DOM, estão em boa jogada .
A integração com as bibliotecas js existentes está um pouco envolvida. 2 VMs precisam se comunicar aqui, é complicado.
Como conclusão, você não pode usar seriamente o Dart a partir de hoje, e mergulhar nele não é muito divertido devido a 1 e 3. Ambos os pontos desaparecerão com o tempo. Sobre o ponto 2, o Google publicou benchmarks de desempenho há alguns dias, demonstrando que seus js compilados são melhores que os js manuscritos. Meus cumprimentos, ótimo trabalho. O tempo de carregamento ainda pode estar atrasado devido ao problema de pegada, como dito. No entanto, se o código de pegada for usado por muitos sites, ele poderá estar disponível em cache e pronto, desaparecerá também.
Portanto: considero o Dart um ótimo projeto, usá-lo no momento traz uma boa parte de riscos imprevisíveis e levará este ano para que ele atinja um bom nível estável.
TypeScript
Avaliar o TypeScript é muito fácil, leva 1 ou 2 horas e você sabe tudo. Lendo o documento de especificação da linguagem e um pequeno livro (revelado o TypeScript), eu sabia tudo e comecei a programar. Fiquei surpreso ao descobrir que as adições do TypeScript ao JavaScript preenchem todas as sérias necessidades que eu tive para aprimorar a programação do meu cliente . Aqui estão os destaques:
Interfaces . Encapsulamento e interfaces permitem estruturar meu código facilmente. Perfeito!
Estado da classe. . O TypeScript permite expressar o estado que as instâncias de uma classe carregam explicitamente, ou melhor, ela a impõe. Este é um grande passo melhor em comparação com js ou café.
this
chamar loucura atenuada . Dentro das funções das setas, o TypeScript torna o this
ponteiro como qualquer cidadão que se comporta normalmente.
Editor, Intellisense . O TypeScript é fornecido com um intellisense 100% superior perfeito que reage na faixa de micro ou milissegundos, conforme usado no Visual Studio ao programar C #. Também existem cabeçalhos TypeScript para todas as bibliotecas js importantes . Ótimo ótimo ótimo.
Experiência e risco . O uso do TypeScript oferece risco zero, a linguagem é claramente definida, perfeitamente estável, apenas com açúcar, nada imprevisível.
Na verdade, essas melhorias me dão tudo o que eu precisava. A única coisa que gostaria de ver no futuro são coleções genéricas. Mas isso é amendoim.
E o desempenho? Embora eu me considere uma aberração no desempenho, não acredito que exista algum projeto que faça a escolha da tecnologia aqui com base no desempenho. Ambos estão na liga js.
Se você está interessado no futuro da programação da Web, ambos são grandes esforços, o TypeScript é muito mais pragmático e utilizável agora, o Dart é um projeto de laboratório muito interessante que será utilizável quando editores e depuradores maduros estiverem disponíveis e o escopo dos projetos possível com isso vai depender da política.
De qualquer forma, os três dias de avaliação foram divertidos e aprendi muito; se você encontrar tempo, leva 1 dia para o Dart e 2 horas para o TypeScript dar sua própria opinião. Tente.
Atualização de outubro de 2014
Já faz um tempo e ex post parece que a suposição de que o Typescript é a rota segura e estável a seguir estava certa. Acabei de encontrar uma declaração (muito) proeminente sobre Typcript, Dart and Closure:
Estou interessado no desafio da programação da Web em geral há bastante tempo. Acredito que o Google Closure ainda seja a melhor opção para o desenvolvimento em larga escala de JavaScript / Web, mas que será substituído por algo menos detalhado. Embora o Dart mostre uma promessa considerável, ainda estou consternado com o tamanho do JavaScript que ele gera. Por comparação, se o TypeScript puder ser traduzido diretamente para JavaScript que pode ser compilado usando o modo avançado do Closure Compiler, então podemos ter todos os benefícios do JavaScript otimizado do Closure sem a verbosidade. Além disso, como o TypeScript é um superconjunto de JavaScript, acredito que suas extensões de sintaxe possam entrar no padrão ECMAScript em algum momento,
http://blog.bolinfest.com/2013/01/generating-google-closure-javascript.html
Michael Bolin é um herói de front end de longa data (ex) google (ex) fb, também envolvido no fechamento do google (adquira seu livro sobre Closure).
Google Traceur
A vontade do Google de viver o ECMA Script 6 hoje é seu projeto Traceur:
https://github.com/google/traceur-compiler
Comparado ao Typescript, o suporte a ferramentas está provavelmente muito atrasado a partir de hoje. No entanto, o lado positivo é muito mais rápido na adoção de aprimoramentos futuros demais da linguagem js, como iteradores ou compreensões.
Fluxo do Facebook, Google AtScript
fornecer recursos semelhantes ao TypeScript.
"Podemos nos perguntar o que há com essas diferentes soluções de verificação de tipo JavaScript e o que fazer sobre isso. Uma boa notícia é que Microsoft, Facebook e Google estão colaborando com elas, de acordo com Jonathan Turner, da Microsoft:
A equipe TypeScript está trabalhando com as equipes Flow e AtScript para ajudar a garantir que os recursos que já foram criados pela comunidade de digitação JavaScript possam ser usados nessas ferramentas. Há muito que esses projetos podem aprender um com o outro, e estamos ansiosos para trabalhar juntos daqui para frente e criar as melhores ferramentas possíveis para a comunidade JavaScript. A longo prazo, também trabalharemos para dobrar os melhores recursos dessas ferramentas no ECMAScript, o padrão por trás do JavaScript. "
artigo da infoq sobre fluxo fb