117 votes

Google Go vs. Google Dart

Les deux sites Dart y Allez sur sont des langages qui sont pris en charge/développés par Google et qui peuvent être utilisés pour le développement web.

Quelles sont les principales différences entre eux ? Et pourquoi Google ne se concentre-t-il pas sur une seule d'entre elles ?

188voto

David Titarenco Points 17148

Dart est un langage de programmation web, Go ne l'est pas. I a contribué Go dans ses premières phases, et l'objectif a toujours semblé être de créer un langage de programmation concurrent polyvalent et convivial avec quelques paradigmes intéressants (par exemple, les tuyaux, la collecte des déchets). Go n'a jamais été conçu pour être un langage de programmation purement web. Il est également compilé en langage machine (contrairement à Dart).

En fait, il y avait des problèmes importants avec les liaisons HTTP jusqu'au début de l'année dernière, lorsque l'équipe Go a réorganisé une partie de la base de code.

De golang :

Le langage de programmation Go est un projet open source visant à rendre les programmeurs plus productifs. Go est expressif, concis, propre et efficace. efficace. Ses mécanismes de concurrence permettent d'écrire facilement des programmes programmes qui tirent le meilleur parti des machines multicœurs et en réseau. nouveau système de types permet de construire des programmes flexibles et modulaires. Go se compile rapidement en code machine tout en bénéficiant de la commodité de la collecte de déchets et de la puissance de la réflexion en cours d'exécution. et la puissance de la réflexion à l'exécution. C'est un langage rapide, rapide, typée statiquement et compilée, qui ressemble à un langage interprété dynamique et interprété.

Desde el Blog Googlecode :

Aujourd'hui, nous vous présentons une avant-première de Dart, un logiciel de gestion des classes. optionnellement typé pour la création d'applications web. Les objectifs de conception de Dart sont les suivants :

  • Créer un langage structuré mais flexible pour la programmation web.
  • Faire en sorte que Dart soit familier et naturel pour les programmeurs et donc facile à apprendre.
  • Veiller à ce que Dart offre des performances élevées sur tous les navigateurs web modernes et dans tous les environnements, qu'il s'agisse de petits appareils portatifs ou d'ordinateurs de bureau. l'exécution côté serveur.

En bref,

  • Dart aimerait concurrencer JavaScript, et Go aimerait concurrencer des choses comme Erlang et/ou D.
  • Dart VM lit le code source (et compile en interne le code Dart en code machine), Go est compilé.
  • Dart est plus un langage de script, Go est un "vrai" langage de programmation.

Google se concentre sur les deux car ils font deux choses très différentes.


Comme cette réponse a recueilli un certain nombre de votes négatifs, je pense qu'une mise à jour obligatoire est nécessaire :) Les informations ci-dessus sont historiquement correctes, mais les langues ont depuis pris des mesures divergentes de ce que j'ai décrit ci-dessus. Comme je fais actuellement office de réviseur technique pour un livre sur Dart ( Fléchette pour les débutants absolus -- (à paraître en juillet), je me sens également un peu plus qualifié en ce qui concerne Dart et ses rouages.

Voici donc quelques nouvelles de Go :

  • Avec la sortie de 1.1 Go est plus ou moins "mature" -- Dart est également postérieur à la version 1.0 (1.7 au 27 octobre 2014).
  • 1.1 augmente considérablement les performances
  • Go inclut également plusieurs outils d'analyse statique (vérificateurs de conditions de course, etc.).
  • La chaîne d'outils Go 1.1 ajoute un support expérimental pour les plateformes freebsd/arm, netbsd/386, netbsd/amd64, netbsd/arm, openbsd/386 et openbsd/amd64.

Et qu'en est-il de Dart ?

  • DartVM est la machine virtuelle Dart qui exécute le code Dart beaucoup plus rapidement que son homologue JS.
  • Gardez à l'esprit que Dart VM va très probablement no être inclus dans tout sauf Google Chrome et Dartium (si Dart VM n'est pas disponible, un transpilateur JS est utilisé)
  • Cependant, l'équipe Dart est en train de s'attaquer aux différentes versions de Node.js, ce qui signifie que nous commencerons à voir des back-ends Dart s'exécuter sur Dart VM.
  • Il y a une tendance à élever la barre programmatique dans Dart ; cela signifie que nous verrons de plus en plus de développement de miroirs, de mixins et d'isolats.

