Eu verifiquei o site muito brevemente e fiquei curioso. Existe alguma vantagem em usar o Dart? É apenas um substituto para JavaScript?
Parece Java mais simples. Ao escrever bastante C # no trabalho, o idioma se parece muito com o que estou acostumado, então aprender a sintaxe parece muito fácil de aprender. Alguém tem alguma opinião ou experiência com o idioma?
(Comparado ao CoffeeScript (= não estou fazendo a sintaxe do Ruby), a sintaxe me parece mais familiar).
javascript
dart
marko
fonte
fonte
Is there any advantages of using Dart?
significa isso ? Vantagem sobre o que e medido como ? Há uma variedade de idiomas que são compilados para JavaScript. A maioria deles faz algo muito melhor que o Dart. Alguns fazem a maioria das coisas melhor que o Dart. E, por exemplo, se você faz C #, o ScriptSharp pode ser interessante para você. Embora entre todas as linguagens que compilam o JavaScript esteja longe de ser minha primeira escolha, você apresentaria uma transição muito fácil, possivelmente até permitindo portar códigos existentes sem dor.Respostas:
Obrigado pela sua pergunta! Isenção total, trabalho na equipe do Dart.
Provavelmente, a melhor vantagem que o Dart tem hoje é que ele é familiar para desenvolvedores de C #, Java, C ++ e a maioria dos desenvolvedores JavaScript. Muitos desenvolvedores têm um conjunto de expectativas em torno de seu idioma (OO baseado em classe, escopo lexical, sintaxe familiar) e suas ferramentas (conclusão de código, refatoração, navegação de código, depuração) que o Dart pretende atender e exceder.
Aqui estão algumas coisas que eu gosto sobre o idioma:
Tipos estáticos opcionais. Quando estou fazendo prototipagem ou simplesmente escrevendo pequenos scripts, não uso muitos tipos estáticos. Só não preciso deles e não quero ficar atolado com a cerimônia. No entanto, alguns desses scripts evoluem para programas maiores. À medida que os scripts são dimensionados, eu tendem a querer classes e anotações de tipo estático.
Inocente até que se prove a culpa. O Dart se esforça para minimizar as situações que resultam em um erro em tempo de compilação. Muitas condições no Dart são avisos, que não impedem a execução do seu programa. Por quê? De acordo com a moda do desenvolvimento da Web, é imperativo permitir que os desenvolvedores experimentem um pouco de código, carreguem em recarregar e vejam o que acontece. O desenvolvedor não precisa primeiro provar que o programa inteiro está correto antes de testar um canto do código.
Escopo lexical. Isso é incrível, se você não está acostumado. Simplificando, a visibilidade das variáveis, e mesmo isso , é definida pela estrutura do programa. Isso elimina uma classe de quebra-cabeças na programação tradicional da web. Não é necessário vincular novamente as funções para manter isso como você pensa ou espera.
Aulas reais assadas no idioma. É claro que a maioria dos desenvolvedores deseja trabalhar em sala de aula, pois a maioria das estruturas de desenvolvimento da Web oferece uma solução. No entanto, uma "classe" da estrutura A não é compatível com a estrutura B, no desenvolvimento tradicional da web. Dart usa classes naturalmente.
Funções de nível superior. Uma parte dolorosa do Java é que tudo precisa ser colocado em uma classe. Isso é um pouco artificial, especialmente quando você deseja definir algumas funções utilitárias. No Dart, você pode definir funções no nível superior, fora de qualquer classe. Isso torna a composição da biblioteca mais natural.
Classes têm interfaces implícitas. A eliminação de interfaces explícitas simplifica o idioma. Não é mais necessário definir o IDuck em todos os lugares, tudo o que você precisa agora é de uma classe Duck. Como toda classe tem uma interface implícita, você pode criar um
MockDuck implements Duck
Construtores nomeados. Você pode dar nomes aos construtores, o que realmente ajuda na legibilidade. Por exemplo:
var duck = new Duck.fromJson(someJsonString)
Construtores de fábricas. O padrão de fábrica é bastante comum e é bom ver isso inserido no idioma. Um construtor de fábrica pode retornar um singleton, um objeto de um cache ou um objeto de um subtipo.
Isola. Longe vão os dias de compartilhamento de estado mutável entre threads (uma técnica propensa a erros). Um isolado Dart é um heap de memória isolado, capaz de executar em um processo ou thread separado. Isola a comunicação enviando mensagens pelas portas. Isola o trabalho na VM Dart e pode ser compilado para trabalhadores da Web em aplicativos HTML5.
O Dart é compilado para JavaScript. Isso é extremamente importante, pois o JavaScript é a língua franca da web. Os aplicativos Dart devem ser executados na web moderna.
Ferramentas fortes. O projeto Dart também envia um editor. Você encontrará a conclusão, refatoração, correções rápidas, navegação de código, depuração e muito mais. Além disso, o IntelliJ possui um plug-in Dart.
Bibliotecas. Você pode organizar o código Dart em bibliotecas, para facilitar o espaçamento de nomes e a reutilização. Seu código pode importar uma biblioteca e as bibliotecas podem reexportar.
Interpolação de cadeias. Este é apenas um recurso interessante, facilitando a composição de uma string:
var msg = "Hello $friend!";
noSuchMethod Dart é uma linguagem dinâmica e você pode lidar com chamadas de método arbitrárias com
noSuchMethod()
.Genéricos. Ser capaz de dizer "esta é uma lista de maçãs" fornece muito mais informações às suas ferramentas para ajudá-lo e detectar erros potenciais mais cedo. Felizmente, porém, os genéricos do Dart são mais simples do que você provavelmente está acostumado.
Sobrecarga do operador. As classes Dart podem definir o comportamento para operadores como
+
ou-
. Por exemplo, você pode escrever código comonew Point(1,1) + new Point(2,2)
.Dito tudo isso, existem muito mais bibliotecas JavaScript por aí.
Pessoalmente, acredito que há espaço na web para muitos idiomas. Se o aplicativo é incrível e é executado na maioria dos navegadores modernos, não me importo com o idioma em que ele está escrito. Desde que você, o desenvolvedor, seja feliz, produtivo e inicie na Web, isso é o que importa! :)
fonte
Esse é um ponto sobre o Dart. Javascript é considerado uma linguagem estranha com poucos idiomas gerais. Em uma linguagem como Java, geralmente há uma maneira natural de abordar um problema. Por exemplo, se você mantiver um inventário de tabela, em Java ou C #, você criará uma classe Tabela.
O Javascript não possui classes, convém usar protótipos, mas eles se sentem estranhos e não fornecem ferramentas de estrutura e encapsulamento tão fortes. (Pelo menos não sem truques.) Herança, composição etc. são estranhas com os protótipos Javascript. É por isso que a maioria das pessoas usa mapas simples de hash para armazenar dados. Ou eles usam bibliotecas de terceiros como protótipo, o que oferece uma experiência de classe.
Portanto, conveniência é uma coisa, estrutura a outra. O Javascript não tem uma boa escala porque não existe uma maneira padrão de estruturar aplicativos em grande escala. No entanto, atualmente, essas bibliotecas de terceiros estão se tornando realmente populares. (Como backbone.js)
Dardo é algo para resolver isso. Está lá para oferecer a conveniência estrutural do Java e, além disso, ele não possui todos esses recursos JS desajeitados. (A maioria deles está relacionada à digitação fraca.)
Portanto, a resposta é sim: classes, herança, ...: "OOP tradicional". (A maioria dos webapps JS do mundo real usa o retorno de chamada do jQuery, abordado como estrutura principal.) E possui uma forma flexível de digitação estática, mas esse não é o principal ponto de venda.
BTW: você pode querer ler esta correspondência "interna" do Google de 2010: Futuro do Javascript
fonte
Para mim, isso me dá a chance de estruturar meu código melhor que o JavaScript com escopo e classes.
É semelhante ao Java e JavaScript e, com o editor Dart, tive quase nenhuma adaptação. Comecei a codificar imediatamente.
var ws = new [Moz]WebSocket
ter que atender a diferentes navegadores é irritante. O Dart compila para código JavaScript compatível com navegadores populares.Meu desafio é principalmente fazer interface com o código JavaScript. De alguma forma, encontro maneiras de contornar isso, mas seria melhor se fizesse parte do Dart.
fonte
A abordagem Java / C # é definitivamente tendenciosa ao derrubar o JS desde o início da web 2.0. Isso ocorre devido a uma diferenciação artificial (ou muito real e necessária) entre as linguagens do lado do cliente e as linguagens do lado do servidor. Eu acho que isso é para que a linguagem do lado do servidor possa permanecer no 'controle' dos principais domínios problemáticos dos aplicativos da web e para demarcar o código menos sério (código da interface do usuário) do código comercial (do lado do servidor). Também acho que o Java adora continuar sendo um kernel do lado do servidor, pois perdeu a guerra da GUI com os applets devido principalmente ao Flash e ao HTML 5. Agora você tem o RedTamarin um projeto AS3 no estilo NodeJS, aludindo a um futuro combinado plural de paradigmas unificados de front e back-end .
fonte