Ich habe die Seite sehr kurz durchgesehen und bin neugierig geworden. Gibt es irgendwelche Vorteile bei der Verwendung von Dart? Ist es nur ein Ersatz für JavaScript?
Es sieht aus wie einfacher Java. Da die Sprache bei der Arbeit ziemlich viel C # schreibt, fühlt sie sich sehr ähnlich an, wie ich es gewohnt bin, sodass das Erlernen der Syntax ein Kinderspiel ist. Hat jemand irgendwelche Meinungen oder Erfahrungen mit der Sprache?
(Im Vergleich zu CoffeeScript (= ich mache keine Ruby-Syntax) kommt mir die Syntax besser bekannt vor).
javascript
dart
marko
quelle
quelle
Is there any advantages of using Dart?
bedeutet Vorteil gegenüber was und wie gemessen ? Es gibt eine Reihe von Sprachen, die mit JavaScript kompiliert werden können. Die meisten von ihnen machen etwas viel besser als Dart. Einige machen die meisten Dinge besser als Dart. Wenn Sie beispielsweise C # ausführen, könnte ScriptSharp für Sie interessant sein. Unter all den Sprachen, die sich mit JavaScript kompilieren lassen, wäre dies bei weitem nicht meine erste Wahl, aber für Sie wäre es ein sehr einfacher Übergang, der möglicherweise sogar die problemlose Portierung von vorhandenem Code ermöglicht.Antworten:
Danke für deine Frage! Voller Haftungsausschluss, ich arbeite im Dart-Team.
Der wahrscheinlich beste Vorteil, den Dart heute hat, ist, dass er C # -, Java-, C ++ - und den meisten JavaScript-Entwicklern vertraut ist. Viele Entwickler haben eine Reihe von Erwartungen an ihre Sprache (klassenbasiertes OO, lexikalischer Bereich, vertraute Syntax) und ihre Tools (Code-Vervollständigung, Refactoring, Code-Navigation, Debugging), die Dart erfüllen und übertreffen möchte.
Hier sind einige Dinge, die mir an der Sprache gefallen:
Optionale statische Typen. Wenn ich Prototypen erstelle oder nur kleine Skripte schreibe, verwende ich nicht viele statische Typen. Ich brauche sie einfach nicht und ich möchte mich nicht mit der Zeremonie festsetzen. Einige dieser Skripte entwickeln sich jedoch zu größeren Programmen. Da die Skripte skaliert werden, möchte ich eher Klassen und statische Typanmerkungen.
Unschuldig bis zum Beweis der Schuld. Dart ist bemüht, die Situationen zu minimieren, die zu einem Fehler beim Kompilieren führen. Viele Bedingungen in Dart sind Warnungen, die Ihr Programm nicht daran hindern, ausgeführt zu werden. Warum? Im Einklang mit der Mode der Webentwicklung ist es unerlässlich, den Entwicklern die Möglichkeit zu geben, ein wenig Code auszuprobieren, erneut zu laden und zu sehen, was passiert. Der Entwickler sollte nicht erst nachweisen müssen, dass das gesamte Programm korrekt ist, bevor er nur eine Ecke des Codes testet.
Lexikalischer Umfang. Das ist großartig, wenn Sie nicht daran gewöhnt sind. Einfach ausgedrückt, wird die Sichtbarkeit von Variablen und sogar diese durch die Programmstruktur definiert. Dies eliminiert eine Klasse von Rätseln in der traditionellen Webprogrammierung. Es ist nicht erforderlich, Funktionen neu zu binden, um dies an das zu halten , was Sie denken oder erwarten.
Echte Klassen, die in die Sprache eingebrannt sind. Es ist klar, dass die meisten Entwickler in Klassen arbeiten möchten, da die meisten Webentwicklungs-Frameworks eine Lösung bieten. Eine "Klasse" aus Framework A ist jedoch in der herkömmlichen Webentwicklung nicht mit Framework B kompatibel. Dart verwendet natürlich Klassen.
Funktionen auf oberster Ebene. Ein schmerzlicher Teil von Java ist, dass alles in eine Klasse eingeteilt werden muss. Dies ist etwas künstlich, insbesondere wenn Sie einige Dienstprogrammfunktionen definieren möchten. In Dart können Sie Funktionen auf oberster Ebene außerhalb jeder Klasse definieren. Dadurch fühlt sich die Bibliothekszusammensetzung natürlicher an.
Klassen haben implizite Schnittstellen. Der Wegfall expliziter Schnittstellen vereinfacht die Sprache. IDuck muss nicht mehr überall definiert werden. Jetzt brauchen Sie nur noch eine Klasse Duck. Da jede Klasse eine implizite Schnittstelle hat, können Sie eine erstellen
MockDuck implements Duck
Benannte Konstruktoren. Sie können Konstruktornamen vergeben, was die Lesbarkeit erheblich verbessert. Beispielsweise:
var duck = new Duck.fromJson(someJsonString)
Fabrikbauer. Das Fabrikmuster ist ziemlich verbreitet und es ist schön zu sehen, dass es in die Sprache eingebrannt ist. Ein Factory-Konstruktor kann einen Singleton, ein Objekt aus einem Cache oder ein Objekt eines Untertyps zurückgeben.
Isolate. Vorbei sind die Zeiten, in denen sich Threads den veränderlichen Status teilen (eine fehleranfällige Technik). Ein Dart-Isolat ist ein isolierter Speicherheap, der in einem separaten Prozess oder Thread ausgeführt werden kann. Isolate kommunizieren, indem sie Nachrichten über Ports senden. Isolate arbeiten in der Dart VM und können in HTML5-Apps für Web-Worker kompiliert werden.
Dart kompiliert zu JavaScript. Dies ist von entscheidender Bedeutung, da JavaScript die Verkehrssprache des Webs ist. Dart-Apps sollten im modernen Web laufen.
Starkes Werkzeug. Das Dart-Projekt enthält auch einen Editor. Hier finden Sie Code-Vervollständigung, Refactoring, Schnellkorrekturen, Code-Navigation, Debugging und mehr. Außerdem hat IntelliJ ein Dart-Plugin.
Bibliotheken. Sie können Dart-Code in Bibliotheken organisieren, um den Namensraum und die Wiederverwendbarkeit zu vereinfachen. Ihr Code kann eine Bibliothek importieren und Bibliotheken können erneut exportiert werden.
String-Interpolation. Dies ist nur eine nette Funktion, die es einfach macht, eine Zeichenfolge zu erstellen:
var msg = "Hello $friend!";
noSuchMethod Dart ist eine dynamische Sprache, mit der Sie beliebige Methodenaufrufe bearbeiten können
noSuchMethod()
.Generika. Wenn Sie "Dies ist eine Liste von Äpfeln" sagen können, erhalten Ihre Werkzeuge viel mehr Informationen, um Ihnen zu helfen und mögliche Fehler frühzeitig zu erkennen. Zum Glück sind Darts Generika einfacher als das, was Sie wahrscheinlich gewohnt sind.
Bedienerüberladung. Dartklassen können Verhalten für Operatoren wie
+
oder definieren-
. Zum Beispiel könnten Sie Code wie schreibennew Point(1,1) + new Point(2,2)
.Abgesehen davon gibt es noch viel mehr JavaScript-Bibliotheken.
Persönlich glaube ich, dass im Web Platz für viele Sprachen ist. Wenn die App fantastisch ist und in den meisten modernen Browsern ausgeführt wird, ist es mir egal, in welcher Sprache sie geschrieben ist. Solange Sie, der Entwickler, glücklich sind, produktiv arbeiten und im Web starten, ist das alles Worauf es ankommt! :)
quelle
Das ist ein Punkt bei Dart. Javascript wird als unangenehme Sprache mit wenigen allgemeinen Redewendungen angesehen. In einer Sprache wie Java gibt es oft einen natürlichen Weg, um ein Problem anzugehen. Wenn Sie beispielsweise ein Inventar der Tabelle führen, erstellen Sie in Java oder C # eine Klassentabelle.
Javascript hat keine Klassen, vielleicht möchten Sie Prototypen verwenden, aber sie fühlen sich umständlich an und bieten keine so starken Struktur- und Kapselungswerkzeuge. (Zumindest nicht ohne Stunts.) Vererbung, Komposition usw. sind mit Javascript-Prototypen umständlich. Aus diesem Grund verwenden die meisten Menschen einfache Hash-Maps, um Daten zu speichern. Oder sie verwenden Bibliotheken von Drittanbietern wie Prototypen, die Ihnen eine klassenähnliche Erfahrung bieten.
Bequemlichkeit ist also eine Sache, Struktur die andere. Javascript lässt sich einfach nicht gut skalieren, da es keine Standardmethode zum Strukturieren umfangreicher Apps gibt. Derzeit werden solche Drittanbieter-Bibliotheken jedoch immer beliebter. (Wie backbone.js)
Dart ist etwas, um das zu lösen. Es ist dazu da, Ihnen die strukturelle Bequemlichkeit von Java zu bieten, und darüber hinaus verfügt es nicht über all diese umständlichen JS-Funktionen. (Die meisten davon betrafen schwaches Tippen.)
Die Antwort lautet also ja: Klassen, Vererbung, ...: "traditionelles OOP". (Die meisten realen JS-Webanwendungen verwenden den Callback-basierten Ansatz von jQuery als Hauptstruktur.) Und es gibt eine lose Form der statischen Typisierung, dies ist jedoch nicht das Hauptverkaufsargument.
Übrigens: Vielleicht möchten Sie dieses "interne" Google-Mailing vom 2010: Future of Javascript lesen
quelle
Für mich gibt es die Möglichkeit, meinen Code mit Umfang und Klassen besser als JavaScript zu strukturieren.
Es ähnelt Java und JavaScript und mit dem Dart-Editor hatte ich fast keine Anpassung. Ich fing sofort an zu programmieren.
var ws = new [Moz]WebSocket
Es ist ärgerlich, für verschiedene Browser sorgen zu müssen. Dart kompiliert zu JavaScript-Code, der mit gängigen Browsern kompatibel ist.Meine Herausforderung besteht hauptsächlich in der Anbindung an JavaScript-Code. Ich finde irgendwie Wege, aber es wäre besser, wenn es Teil von Dart ist.
quelle
Der Java / C # -Ansatz ist definitiv voreingenommen, wenn es darum geht, JS seit Beginn von Web 2.0 auszuschalten. Dies liegt an einer künstlichen (oder sehr realen und notwendigen) Unterscheidung zwischen clientseitigen und serverseitigen Sprachen. Ich denke, dies ist so, dass die serverseitige Sprache die Kontrolle über die Kernproblembereiche von Web-Apps behalten und weniger schwerwiegenden Code (UI-Code) vom Geschäftscode (serverseitig) abgrenzen kann. Ich denke auch, dass Java gerne ein serverseitiger Kernel bleibt, da es den GUI-Krieg mit Applets hauptsächlich aufgrund von Flash und HTML 5 verloren hat. Jetzt haben Sie RedTamarin, ein NodeJS-ähnliches AS3-Projekt, das auf eine pluralistisch gemischte Zukunft von einheitlichen Front- und Backend-Paradigmen anspielt .
quelle