Qu'est-ce que Dart et pourquoi devriez-vous vous en soucier?

Dans ce didacticiel, je vais vous présenter le nouveau langage de programmation Web de Google, Dart, et vous expliquer pourquoi vous devriez l’aimer et ce que vous devez savoir à ce sujet. En savoir plus sur ce nouveau langage et en tirer des opinions - remplacera-t-il réellement JavaScript?


Qu'est-ce que Dart?

Tout droit de la bouche du cheval (qui se trouve ici):

Dart est un langage de programmation purement orienté objet basé sur des classes, à héritage unique. Dart est facultativement dactylographié… et supporte reifigénériques et interfaces.
Les programmes de fléchettes peuvent être vérifiés statiquement. Le vérificateur statique signalera
certaines violations des règles de type, mais ces violations n'abandonnent pas la compilation
ou empêcher l'exécution.

Si c'est un super tas de charabia fumant à la vapeur, permettez-moi de paraphraser ce qui précède.

Basé sur la classe: Dart s'attend à ce que vous utilisiez des classes. Bien que JavaScript soit basé sur les classes, vous ne pouvez pas écrire Dart sans écrire des classes..

Patrimoine unique: Les classes peuvent étendre d'autres classes, mais seulement une à la fois. C'est une structure commune dans la programmation orientée objet. Quelques rares langues prennent en charge l'héritage multiple, mais le consensus général est que cela cause plus de problèmes qu'il n'en résout. Par conséquent, la plupart des langages POO optent pour l'héritage simple..

Langage de programmation orienté objet: Cette instruction est un peu redondante, étant donné le bit "basé sur la classe" d’avant. Mais c’est important: Dart fait de la POO de bout en bout. En fait, cela rappelle plutôt Java (pas JavaScript; Java), qui est aussi basé sur les classes.

Tapé éventuellement: La plupart des langues sont tapées ou non. JavaScript, par exemple, n'est pas. Lorsque vous définissez une variable, elle ne sera pas typée. Vous pouvez le définir sur un Chaîne, puis à un Nombre, et personne ne va se plaindre, je volonté). De plus, vous pouvez appeler Tableau méthodes sur cette variable, et vous n'aurez aucun problème jusqu'à ce que vous exécutiez réellement cette ligne de code. En revanche, Java est tapé. Chaque variable doit être déclarée avec un type, tel que Chaîne ou int. Et quand une variable est tapée, vous ne pouvez pas y insérer un type de valeur différent. Et si vous avez essayé d'appeler une méthode qui n'existe pas sur ce type, le compilateur générera une erreur, vous permettant de connaître votre erreur avant d'exécuter votre code. C et ses variantes sont d’autres langages typés, alors que Ruby et Python sont d’autres langages non typés.

Typiquement, optionnel signifie, comme vous pouvez le deviner maintenant, que vous avez l’option de déclarer un type pour les variables. C'est aussi simple que cela: vous pouvez laisser le type désactivé et le compilateur n'effectuera aucune vérification supplémentaire. Si vous fournissez un type, le compilateur vous aidera avec les erreurs. ActionScript est un exemple d'un autre langage éventuellement typé..

C’est un geste plutôt intelligent, probablement destiné à accélérer l’adoption. Les programmeurs de fléchettes seront probablement des programmeurs JavaScript qui feront le saut. La prise en charge d'un langage non typé simplifie l'apprentissage de JavaScript, tout en offrant une fonctionnalité qui, de l'avis de nombreux programmeurs, est essentielle pour une programmation sérieuse, qui peut être reprise plus tard..

Génériques réifiés: Les génériques sont une fonctionnalité de langage qui vous permet de taper les éléments d'une collection. Par exemple, un Tableau en JavaScript ne peut pas garantir que les objets qu'il contient sont d'un type spécifique (mis à part le fait que JavaScript n'est pas un langage typé). Cependant, les génériques vous permettent de spécifier que chaque élément d'un fichier Tableau - ou tout autre type de collection - doit être d'un certain type, peut-être un Chaîne. Ainsi, si vous essayez d’insérer un Nombre dans le Tableau, vous pouvez recevoir des avertissements. ReifiLes génériques génériques vont encore plus loin et permettent à ce type de sécurité de dépasser le compilateur. L'intégrité du type à l'exécution est préservée.

Interfaces: Une interface est une technique pratique orientée objet. Il définit un type sans définir de fonctionnalité. Il est difficile de résumer ses utilisations en une phrase ou dix, il suffit de dire qu’elles font partie intégrante des techniques avancées (et propres) de programmation orientée objet (notamment les modèles de conception). Une fois que vous jouez aux interfaces, vous regretterez leur absence dans d'autres langues.