Nous constatons donc que Go a tendance à s'orienter davantage vers les systèmes, tandis que Dart s'oriente davantage vers les serveurs et les clients.

37voto

Luis Gonzalez Points 321

Dart n'est pas seulement un remplacement de javascript dans le navigateur. Il vise également à fonctionner du côté serveur, de la même manière que node.js est actuellement utilisé pour javascript. Le but de Dart est donc de devenir le langage du web, fonctionnant dans le navigateur, dans le serveur, dans votre smartphone ou dans votre tablette. Il fonctionnera dans sa propre machine virtuelle, bien qu'il puisse être compilé en JavaScript pour être compatible avec les navigateurs d'autres fournisseurs.

Selon ses auteurs, il sera développé dans un souci de performance. Il vise à corriger toutes les failles de javascript.

Go, en revanche, est un langage de systèmes. On pourrait le voir plutôt comme un remplacement de c ou c++.

32voto

Atom Points 8739

Certaines de ces différences sont :

  • Go a commencé comme un "langage de programmation de systèmes" (outils, serveurs HTTP, ...), Dart a commencé comme un remplacement de Javascript dans le navigateur.

  • Go dérive de C, Dart dérive de Smalltalk et Java

  • Go a un système de type plus strict que Dart.

  • En supposant un compilateur optimisant, les programmes Go sont plus rapides que les programmes Dart.

  • Les entiers de Go ont une précision fixe (8, 16, 32 ou 64 bits), les entiers de Dart ont une précision arbitraire.

  • Valeurs de départ simplicité et orthogonalité plus que Dart

  • Les goroutines des programmes Go communiquent via la mémoire partagée ou via le passage de messages, les isolats des programmes Dart ne communiquent que via le passage de messages.

  • Une idée centrale dans le développement du langage Dart est que "le web est le nouveau système d'exploitation".

  • Go est (actuellement) compilé statiquement, les programmes Dart exécutés dans le navigateur seront compilés à la volée.

  • Dart a des classes avec héritage, les auteurs de Go sont contre l'héritage.

  • Le système de types de Go est principalement basé sur le typage statique, tandis que le système de types de Dart est principalement basé sur le typage dynamique.

  • Go s'interface avec le système d'exploitation, les bibliothèques C et l'appengine de Google, Dart s'interface avec le navigateur web et il serait difficile d'interfacer Dart avec les bibliothèques C.


Question : Pourquoi Google ne se concentre-t-il pas sur un seul d'entre eux ?

L'une des raisons est qu'il existe au sein de Google des groupes de personnes ayant des mentalités et des objectifs différents.

La distance entre Dart et Javascript est plus petite que la distance entre Go et Javascript. Par conséquent, les développeurs web sont plus susceptibles d'accepter Dart (et non Go) comme remplacement de Javascript.

19voto

Jimmy Zelinskie Points 472

Aujourd'hui, le Go est davantage un langage à usage général semblable au C, mais avec une syntaxe super propre et des primitives de concurrence CSP. Go est vraiment bon pour être le backend d'une application web. Google l'a développé en raison du manque de maintenabilité de C++/Java pour les backends de Google. Dart est destiné à fonctionner dans un navigateur afin de remplacer quelque chose comme ECMAScript en raison de son manque de maintenabilité. Dart tente d'introduire dans le navigateur une structure de programmation plus familière, basée sur des classes, plutôt que l'héritage protypique d'ECMAScript, qui peut poser des problèmes. Les raisons pour lesquelles Google a soutenu les deux projets semblent être similaires, mais il s'agit de deux solutions à deux problèmes différents.

