J'ai consulté le site très brièvement et suis devenu curieux. Y at-il des avantages à utiliser Dart? Est-ce juste un remplacement pour JavaScript?
Cela ressemble à du Java plus simple. En écrivant beaucoup de C # au travail, la langue ressemble beaucoup à ce que je suis habitué, donc apprendre la syntaxe ressemble à un jeu d'enfant. Quelqu'un at-il des opinions ou des expériences avec la langue?
(Comparé à CoffeeScript (= je ne fais pas la syntaxe Ruby), la syntaxe me semble plus familière).
javascript
dart
marko
la source
la source
Is there any advantages of using Dart?
signifie Avantage sur quoi et comment mesuré ? Il existe toute une gamme de langages qui compilent en JavaScript. La plupart d'entre eux font beaucoup mieux que Dart. Certains font la plupart des choses mieux que Dart. Et par exemple, si vous utilisez C #, alors ScriptSharp pourrait être intéressant pour vous. Bien que, parmi toutes les langues compilant en JavaScript, ce soit loin d’être mon premier choix, cela présenterait pour vous une transition très facile, permettant même peut-être de porter du code existant sans douleur.Réponses:
Merci pour votre question! Clause de non-responsabilité, je travaille dans l'équipe Dart.
Le principal avantage de Dart aujourd'hui est probablement sa familiarité avec les développeurs C #, Java, C ++ et la plupart des développeurs JavaScript. De nombreux développeurs ont des attentes vis-à-vis de leur langage (OO basé sur la classe, portée lexicale, syntaxe familière) et de leurs outils (complétion de code, refactoring, navigation de code, débogage) que Dart vise à atteindre et à dépasser.
Voici quelques choses que j'aime dans la langue:
Types statiques optionnels. Lorsque je suis en train de prototyper ou d'écrire simplement de petits scripts, je n'utilise pas une tonne de types statiques. Je n'ai simplement pas besoin d'eux et je ne veux pas m'embourber avec la cérémonie. Cependant, certains de ces scripts évoluent vers de plus gros programmes. À mesure que les scripts évoluent, j'ai tendance à vouloir des classes et des annotations de type statique.
Innocent jusqu'à preuve du contraire. Dart s'efforce de minimiser les situations entraînant une erreur lors de la compilation. De nombreuses conditions dans Dart sont des avertissements qui n'arrêtent pas l'exécution de votre programme. Pourquoi? Conformément au mode de développement Web, il est impératif de permettre aux développeurs d’essayer un peu de code, de cliquer sur reload et de voir ce qui se passe. Le développeur ne devrait pas avoir à prouver au préalable que le programme complet est correct avant de tester un élément du code.
Portée lexicale. C'est génial, si vous n'y êtes pas habitué. En termes simples, la visibilité des variables, et même celle-ci , est définie par la structure du programme. Cela élimine une classe de casse-tête dans la programmation Web traditionnelle. Pas besoin de relier les fonctions pour garder cela à ce que vous pensez ou attendez.
De vraies classes cuites dans la langue. Il est clair que la plupart des développeurs souhaitent travailler en classe, car la plupart des frameworks de développement Web offrent une solution. Cependant, une "classe" du framework A n'est pas compatible avec le framework B, dans le développement Web traditionnel. Dart utilise les classes naturellement.
Fonctions de haut niveau. Une partie douloureuse de Java est que tout doit être mis dans une classe. C'est un peu artificiel, surtout lorsque vous voulez définir quelques fonctions utilitaires. Dans Dart, vous pouvez définir des fonctions au niveau supérieur, en dehors de toute classe. Cela rend la composition de la bibliothèque plus naturelle.
Les classes ont des interfaces implicites. L'élimination des interfaces explicites simplifie le langage. Plus besoin de définir IDuck partout, tout ce dont vous avez besoin maintenant est une classe Canard. Chaque classe ayant une interface implicite, vous pouvez créer un
MockDuck implements Duck
Constructeurs nommés. Vous pouvez donner des noms aux constructeurs, ce qui aide vraiment à la lisibilité. Par exemple:
var duck = new Duck.fromJson(someJsonString)
Constructeurs d'usine. Le modèle d’usine est assez courant, et c’est agréable de voir cela dans le langage. Un constructeur d'usine peut renvoyer un singleton, un objet d'un cache ou un objet d'un sous-type.
Isole. L'époque du partage de l'état mutable entre les threads est révolue (une technique sujette aux erreurs). Un isolat Dart est un segment de mémoire isolé, capable de s'exécuter dans un processus ou un thread séparé. Isole la communication en envoyant des messages sur les ports. Isole le travail dans la machine virtuelle Dart et peut être compilé pour les travailleurs Web dans les applications HTML5.
Dart compile en JavaScript. Cela revêt une importance cruciale, car JavaScript est la lingua franca du Web. Les applications de fléchettes doivent parcourir le Web moderne.
Fort outillage. Le projet Dart contient également un éditeur. Vous y trouverez la complétion de code, le refactoring, des solutions rapides, la navigation de code, le débogage, etc. En outre, IntelliJ a un plugin Dart.
Bibliothèques Vous pouvez organiser le code Dart dans des bibliothèques pour un espacement des noms et une réutilisation plus faciles. Votre code peut importer une bibliothèque et les bibliothèques peuvent réexporter.
Interpolation de chaîne. Ceci est juste une fonctionnalité intéressante, facilitant la composition d'une chaîne:
var msg = "Hello $friend!";
noSuchMethod Dart est un langage dynamique, et vous pouvez gérer des appels de méthode arbitraires avec
noSuchMethod()
.Génériques. Etre capable de dire "ceci est une liste de pommes" donne à vos outils beaucoup plus d’informations pour vous aider à détecter les erreurs potentielles plus tôt. Heureusement, les génériques de Dart sont plus simples que ce à quoi vous êtes probablement habitué.
Surcharge de l'opérateur. Les classes de fléchettes peuvent définir un comportement pour des opérateurs tels que
+
ou-
. Par exemple, vous pourriez écrire du code commenew Point(1,1) + new Point(2,2)
.Cela dit, il existe beaucoup plus de bibliothèques JavaScript.
Personnellement, je pense qu’il existe de nombreuses langues sur le Web. Si l'application est géniale et qu'elle fonctionne dans la majorité des navigateurs modernes, le langage dans lequel elle est écrite importe peu. Tant que vous, le développeur, êtes heureux, productif et que vous lancez sur le Web, c'est ce qui importe! :)
la source
C'est un point sur Dart. Javascript est considéré comme une langue maladroite avec quelques idiomes généraux. Dans un langage comme Java, il existe souvent une façon naturelle d'aborder un problème. Par exemple, si vous conservez un inventaire de table, en Java ou en C #, vous créerez une classe Table.
Javascript n'a pas de classes, vous pouvez utiliser des prototypes mais ils se sentent maladroits et ne fournissent pas une structure et des outils d'encapsulation aussi puissants. (Du moins pas sans faire de cascades.) L'héritage, la composition, etc. est délicat avec les prototypes Javascript. C'est pourquoi la plupart des gens utilisent des cartes de hachage simples pour stocker des données. Ou ils utilisent des bibliothèques tierces comme un prototype qui vous donne une expérience de classe.
Donc, la commodité est une chose, structurer l’autre. Javascript ne s'adapte pas bien parce qu'il n'y a pas de moyen standard de structurer des applications à grande échelle. Cependant, actuellement, ces bibliothèques tierces deviennent très populaires. (Comme backbone.js)
Dart est quelque chose à résoudre. Il est là pour vous donner la commodité structurelle de Java et, en outre, il ne possède pas toutes ces fonctionnalités JS maladroites. (La plupart d'entre eux étaient liés à un typage faible.)
Donc, la réponse est oui: classes, héritage, ...: "POO traditionnel". (La plupart des applications Web JS de realworld utilisent la méthode de rappel basée sur les rappels de jQuery.) Et elle utilise une forme de typage statique, mais ce n’est pas le principal argument de vente.
BTW: vous voudrez peut-être lire ce mailing "interne" de Google daté de 2010: Future of Javascript
la source
Pour moi, cela me donne la possibilité de structurer mon code mieux que JavaScript avec une portée et des classes.
C'est similaire à Java et JavaScript et avec Dart Editor, j'avais une adaptation proche de zéro. J'ai commencé à coder tout de suite.
var ws = new [Moz]WebSocket
devoir s'occuper de différents navigateurs est ennuyant. Dart compile en code JavaScript compatible avec les navigateurs populaires.Mon défi consiste principalement à interfacer avec du code JavaScript. Je trouve en quelque sorte un moyen de le contourner, mais ce serait mieux si cela faisait partie de Dart.
la source
Depuis le début du Web 2.0, l’approche Java / C # a définitivement pour objectif de frapper JS. Cela est dû à une différenciation artificielle (ou très réelle et nécessaire) entre les langages côté client et les langages côté serveur. Je pense que c'est ainsi que les langues côté serveur peuvent rester sous le "contrôle" des domaines de problèmes principaux des applications Web et délimiter le code moins sérieux (code ui) du code commercial (côté serveur). Je pense aussi que Java aime rester un noyau serveur car il a perdu la guerre de l'interface graphique avec les applets, principalement à cause de Flash et HTML 5. Maintenant, vous avez RedTamarin, un projet NodeJS-esque AS3 faisant allusion à un futur pluriel mélangé de paradigmes unifiés avant et arrière. .
la source