Vérifié statiquement: Cela remonte à la dactylographie. Lorsque le typage est en cours d'utilisation, une variable de type est considérée comme "typée statiquement" et, en tant que telle, le type ne peut pas être modifié une fois qu'il a été déclaré. Cela permet au compilateur (ou "vérificateur statique") de faire des hypothèses sur vos intentions avec votre code; c'est-à-dire, si vous déclarez une variable en tant que Chaîne, alors vous ne devriez pas essayer d'appeler changeTimeZone dessus. Si vous avez fait (peut-être vous avez tapé dans ce que vous pensée était cette variable tenant la Rendez-vous amoureux objet), le compilateur peut vous avertir de l’erreur sans avoir à exécuter le code.


Alors, qu'est-ce que Dart est vraiment??

Oui, je devais fournir l'explication "officielle" de Dart. Mais cela peut ou peut ne pas vous satisfaire. Voici ce que Dart est, avec le développeur web typique à l'esprit.

Dart est le remplacement de JavaScript par Google. Cette annonce a été annoncée en octobre 2011 et l'objectif général est de fournir les mêmes outils que JavaScript, mais uniquement comme outils électriques. Comme expliqué à l'étape précédente, le programmeur JavaScript typique ne connaît pas beaucoup de fonctionnalités orientées objet. Mais la plupart des programmeurs qui connaissent ces fonctionnalités les défendront comme étant indispensables à un développement sérieux..

En bref, Google estime que JavaScript n’est pas à la hauteur de la tâche qui consiste à être un "vrai" langage de programmation, étant donné la quantité de travail lourd qu’il effectue depuis que l’iPhone a percé un trou dans le zeppelin de Flash..

Google espère que Dart sera supporté nativement par tous les principaux navigateurs à long terme. Cela ne se produit évidemment pas pour le moment, étant donné que Dart lui-même en est encore au stade de la publication anticipée et que nous ne pouvons pas nous attendre à ce que Apple, Microsoft ou Mozilla se joignent à nous pour le moment. Cependant, ce qui fait que Dart mérite d'être regardé maintenant, c'est que Google a fourni un compilateur permettant de convertir le code Dart en JavaScript..

Personnellement, c’est quelque chose que j’attends depuis que j’ai recours à JavaScript, issu d’ActionScript. Dites ce que vous voulez à propos de Flash (et rassurez-vous, je l’ai probablement dit aussi), mais ActionScript 3 est un bon langage. Il a été prouvé que passer des versions AS3 avancées à JavaScript provoquait des jurons. En fait, j'ai utilisé mon propre compilateur JavaScript (je ne suis pas allé très loin et je suis assez heureux d'abandonner le projet) et je voulais quelque chose qui puisse au moins me permettre de développer des subtilités, telles que de vraies classes, interfaces et types , même s’il a été compilé en JavaScript prototypique et non typé. Le processus de compilation peut intercepter certaines erreurs avant d’exécuter le projet, ce qui représente un gain de temps considérable..

Donc, que Google réussisse ou non, il est aujourd'hui possible d'écrire des projets Dart pour le Web, et nous le ferons à la fin de ce didacticiel. J'espère vous convaincre en cours de route que Dart est plutôt prometteur.


Quel est le problème avec Dart?

Maintenant que vous êtes tous excités à propos de "JavaScript 2.0", maintenant pour la dure vérité. Seul Google prévoit d’intégrer la prise en charge de Dart dans son navigateur. Personne d'autre n'a exprimé d'intérêt pour cela. En fait, pas mal de déclarations ont été faites contre Dart, ou du moins l'idée de soutenir Dart de manière native, par les constructeurs de navigateurs eux-mêmes.

Et, bien que les projets Dart puissent être compilés en JavaScript, ce processus comporte nécessairement des frais généraux. Le compilateur Dart ne ressemble pas vraiment au compilateur CoffeeScript, qui est plutôt un processus un-à-un. Dart est son propre langage, avec des bibliothèques et autres, et lors de la compilation en JavaScript, il compile en conséquence du code de bibliothèque supplémentaire dans le code JavaScript résultant. Cela pèse actuellement plus qu'une bibliothèque telle que jQuery. Cela va forcément changer à mesure que l'équipe Dart peaufine la compilation, mais c'est en fait une bibliothèque jQuery-ish qui est nécessaire pour normaliser les différences entre les navigateurs, ainsi que du "sucre" supplémentaire pour rendre JavaScript plus honnête quant à sa nature dynamique. Ce type de poids supplémentaire n'est pas terrible, mais si vous construisez un widget d'interface utilisateur simple pour un site mobile, alors peut-être que Dart n'est pas le meilleur choix. Il brillera davantage avec les applications Web à plus grande échelle qui reposent sur un code JavaScript important..

Enfin, Dart est actuellement en développement. C’est excitant, et ce n’est pas un problème avec Dart en soi, mais si vous commencez à développer dans Dart maintenant, il y a une chance que l’API change, ou que les choses ne soient pas documentées complètement ou correctement, et la quantité de Les informations sur le Web sont inférieures au montant que vous pouvez trouver sur jQuery, par exemple. C'est à la pointe, et ce n'est peut-être pas pour vous, ni pour un projet donné.


Ce qui est génial à propos de Dart?

En même temps, c'est à la pointe de la technologie et c'est génial. Investir dans un peu de temps maintenant pour apprendre Dart pourrait se mettre dans un endroit agréable une fois que Dart sera plus stable. Si vous vous impliquez maintenant, vous avez même la possibilité de contribuer à façonner le langage. La liste de diffusion Dart sur Google Groupes contient souvent des allers et retours entre des personnes suggérant des idées et des ingénieurs de Google répondant à cette idée. Les idées fournies par les utilisateurs sont souvent considérées et il n'est pas rare de les voir incorporées.

J'ai déjà discuté des avantages d'un langage typé et orienté objet, et il va sans dire que ces traits sont également impressionnants..

Dart rappelle également assez Java, et cela devrait être génial si vous êtes plus un programmeur Java (ou C) qui cherche à se lancer dans le développement Web. Dart devrait fournir une meilleure transition dans ce monde que JavaScript.

Enfin, Dart n’est pas seulement un concurrent de JavaScript. C'est un tout nouveau langage et il est sur le point de fonctionner n'importe où. Il est utilisé côté serveur, à la Node.js, et promet d'être un autre outil répandu, comme Ruby ou Python..


Si vous vous souciez?

Il s’agit bien entendu d’une question difficile, et j’inviterais une Inquisition basée sur des commentaires, quelle que soit ma réponse. Mais réponds je.

Vous vous en soucierez probablement déjà, ou pas du tout, selon le degré de gêne que vous causent les problèmes de Dart ou d'excitation pour les avantages de Dart. Les deux étapes précédentes vous donnent une foule d’informations qui vous mèneront à votre propre conclusion.

Si vous êtes le genre de personne dont l’idée de programmer JavaScript est de rechercher sur le Web des plug-ins jQuery et de les installer sur votre page HTML, alors Dart ne va probablement pas vous donner beaucoup d’excitation. N'hésitez pas à ne pas vous en soucier. Et laissez-moi vous épargner beaucoup de temps et révéler que je base le reste de ce tutoriel sur l'hypothèse que le lecteur est intéressé, au moins suffisamment à explorer.

Toutefois, si vous êtes du genre à développer front-end, qui croit réellement au JavaScript orienté objet, tente de générer des erreurs en capturant vos scripts et a tendance à écrire plus de JavaScript que de HTML, alors un plouc Quelqu'un qui se soucie de la bonne programmation, indépendamment de la langue ou de la plate-forme, auquel cas vous pouvez vous soucier de Dart. Vous vous devez au moins de l'essayer.

À mon avis, Dart est très prometteur et occupe une place de choix dans la programmation Web. Mais je ne pense pas que cela va remplacer ou même vraiment compenser la domination de JavaScript sur les scripts sur les pages HTML. Je pense qu’il trouvera une place avec les applications Web les plus sérieuses, mais à moins que les constructeurs de navigateurs (autres que Google) n’acceptent de créer une VM Dart - ce qui me semble peu probable - le destin de Dart est relégué aux expériences Chrome applications web à l'échelle. Les tâches de script simples, comme une pointe d'interactivité sur une page par ailleurs statique, ne tireront pas grand profit de Dart.

Cela dit, j'estime qu'il vaut toujours la peine d'apprendre de nouvelles choses. Vous pouvez apprendre que la nouvelle chose ne vaut pas votre temps, mais vous devriez formuler cette opinion par vous-même, à travers l'expérience. Nous vous fournirons de l'expérience dans ce didacticiel. Si vous vous sentez aventureux, préparez-vous à Dart.


Conclusion

Espérons que cette brève discussion sur Dart a suscité votre intérêt pour ce nouveau langage qui risque de ne pas envahir le Web. Si vous souhaitez l'essayer, jetez un coup d'œil à mon tutoriel exclusif à Facebook qui vous mettra la main à la pâte avec un simple projet Dart.

(Si vous n'êtes pas sur Facebook, ne vous inquiétez pas. Le didacticiel sera éventuellement sur le site principal Activetuts +, et nous avons beaucoup plus de contenu Dart en attente.)

Merci d'avoir lu! Partagez vos opinions sur Dart dans les commentaires.