Go a quelques années et a été développé par de véritables hackers Unix de la vieille école des Bell Labs (Rob Pike et Ken Thompson). Il est certain que la communauté open source lui consacre une part importante de son développement. Je ne connais pas aussi bien Dart, mais je pense qu'il est développé beaucoup plus à l'intérieur de Google. Dart en est encore à un stade de développement si précoce qu'il n'est actuellement supporté par aucun des principaux navigateurs. Les deux langages ont des objectifs et des philosophies de conception complètement différents, car ils visent tous deux des publics et des cas d'utilisation complètement différents.

17voto

hoogs Points 166

J'ai acheté Go il y a six mois et j'y ai rédigé des paquets importants. J'utilisais Java depuis quelques années et j'ai commencé à le détester. Plus précisément, le processus de construction en ligne de commande pour Java est pénible (c'est-à-dire ant et les autres solutions), l'effacement des types de génériques me rendait fou et j'en avais assez de tous les textes passe-partout liés aux fichiers. La programmation devenait un travail difficile et pas amusant.

Go a changé ça pour moi. La clé est ce qu'il enlève. En simplifiant les choses, tout en donnant un accès facile aux informations de type, il vous donne en fait plus de pouvoir. La concurrence simple basée sur les canaux est fantastique. Je me languissais de la simplicité des structs, l'unité de données de base en C. Go remet les structs au centre de la scène. La seule ombre au tableau est la gestion des erreurs, mais ce n'est probablement que moi. Go vous encourage à traiter les erreurs tôt avec des valeurs de retour multiples, ce qui est probablement pour le mieux. Mais j'espère qu'un jour nous pourrons trouver un moyen de faire cela et de rendre les API plus fluides.

Je veux intégrer ce travail avec une interface web et j'ai commencé à chercher en javascript et websockets. Mais je trouve que JavaScript est une abomination et je n'ai pas pu me donner la peine de parcourir toutes les tentatives de Tom, Dick et Harry pour corriger ses nombreux défauts. L'ironie de la chose, c'est que j'ai pensé à dégoogliser un peu ma vie, mais lorsque j'ai consulté Dart, il ne m'a fallu que quelques heures pour décider d'y aller à fond. La grande surprise pour moi a été que, à mon avis, Dart est en fait un langage plus complexe que Go à bien des égards. Dart n'est pas tant un remplacement de javascript qu'un remplacement de java. La syntaxe et les structures sont similaires, la VM de Dart a des performances similaires à celles de la VM de Java. Je trouve le typage optionnel bizarre, mais je vais continuer à avancer avec un esprit ouvert.

Même si je n'aime pas me blottir sous l'aile du Googlenaut, l'une des principales caractéristiques de Go et Dart est qu'ils sont livrés avec des batteries et que l'expérience de construction est dépouillée et rapide. Il existe des éditeurs graphiques si vous le souhaitez, mais ces langages font de la ligne de commande un citoyen de première classe ! Malheureusement, Dart doit encore travailler avec le javascript hérité, mais Go, avec une feuille blanche, est tout simplement un plaisir à apprendre et à construire.

Le C/C++ sera toujours utile dans les situations embarquées, mais le Go est un langage qui, dans la plupart des utilisations du C/C++, a des performances similaires, mais est largement plus facile/rapide à développer en solo ou en collaboration, beaucoup plus proche de Python par exemple (les pythonistes peuvent désormais avoir le beurre et l'argent du beurre). L'humain est l'endroit où la plupart de la valeur est créée, généralement. Je ne saurais trop insister sur la valeur d'une compilation rapide dans le cycle de développement.

Ensemble, pour moi, Go et Dart sont des tueurs de Java. Les gens veulent toujours une expérience web plus rapide et le jour où DartVM sera livré avec Chromium sera un grand jour. gros problème . Cela déclenchera une migration vers Dart, tant du côté serveur que du côté client, et le javascript commencera son long déclin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X