Stack Overflow em Português Asked by Maniero on January 26, 2021
Já tivemos uma pergunta comparando duas linguagens que rodam em cima do JavaScript.
Acho que faltou comparar duas linguagens criadas com o propósito de criar aplicações para navegadores e resolver os problemas do JavaScript com abordagens bem diferentes. Escolhi estas duas porque elas possuem suporte de grandes fornecedores e competem pela atenção dos programadores.
Não é objetivo tentar fechar todas diferenças.
Dart é uma linguagem criada pela Google para criar grandes aplicações. O objetivo inicial era prover não só uma linguagem mas também uma infraestrutura melhor para desenvolver aplicações web. Mas como JavaScript é a língua franca da web Dart só pode viver se ficar o mesmo que CoffeScript, TypeScript e outras linguagens fizeram. Ela gera um código JS que pode rodar em qualquer navegador.
Como toda nova tecnologia precisa de um killer application para vingar, e mais recentemente o Flutter foi criado com ela, como caiu no gosto das pessoas Dart começou finalmente ser usada.
Certamente ela teria vantagens se pudesse rodar em sua própria máquina virtual mas questões mercadológicas impedem que isto aconteça. Ainda assim a linguagem foi criada sem preocupação com compatibilidade com JS. Isto pode dar mais poder para ela mas pode criar algumas dificuldades com código legado e interoperabilidade. Ela brilha mais quando roda fora de navegadores padrões da web onde pode usar sua própria VM.
TypeScript já foi criada desde o princípio não para ser uma linguagem nova, mas adicionar capacidades ao JavaScript existente. A sua ideia é que todo código JS seja automaticamente um código TypeScript válido. Isto limita um pouco a linguagem, não deixa resolver alguns problemas do JS mas é ótimo para a interoperabilidade.
TypeScript adicionou mais sintaxe do que semântica ao JavaScript. E as diferenças podem ser reduzidas já que o o próprio JS pode ter recursos novos que o TS colocou. Não sei como ficaria a compatibilidade disto no futuro. Talvez o objetivo não seja manter compatibilidade total para sempre mas só aproveitar o que já existe agora.
Como TypeScript parece ter mais adoção, há mais ferramentas disponíveis que Dart. Não só a Microsoft está investindo forte nisto, mas terceiros estão suportando a linguagem. Inclusive há muito apoio da comunidade para gerar anotações de tipo para bibliotecas JS diversas que melhoram muito a interoperabilidade (que não é impedida se não tiver as anotações, só não provê facilidades de verificação de tipo).
Alguns recursos disponíveis do TypeScript:
A linguagem já tem um roadmap e diversos outros recursos serão disponibilizados.
Dart provê a maioria destes recursos mas de uma forma diferente. Além disto a linguagem já está mais avançada em outros recursos e possui algumas coisas que só são possíveis porque a compatibilidade de sintaxe não é necessária. Além disto ela fornece uma biblioteca própria e melhor manipulação do DOM, o que nunca foi o objetivo de TypeScript.
Algumas das coisas que existem em Dart que não existem em TypeScript:
Enquanto é possível ver poucas diferenças entre o código TypeScript e JS, na verdade muito do código TS desaparece por completo após a geração do código algo em JS, o código JS gerado por Dart difere bastante e possui uma estrutura um pouco estranha para um programador acompanhar. É difícil mexer no código gerado por Dart mas se o programador quiser depois de criar e compilar um código em TS ele pode facilmente continuar mexendo no JS (não que seja interessante).
Fora os motivos psicológicos suscitados por uma ser da Google, outra ser da Microsoft, ambas melhoram a forma de desenvolver grandes aplicações. Elas não ajudam muito para fazer pequenos scripts. Ambas adicionam recursos importantes para organizar grandes bases de código e resolvem alguns problemas do JS. Dart faz isto de uma forma mais intensa e mais eficaz. TypeScript aproveita o que já existe.
Dart tem a intenção de ser uma alternativa ao JavaScript. TypeScript é apenas um compilador - cuja principal função é ser um verificador - e um sistema de tipos em cima do JavaScript. Ainda que ambas gerem código JS como alvo.
O tempo passou, Dart foi reposicionado e Flutter o salvou, hoje a linguagem é usada para fazer clientes de formas geral.
As duas linguagens receberam muitas atualizações nos últimos anos e elas melhoraram muito, algumas das avaliações feitas em 2015 não valem mais para 2020.
Correct answer by Maniero on January 26, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP